From python-checkins at python.org Fri Feb 1 00:08:24 2008 From: python-checkins at python.org (christian.heimes) Date: Fri, 1 Feb 2008 00:08:24 +0100 (CET) Subject: [Python-checkins] r60484 - in python/trunk: Include/pyport.h Misc/NEWS Modules/posixmodule.c configure configure.in pyconfig.h.in Message-ID: <20080131230824.522651E4012@bag.python.org> Author: christian.heimes Date: Fri Feb 1 00:08:23 2008 New Revision: 60484 Modified: python/trunk/Include/pyport.h python/trunk/Misc/NEWS python/trunk/Modules/posixmodule.c python/trunk/configure python/trunk/configure.in python/trunk/pyconfig.h.in Log: Fixed bug #1983: Return from fork() is pid_t, not int Modified: python/trunk/Include/pyport.h ============================================================================== --- python/trunk/Include/pyport.h (original) +++ python/trunk/Include/pyport.h Fri Feb 1 00:08:23 2008 @@ -122,6 +122,10 @@ /* Smallest negative value of type Py_ssize_t. */ #define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1) +#if SIZEOF_PID_T > SIZEOF_LONG +# error "Python doesn't support sizeof(pid_t) > sizeof(long)" +#endif + /* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf * format to convert an argument with the width of a size_t or Py_ssize_t. * C99 introduced "z" for this purpose, but not all platforms support that; @@ -573,7 +577,7 @@ functions, even though they are included in libutil. */ #include extern int openpty(int *, int *, char *, struct termios *, struct winsize *); -extern int forkpty(int *, char *, struct termios *, struct winsize *); +extern pid_t forkpty(int *, char *, struct termios *, struct winsize *); #endif /* !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) */ #endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */ Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 1 00:08:23 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Bug #1983: Fixed return type of fork(), fork1() and forkpty() calls. + Python expected the return type int but the fork familie returns pi_t. + - Issue #1678380: Fix a bug that identifies 0j and -0j when they appear in the same code unit. @@ -1386,6 +1389,9 @@ Build ----- +- Bug #1983: Added a check to pyport to verify that sizeof(pid_t) is + smaller or equal sizeof(long). + - Bug #1234: Fixed semaphore errors on AIX 5.2 - Issue #1726: Remove Python/atof.c from PCBuild/pythoncore.vcproj Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Fri Feb 1 00:08:23 2008 @@ -3575,11 +3575,11 @@ static PyObject * posix_fork1(PyObject *self, PyObject *noargs) { - int pid = fork1(); + pid_t pid = fork1(); if (pid == -1) return posix_error(); PyOS_AfterFork(); - return PyInt_FromLong((long)pid); + return PyInt_FromLong(pid); } #endif @@ -3593,12 +3593,12 @@ static PyObject * posix_fork(PyObject *self, PyObject *noargs) { - int pid = fork(); + pid_t pid = fork(); if (pid == -1) return posix_error(); if (pid == 0) PyOS_AfterFork(); - return PyInt_FromLong((long)pid); + return PyInt_FromLong(pid); } #endif @@ -3700,14 +3700,15 @@ static PyObject * posix_forkpty(PyObject *self, PyObject *noargs) { - int master_fd = -1, pid; + int master_fd = -1; + pid_t pid; pid = forkpty(&master_fd, NULL, NULL, NULL); if (pid == -1) return posix_error(); if (pid == 0) PyOS_AfterFork(); - return Py_BuildValue("(ii)", pid, master_fd); + return Py_BuildValue("(li)", pid, master_fd); } #endif Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Fri Feb 1 00:08:23 2008 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 60141 . +# From configure.in Revision: 60464 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -10160,6 +10160,411 @@ _ACEOF +{ echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef pid_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_pid_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of pid_t" >&5 +echo $ECHO_N "checking size of pid_t... $ECHO_C" >&6; } +if test "${ac_cv_sizeof_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_pid_t=$ac_lo;; +'') if test "$ac_cv_type_pid_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (pid_t) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (pid_t) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_pid_t=0 + fi ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef pid_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_pid_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_pid_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (pid_t) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (pid_t) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_pid_t=0 + fi +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_pid_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_pid_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_PID_T $ac_cv_sizeof_pid_t +_ACEOF + + { echo "$as_me:$LINENO: checking for long long support" >&5 echo $ECHO_N "checking for long long support... $ECHO_C" >&6; } Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Fri Feb 1 00:08:23 2008 @@ -1202,7 +1202,7 @@ AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_TYPE_UID_T -AC_CHECK_TYPE(ssize_t, +AC_CHECK_TYPE(ssize_t, AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,) # Sizes of various common basic types @@ -1215,6 +1215,7 @@ AC_CHECK_SIZEOF(double, 8) AC_CHECK_SIZEOF(fpos_t, 4) AC_CHECK_SIZEOF(size_t, 4) +AC_CHECK_SIZEOF(pid_t, 4) AC_MSG_CHECKING(for long long support) have_long_long=no Modified: python/trunk/pyconfig.h.in ============================================================================== --- python/trunk/pyconfig.h.in (original) +++ python/trunk/pyconfig.h.in Fri Feb 1 00:08:23 2008 @@ -869,6 +869,9 @@ /* The number of bytes in an off_t. */ #undef SIZEOF_OFF_T +/* The size of `pid_t', as computed by sizeof. */ +#undef SIZEOF_PID_T + /* The number of bytes in a pthread_t. */ #undef SIZEOF_PTHREAD_T From guido at python.org Fri Feb 1 00:58:41 2008 From: guido at python.org (Guido van Rossum) Date: Thu, 31 Jan 2008 15:58:41 -0800 Subject: [Python-checkins] r60483 - in python/trunk: Lib/test/test_complex.py Misc/NEWS Python/compile.c In-Reply-To: <20080131221738.309021E4012@bag.python.org> References: <20080131221738.309021E4012@bag.python.org> Message-ID: Perhaps worth backporting to 2.5.2... On Jan 31, 2008 2:17 PM, mark.dickinson wrote: > Author: mark.dickinson > Date: Thu Jan 31 23:17:37 2008 > New Revision: 60483 > > Modified: > python/trunk/Lib/test/test_complex.py > python/trunk/Misc/NEWS > python/trunk/Python/compile.c > Log: > Issue #1678380. Fix a bug that identifies 0j and -0j when they appear > in the same code unit. The fix is essentially the same as the fix for a > previous bug identifying 0. and -0. > > > > Modified: python/trunk/Lib/test/test_complex.py > ============================================================================== > --- python/trunk/Lib/test/test_complex.py (original) > +++ python/trunk/Lib/test/test_complex.py Thu Jan 31 23:17:37 2008 > @@ -359,6 +359,13 @@ > except (OSError, IOError): > pass > > + if float.__getformat__("double").startswith("IEEE"): > + def test_plus_minus_0j(self): > + # test that -0j and 0j literals are not identified > + z1, z2 = 0j, -0j > + self.assertEquals(atan2(z1.imag, -1.), atan2(0., -1.)) > + self.assertEquals(atan2(z2.imag, -1.), atan2(-0., -1.)) > + > def test_main(): > test_support.run_unittest(ComplexTest) > > > Modified: python/trunk/Misc/NEWS > ============================================================================== > --- python/trunk/Misc/NEWS (original) > +++ python/trunk/Misc/NEWS Thu Jan 31 23:17:37 2008 > @@ -12,6 +12,9 @@ > Core and builtins > ----------------- > > +- Issue #1678380: Fix a bug that identifies 0j and -0j when they appear > + in the same code unit. > + > - Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak > detection > > > Modified: python/trunk/Python/compile.c > ============================================================================== > --- python/trunk/Python/compile.c (original) > +++ python/trunk/Python/compile.c Thu Jan 31 23:17:37 2008 > @@ -907,24 +907,59 @@ > { > PyObject *t, *v; > Py_ssize_t arg; > + unsigned char *p, *q; > + Py_complex z; > + double d; > + int real_part_zero, imag_part_zero; > > /* necessary to make sure types aren't coerced (e.g., int and long) */ > /* _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms */ > if (PyFloat_Check(o)) { > - double d = PyFloat_AS_DOUBLE(o); > - unsigned char* p = (unsigned char*) &d; > - /* all we need is to make the tuple different in either the 0.0 > - * or -0.0 case from all others, just to avoid the "coercion". > - */ > - if (*p==0 && p[sizeof(double)-1]==0) > - t = PyTuple_Pack(3, o, o->ob_type, Py_None); > - else > - t = PyTuple_Pack(2, o, o->ob_type); > - } else { > - t = PyTuple_Pack(2, o, o->ob_type); > + d = PyFloat_AS_DOUBLE(o); > + p = (unsigned char*) &d; > + /* all we need is to make the tuple different in either the 0.0 > + * or -0.0 case from all others, just to avoid the "coercion". > + */ > + if (*p==0 && p[sizeof(double)-1]==0) > + t = PyTuple_Pack(3, o, o->ob_type, Py_None); > + else > + t = PyTuple_Pack(2, o, o->ob_type); > + } > + else if (PyComplex_Check(o)) { > + /* complex case is even messier: we need to make complex(x, > + 0.) different from complex(x, -0.) and complex(0., y) > + different from complex(-0., y), for any x and y. In > + particular, all four complex zeros should be > + distinguished.*/ > + z = PyComplex_AsCComplex(o); > + p = (unsigned char*) &(z.real); > + q = (unsigned char*) &(z.imag); > + /* all that matters here is that on IEEE platforms > + real_part_zero will be true if z.real == 0., and false if > + z.real == -0. In fact, real_part_zero will also be true > + for some other rarely occurring nonzero floats, but this > + doesn't matter. Similar comments apply to > + imag_part_zero. */ > + real_part_zero = *p==0 && p[sizeof(double)-1]==0; > + imag_part_zero = *q==0 && q[sizeof(double)-1]==0; > + if (real_part_zero && imag_part_zero) { > + t = PyTuple_Pack(4, o, o->ob_type, Py_True, Py_True); > + } > + else if (real_part_zero && !imag_part_zero) { > + t = PyTuple_Pack(4, o, o->ob_type, Py_True, Py_False); > + } > + else if (!real_part_zero && imag_part_zero) { > + t = PyTuple_Pack(4, o, o->ob_type, Py_False, Py_True); > + } > + else { > + t = PyTuple_Pack(2, o, o->ob_type); > + } > + } > + else { > + t = PyTuple_Pack(2, o, o->ob_type); > } > if (t == NULL) > - return -1; > + return -1; > > v = PyDict_GetItem(dict, t); > if (!v) { > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) From buildbot at python.org Fri Feb 1 01:43:53 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 00:43:53 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080201004353.8691C1E4012@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2449 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,mark.dickinson BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 01:54:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 00:54:46 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080201005446.B425B1E4012@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/508 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,mark.dickinson BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_smtplib ====================================================================== ERROR: testEXPN (test.test_smtplib.SMTPSimTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_smtplib.py", line 411, in testEXPN smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 237, in __init__ (code, msg) = self.connect(host, port) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 294, in connect (code, msg) = self.getreply() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 335, in getreply line = self.file.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) timeout: timed out sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 03:45:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 02:45:39 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 3.0 Message-ID: <20080201024539.EEDE91E4012@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%203.0/builds/34 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: bill.janssen BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 445, in run self._target(*self._args, **self._kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 88, in writerThread self._writerThread(*args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 277, in _writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/unittest.py", line 325, in failUnlessEqual raise self.failureException(msg or '%r != %r' % (first, second)) AssertionError: None != b'0002-0002-0002-0002-0002' Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 445, in run self._target(*self._args, **self._kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 88, in writerThread self._writerThread(*args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 277, in _writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/unittest.py", line 325, in failUnlessEqual raise self.failureException(msg or '%r != %r' % (first, second)) AssertionError: None != b'1001-1001-1001-1001-1001' Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/threading.py", line 445, in run self._target(*self._args, **self._kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 88, in writerThread self._writerThread(*args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 277, in _writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/unittest.py", line 325, in failUnlessEqual raise self.failureException(msg or '%r != %r' % (first, second)) AssertionError: None != b'2000-2000-2000-2000-2000' 2 tests failed: test_urllib2 test_urllib2net ====================================================================== ERROR: testURLread (test.test_urllib2net.URLTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 39, in testURLread f = _urlopen_with_retry("http://www.python.org/") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_bad_address (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 160, in test_bad_address urllib2.urlopen, "http://www.python.invalid./") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/unittest.py", line 311, in failUnlessRaises callableObj(*args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_basic (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 118, in test_basic open_url = _urlopen_with_retry("http://www.python.org/") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_geturl (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 142, in test_geturl open_url = _urlopen_with_retry(URL) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_info (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 129, in test_info open_url = _urlopen_with_retry("http://www.python.org/") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 200, in test_file self._test_urls(urls, self._extra_handlers(), urllib2.urlopen) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 188, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 212, in test_http self._test_urls(urls, self._extra_handlers()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_range (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 173, in test_range result = _urlopen_with_retry(req) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_close (test.test_urllib2net.CloseSocketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 91, in test_close response = _urlopen_with_retry("http://www.python.org/") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 319, in test_ftp_NoneNodefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 313, in test_ftp_NoneWithdefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 323, in test_ftp_Value u = _urlopen_with_retry(self.FTP_HOST, timeout=60) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 306, in test_ftp_basic u = _urlopen_with_retry(self.FTP_HOST) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 300, in test_http_NoneNodefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 290, in test_http_NoneWithdefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 296, in test_http_Value u = _urlopen_with_retry("http://www.python.org", timeout=120) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 283, in test_http_basic u = _urlopen_with_retry("http://www.python.org") File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 04:23:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 03:23:19 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20080201032320.3342A1E4012@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/473 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: bill.janssen BUILD FAILED: failed test Excerpt from the test logfile: 6 tests failed: test_anydbm test_bsddb test_bsddb3 test_mailbox test_shelve test_whichdb ====================================================================== ERROR: test_anydbm_access (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 90, in test_anydbm_access self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_creation (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 63, in test_anydbm_creation f = anydbm.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_keys (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 84, in test_anydbm_keys self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_modification (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 71, in test_anydbm_modification self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_read (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 78, in test_anydbm_read self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') Traceback (most recent call last): File "../lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 90, in test_main run_unittest(suite()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 53, in suite import bsddb.test.test_1413192 File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 38, in context = Context() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 26, in __init__ db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_consistent_factory (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 520, in test_consistent_factory msg2 = box.get_message(key) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\mailbox.py", line 313, in get_message subpath = self._lookup(key) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\mailbox.py", line 482, in _lookup raise KeyError('No message with key: %s' % key) KeyError: 'No message with key: 1201836086.M473999P1272Q201.buildbot' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 717, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 F' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 717, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 \x01' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 940, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo *** EOOH *** From: foo 0 1,, From: foo *** EOOH *** From: foo 1 1,, From: foo *** EOOH *** From: foo 2 1,, From: foo *** EOOH *** From: foo 3 ' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 757, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: 'From MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'From MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:45 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 724, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 741, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\nF' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\nF' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 757, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n' != '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Fri Feb 01 03:21:57 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 724, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 741, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\n\x01' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0\n\n\x01' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\n\x01' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\noriginal 0\n\n\x1f' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\nchanged 0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== ERROR: test_bool (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_ascii_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 46, in test_ascii_file_shelf s = shelve.open(self.fn, protocol=0) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_binary_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 54, in test_binary_file_shelf s = shelve.open(self.fn, protocol=1) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_proto2_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 62, in test_proto2_file_shelf s = shelve.open(self.fn, protocol=2) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_whichdb (test.test_whichdb.WhichDBTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_whichdb.py", line 32, in test_whichdb f = module.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 07:22:48 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Fri, 1 Feb 2008 07:22:48 +0100 (CET) Subject: [Python-checkins] r60486 - in python/trunk: Doc/library/functions.rst Doc/library/math.rst Lib/test/test_abstract_numbers.py Lib/test/test_builtin.py Lib/test/test_decimal.py Lib/test/test_math.py Lib/test/test_rational.py Modules/mathmodule.c Python/bltinmodule.c Message-ID: <20080201062248.65E2E1E4021@bag.python.org> Author: jeffrey.yasskin Date: Fri Feb 1 07:22:46 2008 New Revision: 60486 Modified: python/trunk/Doc/library/functions.rst python/trunk/Doc/library/math.rst python/trunk/Lib/test/test_abstract_numbers.py python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_decimal.py python/trunk/Lib/test/test_math.py python/trunk/Lib/test/test_rational.py python/trunk/Modules/mathmodule.c python/trunk/Python/bltinmodule.c Log: Move __builtins__.trunc() to math.trunc() per http://mail.python.org/pipermail/python-dev/2008-January/076626.html and issue 1965. Modified: python/trunk/Doc/library/functions.rst ============================================================================== --- python/trunk/Doc/library/functions.rst (original) +++ python/trunk/Doc/library/functions.rst Fri Feb 1 07:22:46 2008 @@ -1145,14 +1145,6 @@ .. versionadded:: 2.2 -.. function:: trunc(x) - - Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually - a long integer). Delegates to ``x.__trunc__()``. - - .. versionadded:: 2.6 - - .. function:: tuple([iterable]) Return a tuple whose items are the same and in the same order as *iterable*'s Modified: python/trunk/Doc/library/math.rst ============================================================================== --- python/trunk/Doc/library/math.rst (original) +++ python/trunk/Doc/library/math.rst Fri Feb 1 07:22:46 2008 @@ -103,6 +103,14 @@ Return the fractional and integer parts of *x*. Both results carry the sign of *x*, and both are floats. + +.. function:: trunc(x) + + Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually + a long integer). Delegates to ``x.__trunc__()``. + + .. versionadded:: 2.6 + Note that :func:`frexp` and :func:`modf` have a different call/return pattern than their C equivalents: they take a single argument and return a pair of values, rather than returning their second return value through an 'output Modified: python/trunk/Lib/test/test_abstract_numbers.py ============================================================================== --- python/trunk/Lib/test/test_abstract_numbers.py (original) +++ python/trunk/Lib/test/test_abstract_numbers.py Fri Feb 1 07:22:46 2008 @@ -1,11 +1,12 @@ """Unit tests for numbers.py.""" +import math +import operator import unittest -from test import test_support -from numbers import Number -from numbers import Exact, Inexact from numbers import Complex, Real, Rational, Integral -import operator +from numbers import Exact, Inexact +from numbers import Number +from test import test_support class TestNumbers(unittest.TestCase): def test_int(self): @@ -49,8 +50,8 @@ self.failUnless(issubclass(complex, Inexact)) c1, c2 = complex(3, 2), complex(4,1) - # XXX: This is not ideal, but see the comment in builtin_trunc(). - self.assertRaises(AttributeError, trunc, c1) + # XXX: This is not ideal, but see the comment in math_trunc(). + self.assertRaises(AttributeError, math.trunc, c1) self.assertRaises(TypeError, float, c1) self.assertRaises(TypeError, int, c1) Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Feb 1 07:22:46 2008 @@ -1766,38 +1766,6 @@ raise ValueError self.assertRaises(ValueError, sum, BadSeq()) - def test_trunc(self): - - self.assertEqual(trunc(1), 1) - self.assertEqual(trunc(-1), -1) - self.assertEqual(type(trunc(1)), int) - self.assertEqual(type(trunc(1.5)), int) - self.assertEqual(trunc(1.5), 1) - self.assertEqual(trunc(-1.5), -1) - self.assertEqual(trunc(1.999999), 1) - self.assertEqual(trunc(-1.999999), -1) - self.assertEqual(trunc(-0.999999), -0) - self.assertEqual(trunc(-100.999), -100) - - class TestTrunc(object): - def __trunc__(self): - return 23 - - class TestNoTrunc(object): - pass - - self.assertEqual(trunc(TestTrunc()), 23) - - self.assertRaises(TypeError, trunc) - self.assertRaises(TypeError, trunc, 1, 2) - # XXX: This is not ideal, but see the comment in builtin_trunc(). - self.assertRaises(AttributeError, trunc, TestNoTrunc()) - - t = TestNoTrunc() - t.__trunc__ = lambda *args: args - self.assertEquals((), trunc(t)) - self.assertRaises(TypeError, trunc, t, 0) - def test_tuple(self): self.assertEqual(tuple(()), ()) t0_3 = (0, 1, 2, 3) Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Fri Feb 1 07:22:46 2008 @@ -25,10 +25,11 @@ """ from __future__ import with_statement -import unittest import glob +import math import os, sys import pickle, copy +import unittest from decimal import * from test.test_support import (TestSkipped, run_unittest, run_doctest, is_resource_enabled) @@ -1225,7 +1226,7 @@ # should work the same as to_integral in the ROUND_DOWN mode d = Decimal(s) r = d.to_integral(ROUND_DOWN) - self.assertEqual(Decimal(trunc(d)), r) + self.assertEqual(Decimal(math.trunc(d)), r) class ContextAPItests(unittest.TestCase): Modified: python/trunk/Lib/test/test_math.py ============================================================================== --- python/trunk/Lib/test/test_math.py (original) +++ python/trunk/Lib/test/test_math.py Fri Feb 1 07:22:46 2008 @@ -237,6 +237,37 @@ self.ftest('tanh(0)', math.tanh(0), 0) self.ftest('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0) + def test_trunc(self): + self.assertEqual(math.trunc(1), 1) + self.assertEqual(math.trunc(-1), -1) + self.assertEqual(type(math.trunc(1)), int) + self.assertEqual(type(math.trunc(1.5)), int) + self.assertEqual(math.trunc(1.5), 1) + self.assertEqual(math.trunc(-1.5), -1) + self.assertEqual(math.trunc(1.999999), 1) + self.assertEqual(math.trunc(-1.999999), -1) + self.assertEqual(math.trunc(-0.999999), -0) + self.assertEqual(math.trunc(-100.999), -100) + + class TestTrunc(object): + def __trunc__(self): + return 23 + + class TestNoTrunc(object): + pass + + self.assertEqual(math.trunc(TestTrunc()), 23) + + self.assertRaises(TypeError, math.trunc) + self.assertRaises(TypeError, math.trunc, 1, 2) + # XXX: This is not ideal, but see the comment in math_trunc(). + self.assertRaises(AttributeError, math.trunc, TestNoTrunc()) + + t = TestNoTrunc() + t.__trunc__ = lambda *args: args + self.assertEquals((), math.trunc(t)) + self.assertRaises(TypeError, math.trunc, t, 0) + def testCopysign(self): self.assertEqual(math.copysign(1, 42), 1.0) self.assertEqual(math.copysign(0., 42), 0.0) Modified: python/trunk/Lib/test/test_rational.py ============================================================================== --- python/trunk/Lib/test/test_rational.py (original) +++ python/trunk/Lib/test/test_rational.py Fri Feb 1 07:22:46 2008 @@ -195,7 +195,7 @@ self.assertEqual(R.from_float(0.0).approximate(10000), R(0)) def testConversions(self): - self.assertTypedEquals(-1, trunc(R(-11, 10))) + self.assertTypedEquals(-1, math.trunc(R(-11, 10))) self.assertTypedEquals(-1, int(R(-11, 10))) self.assertEquals(False, bool(R(0, 1))) @@ -322,11 +322,11 @@ # Because 10**23 can't be represented exactly as a float: self.assertFalse(R(10**23) == float(10**23)) # The first test demonstrates why these are important. - self.assertFalse(1e23 < float(R(trunc(1e23) + 1))) - self.assertTrue(1e23 < R(trunc(1e23) + 1)) - self.assertFalse(1e23 <= R(trunc(1e23) - 1)) - self.assertTrue(1e23 > R(trunc(1e23) - 1)) - self.assertFalse(1e23 >= R(trunc(1e23) + 1)) + self.assertFalse(1e23 < float(R(math.trunc(1e23) + 1))) + self.assertTrue(1e23 < R(math.trunc(1e23) + 1)) + self.assertFalse(1e23 <= R(math.trunc(1e23) - 1)) + self.assertTrue(1e23 > R(math.trunc(1e23) - 1)) + self.assertFalse(1e23 >= R(math.trunc(1e23) + 1)) def testBigComplexComparisons(self): self.assertFalse(R(10**23) == complex(10**23)) Modified: python/trunk/Modules/mathmodule.c ============================================================================== --- python/trunk/Modules/mathmodule.c (original) +++ python/trunk/Modules/mathmodule.c Fri Feb 1 07:22:46 2008 @@ -155,6 +155,21 @@ "tanh(x)\n\nReturn the hyperbolic tangent of x.") static PyObject * +math_trunc(PyObject *self, PyObject *number) +{ + /* XXX: The py3k branch gets better errors for this by using + _PyType_Lookup(), but since float's mro isn't set in py2.6, + we just use PyObject_CallMethod here. */ + return PyObject_CallMethod(number, "__trunc__", NULL); +} + +PyDoc_STRVAR(math_trunc_doc, +"trunc(x:Real) -> Integral\n" +"\n" +"Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic" +"method."); + +static PyObject * math_frexp(PyObject *self, PyObject *arg) { int i; @@ -377,6 +392,7 @@ {"sqrt", math_sqrt, METH_O, math_sqrt_doc}, {"tan", math_tan, METH_O, math_tan_doc}, {"tanh", math_tanh, METH_O, math_tanh_doc}, + {"trunc", math_trunc, METH_O, math_trunc_doc}, {NULL, NULL} /* sentinel */ }; Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Fri Feb 1 07:22:46 2008 @@ -2044,20 +2044,6 @@ Without arguments, equivalent to locals().\n\ With an argument, equivalent to object.__dict__."); -static PyObject * -builtin_trunc(PyObject *self, PyObject *number) -{ - /* XXX: The py3k branch gets better errors for this by using - _PyType_Lookup(), but since float's mro isn't set in py2.6, - we just use PyObject_CallMethod here. */ - return PyObject_CallMethod(number, "__trunc__", NULL); -} - -PyDoc_STRVAR(trunc_doc, -"trunc(Real) -> Integral\n\ -\n\ -returns the integral closest to x between 0 and x."); - static PyObject* builtin_sum(PyObject *self, PyObject *args) @@ -2406,7 +2392,6 @@ {"unichr", builtin_unichr, METH_VARARGS, unichr_doc}, #endif {"vars", builtin_vars, METH_VARARGS, vars_doc}, - {"trunc", builtin_trunc, METH_O, trunc_doc}, {"zip", builtin_zip, METH_VARARGS, zip_doc}, {NULL, NULL}, }; From buildbot at python.org Fri Feb 1 07:49:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 06:49:39 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080201064939.6B1231E4015@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/30 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 08:05:46 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Fri, 1 Feb 2008 08:05:46 +0100 (CET) Subject: [Python-checkins] r60487 - in python/trunk/Lib: rational.py test/test_rational.py Message-ID: <20080201070546.EA6C51E4012@bag.python.org> Author: jeffrey.yasskin Date: Fri Feb 1 08:05:46 2008 New Revision: 60487 Modified: python/trunk/Lib/rational.py python/trunk/Lib/test/test_rational.py Log: Roll back r60248. It's useful to encourage users not to change Rational instances. Modified: python/trunk/Lib/rational.py ============================================================================== --- python/trunk/Lib/rational.py (original) +++ python/trunk/Lib/rational.py Fri Feb 1 08:05:46 2008 @@ -43,7 +43,7 @@ """ - __slots__ = ('numerator', 'denominator') + __slots__ = ('_numerator', '_denominator') # We're immutable, so use __new__ not __init__ def __new__(cls, numerator=0, denominator=1): @@ -93,8 +93,8 @@ raise ZeroDivisionError('Rational(%s, 0)' % numerator) g = gcd(numerator, denominator) - self.numerator = int(numerator // g) - self.denominator = int(denominator // g) + self._numerator = int(numerator // g) + self._denominator = int(denominator // g) return self @classmethod @@ -168,6 +168,14 @@ result = new return result + @property + def numerator(a): + return a._numerator + + @property + def denominator(a): + return a._denominator + def __repr__(self): """repr(self)""" return ('Rational(%r,%r)' % (self.numerator, self.denominator)) Modified: python/trunk/Lib/test/test_rational.py ============================================================================== --- python/trunk/Lib/test/test_rational.py (original) +++ python/trunk/Lib/test/test_rational.py Fri Feb 1 08:05:46 2008 @@ -119,6 +119,17 @@ r.__init__(2, 15) self.assertEquals((7, 3), _components(r)) + self.assertRaises(AttributeError, setattr, r, 'numerator', 12) + self.assertRaises(AttributeError, setattr, r, 'denominator', 6) + self.assertEquals((7, 3), _components(r)) + + # But if you _really_ need to: + r._numerator = 4 + r._denominator = 2 + self.assertEquals((4, 2), _components(r)) + # Which breaks some important operations: + self.assertNotEquals(R(4, 2), r) + def testFromFloat(self): self.assertRaisesMessage( TypeError, "Rational.from_float() only takes floats, not 3 (int)", From python-checkins at python.org Fri Feb 1 08:22:59 2008 From: python-checkins at python.org (neal.norwitz) Date: Fri, 1 Feb 2008 08:22:59 +0100 (CET) Subject: [Python-checkins] r60488 - python/trunk/Python/marshal.c Message-ID: <20080201072259.627CC1E4012@bag.python.org> Author: neal.norwitz Date: Fri Feb 1 08:22:59 2008 New Revision: 60488 Modified: python/trunk/Python/marshal.c Log: Fix refleak Modified: python/trunk/Python/marshal.c ============================================================================== --- python/trunk/Python/marshal.c (original) +++ python/trunk/Python/marshal.c Fri Feb 1 08:22:59 2008 @@ -881,6 +881,7 @@ v = NULL; break; } + Py_DECREF(v2); } retval = v; break; From buildbot at python.org Fri Feb 1 09:26:00 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 08:26:00 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080201082600.F11A61E4012@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/576 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin,neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 09:51:34 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 08:51:34 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080201085134.886971E4012@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/517 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 113] No route to host Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 113] No route to host Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 113] No route to host Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 113] No route to host Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 113] No route to host make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 10:40:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 09:40:31 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 3.0 Message-ID: <20080201094031.BAC011E4012@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%203.0/builds/498 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 110] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 110] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 110] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 110] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 110] Connection timed out make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 11:00:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 10:00:46 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080201100046.7747E1E4012@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/546 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 704, in send self.connect() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 688, in connect self.timeout) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 145] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 704, in send self.connect() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 688, in connect self.timeout) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 145] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 704, in send self.connect() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 688, in connect self.timeout) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 145] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 704, in send self.connect() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 688, in connect self.timeout) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 145] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 704, in send self.connect() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/httplib.py", line 688, in connect self.timeout) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 145] Connection timed out sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 11:04:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 10:04:02 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080201100402.5E6D21E4012@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/494 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 704, in send self.connect() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 688, in connect self.timeout) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Operation timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 704, in send self.connect() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 688, in connect self.timeout) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Operation timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 704, in send self.connect() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 688, in connect self.timeout) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Operation timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 704, in send self.connect() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 688, in connect self.timeout) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Operation timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 704, in send self.connect() File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/httplib.py", line 688, in connect self.timeout) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Operation timed out make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 11:08:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 10:08:40 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080201100840.2DF031E4012@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/481 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 238] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 238] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 238] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 238] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-hppa/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 238] Connection timed out make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 11:30:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 10:30:57 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20080201103057.B42031E4012@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/67 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 11:53:24 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 11:53:24 +0100 (CET) Subject: [Python-checkins] r60490 - doctools/trunk/sphinx/texinputs/howto.cls doctools/trunk/sphinx/texinputs/manual.cls doctools/trunk/sphinx/texinputs/sphinx.sty Message-ID: <20080201105324.CAF551E4015@bag.python.org> Author: georg.brandl Date: Fri Feb 1 11:53:24 2008 New Revision: 60490 Modified: doctools/trunk/sphinx/texinputs/howto.cls doctools/trunk/sphinx/texinputs/manual.cls doctools/trunk/sphinx/texinputs/sphinx.sty Log: Put doc title and release in the header. Modified: doctools/trunk/sphinx/texinputs/howto.cls ============================================================================== --- doctools/trunk/sphinx/texinputs/howto.cls (original) +++ doctools/trunk/sphinx/texinputs/howto.cls Fri Feb 1 11:53:24 2008 @@ -78,7 +78,7 @@ \@thanks \setcounter{footnote}{0} \let\thanks\relax\let\maketitle\relax - \gdef\@thanks{}\gdef\@author{}\gdef\@title{} + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} } Modified: doctools/trunk/sphinx/texinputs/manual.cls ============================================================================== --- doctools/trunk/sphinx/texinputs/manual.cls (original) +++ doctools/trunk/sphinx/texinputs/manual.cls Fri Feb 1 11:53:24 2008 @@ -96,7 +96,7 @@ \end{titlepage}% \setcounter{footnote}{0}% \let\thanks\relax\let\maketitle\relax - \gdef\@thanks{}\gdef\@author{}\gdef\@title{} + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} } Modified: doctools/trunk/sphinx/texinputs/sphinx.sty ============================================================================== --- doctools/trunk/sphinx/texinputs/sphinx.sty (original) +++ doctools/trunk/sphinx/texinputs/sphinx.sty Fri Feb 1 11:53:24 2008 @@ -179,7 +179,8 @@ \fancyfoot[LE,RO]{{\py at HeaderFamily\thepage}} \fancyfoot[LO]{{\py at HeaderFamily\nouppercase{\rightmark}}} \fancyfoot[RE]{{\py at HeaderFamily\nouppercase{\leftmark}}} - \renewcommand{\headrulewidth}{0pt} + \fancyhead[LE,RO]{{\py at HeaderFamily \@title, \py at release}} + \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} } % Update the plain style so we get the page number & footer line, From buildbot at python.org Fri Feb 1 12:43:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 11:43:37 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian 3.0 Message-ID: <20080201114338.0B0C21E4012@bag.python.org> The Buildbot has detected a new failure of sparc Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_codecmaps_cn.py", line 30, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_codecmaps_jp.py", line 64, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_codecmaps_kr.py", line 41, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_codecmaps_tw.py", line 28, in test_main test_support.run_unittest(__name__) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 542, in run_unittest suite.addTest(unittest.findTestCases(sys.modules[cls])) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 636, in findTestCases return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 540, in loadTestsFromModule tests.append(self.loadTestsFromTestCase(obj)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 532, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 387, in __init__ self.addTests(tests) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/unittest.py", line 423, in addTests for test in tests: File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 279, in __init__ self.open_mapping_file() # test it to report the error early File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_multibytecodec_support.py", line 282, in open_mapping_file return test_support.open_urlresource(self.mapfileurl) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_normalization.py", line 92, in test_main open_urlresource(TESTDATAURL) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/test/test_support.py", line 268, in open_urlresource fn, _ = urllib.urlretrieve(url, filename) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 88, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 230, in retrieve fp = self.open(url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 202, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 198, in open return getattr(self, name)(url) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 372, in open_http return self._open_generic_http(httplib.HTTPConnection, url, data) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/urllib.py", line 351, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 884, in request self._send_request(method, url, body, headers) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 921, in _send_request self.endheaders() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 879, in endheaders self._send_output() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 745, in _send_output self.send(msg) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 704, in send self.connect() File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/httplib.py", line 688, in connect self.timeout) File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/socket.py", line 294, in create_connection raise error(msg) IOError: [Errno socket error] [Errno 60] Connection timed out make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 12:59:09 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 12:59:09 +0100 (CET) Subject: [Python-checkins] r60493 - python/trunk/Doc/library/socket.rst Message-ID: <20080201115909.309B01E4015@bag.python.org> Author: georg.brandl Date: Fri Feb 1 12:59:08 2008 New Revision: 60493 Modified: python/trunk/Doc/library/socket.rst Log: Update IPv6 RFC number. Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Fri Feb 1 12:59:08 2008 @@ -23,7 +23,7 @@ socket-related system calls are also a valuable source of information on the details of socket semantics. For Unix, refer to the manual pages; for Windows, see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may -want to refer to :rfc:`2553` titled Basic Socket Interface Extensions for IPv6. +want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6. .. index:: object: socket From buildbot at python.org Fri Feb 1 14:16:47 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 13:16:47 +0000 Subject: [Python-checkins] buildbot failure in 3.0.msi Message-ID: <20080201131647.EF5581E4015@bag.python.org> The Buildbot has detected a new failure of 3.0.msi. Full details are available at: http://www.python.org/dev/buildbot/all/3.0.msi/builds/149 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The Nightly scheduler named '3.0.msi' triggered this build Build Source Stamp: HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Fri Feb 1 15:05:06 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 14:05:06 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080201140506.91B2D1E4018@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin,neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_codecmaps_cn test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_normalization make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 16:49:59 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 16:49:59 +0100 (CET) Subject: [Python-checkins] r60496 - doctools/trunk/sphinx/builder.py Message-ID: <20080201154959.3DEC41E4021@bag.python.org> Author: georg.brandl Date: Fri Feb 1 16:49:58 2008 New Revision: 60496 Modified: doctools/trunk/sphinx/builder.py Log: Add link checker builder, written for GHOP by Thomas Lamb. Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Fri Feb 1 16:49:58 2008 @@ -5,7 +5,7 @@ Builder classes for different output formats. - :copyright: 2007-2008 by Georg Brandl. + :copyright: 2007-2008 by Georg Brandl, Thomas Lamb. :license: BSD. """ @@ -13,9 +13,11 @@ import time import codecs import shutil +import socket import cPickle as pickle from os import path from cgi import escape +from urllib2 import urlopen, HTTPError from docutils import nodes from docutils.io import StringOutput, FileOutput, DocTreeInput @@ -31,7 +33,7 @@ from sphinx.latexwriter import LaTeXWriter from sphinx.environment import BuildEnvironment, NoUri from sphinx.highlighting import pygments, get_stylesheet -from sphinx.util.console import bold, purple, green +from sphinx.util.console import bold, purple, green, red, darkgreen # side effect: registers roles and directives from sphinx import roles @@ -678,21 +680,21 @@ destination = FileOutput( destination_path=path.join(self.outdir, targetname), encoding='utf-8') - print "processing", targetname + "...", + self.info("processing " + targetname + "... ", nonl=1) doctree = self.assemble_doctree( sourcename, appendices=(docclass == 'manual') and appendices or []) - print "writing...", + self.info("writing... ", nonl=1) doctree.settings = docsettings doctree.settings.author = author doctree.settings.filename = sourcename doctree.settings.docclass = docclass docwriter.write(doctree, destination) - print "done" + self.info("done") def assemble_doctree(self, indexfile, appendices): self.filenames = set([indexfile, 'glossary.rst', 'about.rst', 'license.rst', 'copyright.rst']) - print green(indexfile), + self.info(green(indexfile) + " ", nonl=1) def process_tree(filename, tree): tree = tree.deepcopy() for toctreenode in tree.traverse(addnodes.toctree): @@ -700,7 +702,7 @@ includefiles = map(str, toctreenode['includefiles']) for includefile in includefiles: try: - print green(includefile), + self.info(green(includefile) + " ", nonl=1) subtree = process_tree(includefile, self.env.get_doctree(includefile)) self.filenames.add(includefile) @@ -713,8 +715,8 @@ return tree largetree = process_tree(indexfile, self.env.get_doctree(indexfile)) largetree.extend(appendices) - print - print "resolving references..." + self.info() + self.info("resolving references...") self.env.resolve_references(largetree, indexfile, self) # resolve :ref:s to distant tex files -- we can't add a cross-reference, # but append the document name @@ -856,10 +858,114 @@ pass +class CheckExternalLinksBuilder(Builder): + """ + Checks for broken external links. + """ + name = 'linkcheck' + + def init(self): + self.good = set() + self.broken = {} + self.redirected = {} + # set a timeout for non-responding servers + socket.setdefaulttimeout(5.0) + # create output file + open(path.join(self.outdir, 'output.txt'), 'w').close() + + def get_target_uri(self, source_filename, typ=None): + return '' + + def get_outdated_files(self): + return self.env.all_files + + def prepare_writing(self, filenames): + return + + def write_file(self, filename, doctree): + self.info() + for node in doctree.traverse(nodes.reference): + try: + self.check(node, filename) + except KeyError: + continue + return + + def check(self, node, filename): + uri = node['refuri'] + + if '#' in uri: + uri = uri.split('#')[0] + + if uri in self.good: + return + + if uri[0:5] == 'http:' or uri[0:6] == 'https:': + self.info(uri, nonl=1) + lineno = None + while lineno is None and node: + node = node.parent + lineno = node.line + + if uri in self.broken: + (r, s) = self.broken[uri] + elif uri in self.redirected: + (r, s) = self.redirected[uri] + else: + (r, s) = self.resolve(uri) + + if r == 0: + self.info(' - ' + darkgreen('working')) + self.good.add(uri) + elif r == 2: + self.info(' - ' + red('broken: ') + s) + self.broken[uri] = (r, s) + self.write_entry('broken', filename, lineno, uri + ': ' + s) + else: + self.info(' - ' + purple('redirected') + ' to ' + s) + self.redirected[uri] = (r, s) + self.write_entry('redirected', filename, lineno, uri + ' to ' + s) + + elif len(uri) == 0 or uri[0:7] == 'mailto:' or uri[0:4] == 'ftp:': + return + else: + self.info(uri + ' - ' + red('malformed!')) + self.write_entry('malformed', filename, lineno, uri) + + return + + def write_entry(self, what, filename, line, uri): + output = open(path.join(self.outdir, 'output.txt'), 'a') + output.write("%s:%s [%s] %s\n" % (filename, line, what, uri)) + output.close() + + def resolve(self, uri): + try: + f = urlopen(uri) + f.close() + except HTTPError, err: + if err.code == 403 and uri.startwith('http://en.wikipedia.org/'): + # Wikipedia blocks requests from urllib User-Agent + return 0 + return (2, str(err)) + except Exception, err: + return (2, str(err)) + if f.url.rstrip('/') == uri.rstrip('/'): + return (0, 0) + else: + return (1, f.url) + + def finish(self): + return + + + + builtin_builders = { 'html': StandaloneHTMLBuilder, 'web': WebHTMLBuilder, 'htmlhelp': HTMLHelpBuilder, 'latex': LaTeXBuilder, 'changes': ChangesBuilder, + 'linkcheck': CheckExternalLinksBuilder, } From python-checkins at python.org Fri Feb 1 16:50:16 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 16:50:16 +0100 (CET) Subject: [Python-checkins] r60497 - python/trunk/Doc/Makefile python/trunk/Doc/README.txt Message-ID: <20080201155016.32B141E4034@bag.python.org> Author: georg.brandl Date: Fri Feb 1 16:50:15 2008 New Revision: 60497 Modified: python/trunk/Doc/Makefile python/trunk/Doc/README.txt Log: Add link checker builder, written for GHOP by Thomas Lamb. Modified: python/trunk/Doc/Makefile ============================================================================== --- python/trunk/Doc/Makefile (original) +++ python/trunk/Doc/Makefile Fri Feb 1 16:50:15 2008 @@ -16,11 +16,12 @@ help: @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " web to make file usable by Sphinx.web" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " changes to make an overview over all changed/added/deprecated items" + @echo " html to make standalone HTML files" + @echo " web to make file usable by Sphinx.web" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview over all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" checkout: @if [ ! -d tools/sphinx ]; then \ @@ -71,6 +72,11 @@ changes: build @echo "The overview file is in build/changes." +linkcheck: BUILDER = linkcheck +linkcheck: build + @echo "Link check complete; look for any errors in the above or in" \ + "build/$(BUILDER)/output.txt" + clean: -rm -rf build/* -rm -rf tools/sphinx Modified: python/trunk/Doc/README.txt ============================================================================== --- python/trunk/Doc/README.txt (original) +++ python/trunk/Doc/README.txt Fri Feb 1 16:50:15 2008 @@ -50,6 +50,10 @@ * "latex", which builds LaTeX source files that can be run with "pdflatex" to produce PDF documents. + + * "linkcheck", which checks all external references to see whether they are + broken, redirected or malformed, and outputs this information to stdout + as well as a plain-text (.txt) file. * "changes", which builds an overview over all versionadded/versionchanged/ deprecated items in the current version. This is meant as a help for the From buildbot at python.org Fri Feb 1 18:51:59 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 17:51:59 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080201175159.DC6D11E400A@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/26 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: bill.janssen BUILD FAILED: failed compile sincerely, -The Buildbot From python-checkins at python.org Fri Feb 1 19:08:09 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 19:08:09 +0100 (CET) Subject: [Python-checkins] r60500 - python/trunk/Doc/builddoc.bat python/trunk/Doc/make.bat Message-ID: <20080201180809.D58D61E400A@bag.python.org> Author: georg.brandl Date: Fri Feb 1 19:08:09 2008 New Revision: 60500 Added: python/trunk/Doc/make.bat - copied unchanged from r60349, python/trunk/Doc/builddoc.bat Removed: python/trunk/Doc/builddoc.bat Log: Rename batch file. Deleted: /python/trunk/Doc/builddoc.bat ============================================================================== --- /python/trunk/Doc/builddoc.bat Fri Feb 1 19:08:09 2008 +++ (empty file) @@ -1,52 +0,0 @@ - at echo off -setlocal - -set SVNROOT=http://svn.python.org/projects -if "%PYTHON%" EQU "" set PYTHON=python25 - -if "%1" EQU "" goto help -if "%1" EQU "html" goto build -if "%1" EQU "htmlhelp" goto build -if "%1" EQU "web" goto build -if "%1" EQU "webrun" goto webrun -if "%1" EQU "checkout" goto checkout -if "%1" EQU "update" goto update - -:help -echo HELP -echo. -echo builddoc checkout -echo builddoc update -echo builddoc html -echo builddoc htmlhelp -echo builddoc web -echo builddoc webrun -echo. -goto end - -:checkout -svn co %SVNROOT%/doctools/trunk/sphinx tools/sphinx -svn co %SVNROOT%/external/docutils-0.4/docutils tools/docutils -svn co %SVNROOT%/external/Pygments-0.9/pygments tools/pygments -goto end - -:update -svn update tools/sphinx -svn update tools/docutils -svn update tools/pygments -goto end - -:build -if not exist build mkdir build -if not exist build\%1 mkdir build\%1 -if not exist build\doctrees mkdir build\doctrees -cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%1 -if "%1" EQU "htmlhelp" "%ProgramFiles%\HTML Help Workshop\hhc.exe" build\htmlhelp\pydoc.hhp -goto end - -:webrun -set PYTHONPATH=tools -%PYTHON% -m sphinx.web build\web -goto end - -:end From python-checkins at python.org Fri Feb 1 19:49:27 2008 From: python-checkins at python.org (christian.heimes) Date: Fri, 1 Feb 2008 19:49:27 +0100 (CET) Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c Message-ID: <20080201184927.46EB21E400A@bag.python.org> Author: christian.heimes Date: Fri Feb 1 19:49:26 2008 New Revision: 60504 Modified: python/trunk/Modules/posixmodule.c Log: More int -> pid_t. Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Fri Feb 1 19:49:26 2008 @@ -3868,7 +3868,7 @@ static PyObject * posix_getppid(PyObject *self, PyObject *noargs) { - return PyInt_FromLong((long)getppid()); + return PyInt_FromLong(getppid()); } #endif @@ -3923,7 +3923,8 @@ static PyObject * posix_kill(PyObject *self, PyObject *args) { - int pid, sig; + pid_t pid; + int sig; if (!PyArg_ParseTuple(args, "ii:kill", &pid, &sig)) return NULL; #if defined(PYOS_OS2) && !defined(PYCC_GCC) @@ -4267,7 +4268,8 @@ struct file_ref stdio[3]; struct pipe_ref p_fd[3]; FILE *p_s[3]; - int file_count, i, pipe_err, pipe_pid; + int file_count, i, pipe_err; + pid_t pipe_pid; char *shell, *sh_name, *opt, *rd_mode, *wr_mode; PyObject *f, *p_f[3]; @@ -4595,7 +4597,7 @@ { int result; int exit_code; - int pipe_pid; + pid_t pipe_pid; PyObject *procObj, *pidObj, *intObj, *fileObj; int file_count; #ifdef WITH_THREAD @@ -5643,7 +5645,7 @@ #if defined(HAVE_WAIT3) || defined(HAVE_WAIT4) static PyObject * -wait_helper(int pid, int status, struct rusage *ru) +wait_helper(pid_t pid, int status, struct rusage *ru) { PyObject *result; static PyObject *struct_rusage; @@ -5709,7 +5711,8 @@ static PyObject * posix_wait3(PyObject *self, PyObject *args) { - int pid, options; + pid_t pid; + int options; struct rusage ru; WAIT_TYPE status; WAIT_STATUS_INT(status) = 0; @@ -5733,7 +5736,8 @@ static PyObject * posix_wait4(PyObject *self, PyObject *args) { - int pid, options; + pid_t pid; + int options; struct rusage ru; WAIT_TYPE status; WAIT_STATUS_INT(status) = 0; @@ -5757,7 +5761,8 @@ static PyObject * posix_waitpid(PyObject *self, PyObject *args) { - int pid, options; + pid_t pid; + int options; WAIT_TYPE status; WAIT_STATUS_INT(status) = 0; @@ -5806,7 +5811,7 @@ static PyObject * posix_wait(PyObject *self, PyObject *noargs) { - int pid; + pid_t pid; WAIT_TYPE status; WAIT_STATUS_INT(status) = 0; @@ -6007,7 +6012,8 @@ static PyObject * posix_getsid(PyObject *self, PyObject *args) { - int pid, sid; + pid_t pid; + int sid; if (!PyArg_ParseTuple(args, "i:getsid", &pid)) return NULL; sid = getsid(pid); @@ -6041,7 +6047,8 @@ static PyObject * posix_setpgid(PyObject *self, PyObject *args) { - int pid, pgrp; + pid_t pid; + int pgrp; if (!PyArg_ParseTuple(args, "ii:setpgid", &pid, &pgrp)) return NULL; if (setpgid(pid, pgrp) < 0) From stackless-checkins-bounces at stackless.com Fri Feb 1 19:34:02 2008 From: stackless-checkins-bounces at stackless.com (stackless-checkins-bounces at stackless.com) Date: Fri, 01 Feb 2008 19:34:02 +0100 Subject: [Python-checkins] Your message to Stackless-checkins awaits moderator approval Message-ID: Your mail to 'Stackless-checkins' with the subject r60502 - stackless/branches/release25-maint/configure Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 827997 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://www.stackless.com/mailman/confirm/stackless-checkins/16ad6b50ef247634c3de1699e8fbd0b263633bda From theller at ctypes.org Fri Feb 1 20:10:07 2008 From: theller at ctypes.org (Thomas Heller) Date: Fri, 01 Feb 2008 20:10:07 +0100 Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c In-Reply-To: <20080201184927.46EB21E400A@bag.python.org> References: <20080201184927.46EB21E400A@bag.python.org> Message-ID: > Author: christian.heimes > Date: Fri Feb 1 19:49:26 2008 > New Revision: 60504 > > Modified: > python/trunk/Modules/posixmodule.c > Log: > More int -> pid_t. > > - int pid, sig; > + pid_t pid; > + int sig; > if (!PyArg_ParseTuple(args, "ii:kill", &pid, &sig)) > return NULL; Hm, what happens if sizeof(pid_t) != sizeof(int) ? From lists at cheimes.de Fri Feb 1 20:21:34 2008 From: lists at cheimes.de (Christian Heimes) Date: Fri, 01 Feb 2008 20:21:34 +0100 Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c In-Reply-To: References: <20080201184927.46EB21E400A@bag.python.org> Message-ID: <47A3713E.3090009@cheimes.de> Thomas Heller wrote: > Hm, what happens if sizeof(pid_t) != sizeof(int) ? The problem is discussed in issue #1983. Python may need to get a format string for pid_t and PyInt_FromPid_t() / PyInt_AsPid_t(). From python-checkins at python.org Fri Feb 1 20:24:02 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 20:24:02 +0100 (CET) Subject: [Python-checkins] r60507 - python/trunk/Doc/Makefile Message-ID: <20080201192402.2A75A1E400A@bag.python.org> Author: georg.brandl Date: Fri Feb 1 20:24:01 2008 New Revision: 60507 Modified: python/trunk/Doc/Makefile Log: Wording nit. Modified: python/trunk/Doc/Makefile ============================================================================== --- python/trunk/Doc/Makefile (original) +++ python/trunk/Doc/Makefile Fri Feb 1 20:24:01 2008 @@ -74,8 +74,8 @@ linkcheck: BUILDER = linkcheck linkcheck: build - @echo "Link check complete; look for any errors in the above or in" \ - "build/$(BUILDER)/output.txt" + @echo "Link check complete; look for any errors in the above output "\ + "or in build/$(BUILDER)/output.txt" clean: -rm -rf build/* From python-checkins at python.org Fri Feb 1 21:44:17 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 21:44:17 +0100 (CET) Subject: [Python-checkins] r60509 - in doctools/trunk: HACKING README sphinx-build.py sphinx/addons/ifconfig.py sphinx/application.py sphinx/builder.py sphinx/config.py sphinx/directives.py sphinx/environment.py sphinx/htmlhelp.py sphinx/latexwriter.py sphinx/templates/changes/versionchanges.html sphinx/templates/layout.html sphinx/util/__init__.py sphinx/web/application.py Message-ID: <20080201204417.CE4641E400A@bag.python.org> Author: georg.brandl Date: Fri Feb 1 21:44:17 2008 New Revision: 60509 Modified: doctools/trunk/HACKING doctools/trunk/README doctools/trunk/sphinx-build.py doctools/trunk/sphinx/addons/ifconfig.py doctools/trunk/sphinx/application.py doctools/trunk/sphinx/builder.py doctools/trunk/sphinx/config.py doctools/trunk/sphinx/directives.py doctools/trunk/sphinx/environment.py doctools/trunk/sphinx/htmlhelp.py doctools/trunk/sphinx/latexwriter.py doctools/trunk/sphinx/templates/changes/versionchanges.html doctools/trunk/sphinx/templates/layout.html doctools/trunk/sphinx/util/__init__.py doctools/trunk/sphinx/web/application.py Log: More refactoring, this time allowing different file extensions and a different master file. Also fix environment warning reporting and improve handling of error conditions. Modified: doctools/trunk/HACKING ============================================================================== --- doctools/trunk/HACKING (original) +++ doctools/trunk/HACKING Fri Feb 1 21:44:17 2008 @@ -6,6 +6,8 @@ This document tries to give you a cursory overview of the doctools code. +TODO: update this. + Dependencies ------------ Modified: doctools/trunk/README ============================================================================== --- doctools/trunk/README (original) +++ doctools/trunk/README Fri Feb 1 21:44:17 2008 @@ -4,6 +4,8 @@ FIXME: This is already outdated since the conversion has happened and the reST sources are in the Python tree now. +TODO: update this. + What you need to know --------------------- Modified: doctools/trunk/sphinx-build.py ============================================================================== --- doctools/trunk/sphinx-build.py (original) +++ doctools/trunk/sphinx-build.py Fri Feb 1 21:44:17 2008 @@ -11,10 +11,4 @@ if __name__ == '__main__': from sphinx import main - try: - sys.exit(main(sys.argv)) - except Exception: - import traceback - traceback.print_exc() - import pdb - pdb.post_mortem(sys.exc_traceback) + sys.exit(main(sys.argv)) Modified: doctools/trunk/sphinx/addons/ifconfig.py ============================================================================== --- doctools/trunk/sphinx/addons/ifconfig.py (original) +++ doctools/trunk/sphinx/addons/ifconfig.py Fri Feb 1 21:44:17 2008 @@ -34,7 +34,7 @@ return [node] -def process_ifconfig_nodes(app, doctree, docfilename): +def process_ifconfig_nodes(app, doctree, docname): ns = app.config.__dict__.copy() ns['builder'] = app.builder.name for node in doctree.traverse(ifconfig): Modified: doctools/trunk/sphinx/application.py ============================================================================== --- doctools/trunk/sphinx/application.py (original) +++ doctools/trunk/sphinx/application.py Fri Feb 1 21:44:17 2008 @@ -42,9 +42,9 @@ # List of all known events. Maps name to arguments description. events = { - 'builder-inited': 'builder instance', + 'builder-inited': '', 'doctree-read' : 'the doctree before being pickled', - 'doctree-resolved' : 'the doctree, the filename, the builder', + 'doctree-resolved' : 'the doctree, the docname', } class Application(object): Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Fri Feb 1 21:44:17 2008 @@ -27,13 +27,13 @@ from docutils.readers.doctree import Reader as DoctreeReader from sphinx import addnodes -from sphinx.util import (get_matching_files, ensuredir, relative_uri, os_path, SEP) +from sphinx.util import (get_matching_docs, ensuredir, relative_uri, SEP, os_path) from sphinx.htmlhelp import build_hhx from sphinx.htmlwriter import HTMLWriter, HTMLTranslator, SmartyPantsHTMLTranslator from sphinx.latexwriter import LaTeXWriter from sphinx.environment import BuildEnvironment, NoUri from sphinx.highlighting import pygments, get_stylesheet -from sphinx.util.console import bold, purple, green, red, darkgreen +from sphinx.util.console import bold, purple, red, darkgreen # side effect: registers roles and directives from sphinx import roles @@ -64,6 +64,7 @@ self.freshenv = freshenv self.init() + self.load_env() # helper methods @@ -91,8 +92,11 @@ template = self.templates[name] = self.jinja_env.get_template(name) return template - def get_target_uri(self, source_filename, typ=None): - """Return the target URI for a source filename.""" + def get_target_uri(self, docname, typ=None): + """ + Return the target URI for a document name (typ can be used to qualify + the link characteristic for individual builders). + """ raise NotImplementedError def get_relative_uri(self, from_, to, typ=None): @@ -102,7 +106,7 @@ return relative_uri(self.get_target_uri(from_), self.get_target_uri(to, typ)) - def get_outdated_files(self): + def get_outdated_docs(self): """Return a list of output files that are outdated.""" raise NotImplementedError @@ -132,29 +136,33 @@ self.info('done') except Exception, err: self.info('failed: %s' % err) - self.env = BuildEnvironment(self.srcdir, self.doctreedir) + self.env = BuildEnvironment(self.srcdir, self.doctreedir, self.config) else: - self.env = BuildEnvironment(self.srcdir, self.doctreedir) + self.env = BuildEnvironment(self.srcdir, self.doctreedir, self.config) + self.env.set_warnfunc(self.warn) def build_all(self): """Build all source files.""" - self.load_env() self.build(None, summary='all source files') - def build_specific(self, source_filenames): + def build_specific(self, filenames): """Only rebuild as much as needed for changes in the source_filenames.""" # bring the filenames to the canonical format, that is, - # relative to the source directory. + # relative to the source directory and without source_suffix. dirlen = len(self.srcdir) + 1 - to_write = [path.abspath(filename)[dirlen:] for filename in source_filenames] - self.load_env() + to_write = [] + suffix = self.config.source_suffix + for filename in filenames: + filename = path.abspath(filename)[dirlen:] + if filename.endswith(suffix): + filename = filename[:-len(suffix)] + to_write.append(filename) self.build(to_write, summary='%d source files given on command line' % len(to_write)) def build_update(self): """Only rebuild files changed or added since last build.""" - self.load_env() - to_build = self.get_outdated_files() + to_build = self.get_outdated_docs() if not to_build: self.info(bold('no target files are out of date, exiting.')) return @@ -166,12 +174,12 @@ summary='targets for %d source files that are ' 'out of date' % len(to_build)) - def build(self, filenames, summary=None): + def build(self, docnames, summary=None): if summary: self.info(bold('building [%s]: ' % self.name), nonl=1) self.info(summary) - updated_filenames = [] + updated_docnames = [] # while reading, collect all warnings from docutils warnings = [] self.env.set_warnfunc(warnings.append) @@ -179,14 +187,15 @@ iterator = self.env.update(self.config, self.app) # the first item in the iterator is a summary message self.info(iterator.next()) - for filename in self.status_iterator(iterator, 'reading... ', purple): - updated_filenames.append(filename) + for docname in self.status_iterator(iterator, 'reading... ', purple): + updated_docnames.append(docname) # nothing further to do, the environment has already done the reading for warning in warnings: - self.warn(warning) + if warning.strip(): + self.warn(warning) self.env.set_warnfunc(self.warn) - if updated_filenames: + if updated_docnames: # save the environment self.info(bold('pickling the env... '), nonl=True) self.env.topickle(path.join(self.doctreedir, ENV_PICKLE_FILENAME)) @@ -198,43 +207,44 @@ # another indirection to support methods which don't build files # individually - self.write(filenames, updated_filenames) + self.write(docnames, updated_docnames) # finish (write style files etc.) self.info(bold('finishing... ')) self.finish() self.info(bold('build succeeded.')) - def write(self, build_filenames, updated_filenames): - if build_filenames is None: # build_all - build_filenames = self.env.all_files - filenames = set(build_filenames) | set(updated_filenames) + def write(self, build_docnames, updated_docnames): + if build_docnames is None: # build_all + build_docnames = self.env.all_docs + docnames = set(build_docnames) | set(updated_docnames) # add all toctree-containing files that may have changed - for filename in list(filenames): - for tocfilename in self.env.files_to_rebuild.get(filename, []): - filenames.add(tocfilename) - filenames.add('contents.rst') + for docname in list(docnames): + for tocdocname in self.env.files_to_rebuild.get(docname, []): + docnames.add(tocdocname) + docnames.add(self.config.master_doc) self.info(bold('creating index...')) self.env.create_index(self) - self.prepare_writing(filenames) + self.prepare_writing(docnames) # write target files warnings = [] self.env.set_warnfunc(warnings.append) - for filename in self.status_iterator(sorted(filenames), - 'writing output... ', green): - doctree = self.env.get_and_resolve_doctree(filename, self) - self.write_file(filename, doctree) + for docname in self.status_iterator(sorted(docnames), + 'writing output... ', darkgreen): + doctree = self.env.get_and_resolve_doctree(docname, self) + self.write_doc(docname, doctree) for warning in warnings: - self.warn(warning) + if warning.strip(): + self.warn(warning) self.env.set_warnfunc(self.warn) - def prepare_writing(self, filenames): + def prepare_writing(self, docnames): raise NotImplementedError - def write_file(self, filename, doctree): + def write_doc(self, docname, doctree): raise NotImplementedError def finish(self): @@ -252,6 +262,9 @@ def init(self): """Load templates.""" self.init_templates() + self.init_translator_class() + + def init_translator_class(self): if self.config.html_translator_class: self.translator_class = self.app.import_object( self.config.html_translator_class, 'html_translator_class setting') @@ -272,10 +285,10 @@ settings_overrides={'output_encoding': 'unicode'} ) - def prepare_writing(self, filenames): + def prepare_writing(self, docnames): from sphinx.search import IndexBuilder self.indexer = IndexBuilder() - self.load_indexer(filenames) + self.load_indexer(docnames) self.docwriter = HTMLWriter(self) self.docsettings = OptionParser( defaults=self.env.settings, @@ -301,8 +314,7 @@ len = len, # the built-in ) - def write_file(self, filename, doctree): - pagename = filename[:-4] + def write_doc(self, docname, doctree): destination = StringOutput(encoding='utf-8') doctree.settings = self.docsettings @@ -311,43 +323,43 @@ prev = next = None parents = [] - related = self.env.toctree_relations.get(filename) + related = self.env.toctree_relations.get(docname) if related: - prev = {'link': self.get_relative_uri(filename, related[1]), + prev = {'link': self.get_relative_uri(docname, related[1]), 'title': self.render_partial(self.env.titles[related[1]])['title']} - next = {'link': self.get_relative_uri(filename, related[2]), + next = {'link': self.get_relative_uri(docname, related[2]), 'title': self.render_partial(self.env.titles[related[2]])['title']} while related: parents.append( - {'link': self.get_relative_uri(filename, related[0]), + {'link': self.get_relative_uri(docname, related[0]), 'title': self.render_partial(self.env.titles[related[0]])['title']}) related = self.env.toctree_relations.get(related[0]) if parents: - parents.pop() # remove link to "contents.rst"; we have a generic + parents.pop() # remove link to the master file; we have a generic # "back to index" link already parents.reverse() - title = self.env.titles.get(filename) + title = self.env.titles.get(docname) if title: title = self.render_partial(title)['title'] else: title = '' - self.globalcontext['titles'][filename] = title - sourcename = pagename + '.txt' - context = dict( + self.globalcontext['titles'][docname] = title + sourcename = self.config.html_copy_source and docname + '.txt' or '' + ctx = dict( title = title, sourcename = sourcename, body = self.docwriter.parts['fragment'], - toc = self.render_partial(self.env.get_toc_for(filename))['fragment'], + toc = self.render_partial(self.env.get_toc_for(docname))['fragment'], # only display a TOC if there's more than one item to show - display_toc = (self.env.toc_num_entries[filename] > 1), + display_toc = (self.env.toc_num_entries[docname] > 1), parents = parents, prev = prev, next = next, ) - self.index_page(pagename, doctree, title) - self.handle_page(pagename, context) + self.index_page(docname, doctree, title) + self.handle_page(docname, ctx) def finish(self): self.info(bold('writing additional files...')) @@ -369,7 +381,7 @@ # the global module index # the sorted list of all modules, for the global module index - modules = sorted(((mn, (self.get_relative_uri('modindex.rst', fn) + + modules = sorted(((mn, (self.get_relative_uri('modindex', fn) + '#module-' + mn, sy, pl, dep)) for (mn, (fn, sy, pl, dep)) in self.env.modules.iteritems()), key=lambda x: x[0].lower()) @@ -442,24 +454,25 @@ # --------- these are overwritten by the Web builder - def get_target_uri(self, source_filename, typ=None): - return source_filename[:-4] + '.html' + def get_target_uri(self, docname, typ=None): + return docname + '.html' - def get_outdated_files(self): - for filename in get_matching_files( - self.srcdir, '*.rst', exclude=set(self.config.unused_files)): + def get_outdated_docs(self): + for docname in get_matching_docs( + self.srcdir, self.config.source_suffix, + exclude=set(self.config.unused_files)): + targetname = self.env.doc2path(docname, self.outdir, '.html') try: - rstname = path.join(self.outdir, os_path(filename)) - targetmtime = path.getmtime(rstname[:-4] + '.html') + targetmtime = path.getmtime(targetname) except: targetmtime = 0 - if filename not in self.env.all_files: - yield filename - elif path.getmtime(path.join(self.srcdir, os_path(filename))) > targetmtime: - yield filename + if docname not in self.env.all_docs: + yield docname + elif path.getmtime(self.env.doc2path(docname)) > targetmtime: + yield docname - def load_indexer(self, filenames): + def load_indexer(self, docnames): try: f = open(path.join(self.outdir, 'searchindex.json'), 'r') try: @@ -469,7 +482,7 @@ except (IOError, OSError): pass # delete all entries for files that will be rebuilt - self.indexer.prune([fn[:-4] for fn in set(self.env.all_files) - set(filenames)]) + self.indexer.prune(set(self.env.all_docs) - set(docnames)) def index_page(self, pagename, doctree, title): # only index pages with title @@ -481,12 +494,12 @@ ctx['current_page_name'] = pagename def pathto(otheruri, resource=False, - baseuri=self.get_target_uri(pagename+'.rst')): + baseuri=self.get_target_uri(pagename)): if not resource: - otheruri = self.get_target_uri(otheruri+'.rst') + otheruri = self.get_target_uri(otheruri) return relative_uri(baseuri, otheruri) ctx['pathto'] = pathto - ctx['hasdoc'] = lambda name: name+'.rst' in self.env.all_files + ctx['hasdoc'] = lambda name: name in self.env.all_docs sidebarfile = self.config.html_sidebars.get(pagename) if sidebarfile: ctx['customsidebar'] = path.join(self.srcdir, sidebarfile) @@ -505,12 +518,13 @@ self.warn("Error writing file %s: %s" % (outfilename, err)) if self.copysource and ctx.get('sourcename'): # copy the source file for the "show source" link - shutil.copyfile(path.join(self.srcdir, os_path(pagename+'.rst')), - path.join(self.outdir, os_path(ctx['sourcename']))) + source_name = path.join(self.outdir, '_sources', os_path(ctx['sourcename'])) + ensuredir(path.dirname(source_name)) + shutil.copyfile(self.env.doc2path(pagename), source_name) def handle_finish(self): self.info(bold('dumping search index...')) - self.indexer.prune([fn[:-4] for fn in self.env.all_files]) + self.indexer.prune(self.env.all_docs) f = open(path.join(self.outdir, 'searchindex.json'), 'w') try: self.indexer.dump(f, 'json') @@ -525,29 +539,28 @@ name = 'web' def init(self): - # Nothing to do here. - pass + self.init_translator_class() - def get_outdated_files(self): - for filename in get_matching_files( - self.srcdir, '*.rst', exclude=set(self.config.unused_files)): + def get_outdated_docs(self): + for docname in get_matching_docs( + self.srcdir, self.config.source_suffix, + exclude=set(self.config.unused_files)): + targetname = self.env.doc2path(docname, self.outdir, '.fpickle') try: - targetmtime = path.getmtime( - path.join(self.outdir, os_path(filename)[:-4] + '.fpickle')) + targetmtime = path.getmtime(targetname) except: targetmtime = 0 - if path.getmtime(path.join(self.srcdir, - os_path(filename))) > targetmtime: - yield filename + if path.getmtime(self.env.doc2path(docname)) > targetmtime: + yield docname - def get_target_uri(self, source_filename, typ=None): - if source_filename == 'index.rst': + def get_target_uri(self, docname, typ=None): + if docname == 'index': return '' - if source_filename.endswith(SEP+'index.rst'): - return source_filename[:-9] # up to sep - return source_filename[:-4] + SEP + if docname.endswith(SEP + 'index'): + return docname[:-5] # up to sep + return docname + SEP - def load_indexer(self, filenames): + def load_indexer(self, docnames): try: f = open(path.join(self.outdir, 'searchindex.pickle'), 'r') try: @@ -557,32 +570,32 @@ except (IOError, OSError): pass # delete all entries for files that will be rebuilt - self.indexer.prune(set(self.env.all_files) - set(filenames)) + self.indexer.prune(set(self.env.all_docs) - set(docnames)) def index_page(self, pagename, doctree, title): # only index pages with title if self.indexer is not None and title: - self.indexer.feed(pagename+'.rst', title, doctree) + self.indexer.feed(pagename, title, doctree) - def handle_page(self, pagename, context, templatename='page.html'): - context['current_page_name'] = pagename + def handle_page(self, pagename, ctx, templatename='page.html'): + ctx['current_page_name'] = pagename sidebarfile = self.config.html_sidebars.get(pagename, '') if sidebarfile: - context['customsidebar'] = path.join(self.srcdir, sidebarfile) + ctx['customsidebar'] = path.join(self.srcdir, sidebarfile) outfilename = path.join(self.outdir, os_path(pagename) + '.fpickle') ensuredir(path.dirname(outfilename)) f = open(outfilename, 'wb') try: - pickle.dump(context, f, 2) + pickle.dump(ctx, f, 2) finally: f.close() # if there is a source file, copy the source file for the "show source" link - if context.get('sourcename'): + if ctx.get('sourcename'): source_name = path.join(self.outdir, 'sources', - os_path(context['sourcename'])) + os_path(ctx['sourcename'])) ensuredir(path.dirname(source_name)) - shutil.copyfile(path.join(self.srcdir, os_path(pagename)+'.rst'), source_name) + shutil.copyfile(self.env.doc2path(pagename), source_name) def handle_finish(self): # dump the global context @@ -594,7 +607,7 @@ f.close() self.info(bold('dumping search index...')) - self.indexer.prune(self.env.all_files) + self.indexer.prune(self.env.all_docs) f = open(path.join(self.outdir, 'searchindex.pickle'), 'wb') try: self.indexer.dump(f, 'pickle') @@ -636,31 +649,41 @@ name = 'latex' def init(self): - self.filenames = [] - self.document_data = map(list, self.config.latex_documents) + self.docnames = [] + self.document_data = [] - # assign subdirs to titles - self.titles = [] - for entry in self.document_data: - # replace version with real version - sourcename = entry[0] - if sourcename.endswith('/index.rst'): - sourcename = sourcename[:-9] - self.titles.append((sourcename, entry[2])) - - def get_outdated_files(self): + def get_outdated_docs(self): return 'all documents' # for now - def get_target_uri(self, source_filename, typ=None): + def get_target_uri(self, docname, typ=None): if typ == 'token': # token references are always inside production lists and must be # replaced by \token{} in LaTeX return '@token' - if source_filename not in self.filenames: + if docname not in self.docnames: raise NoUri else: return '' + def init_document_data(self): + preliminary_document_data = map(list, self.config.latex_documents) + if not preliminary_document_data: + self.warn('No "latex_documents" config value found; no documents ' + 'will be written.') + return + # assign subdirs to titles + self.titles = [] + for entry in preliminary_document_data: + docname = entry[0] + if docname not in self.env.all_docs: + self.warn('"latex_documents" config value references unknown ' + 'document %s' % docname) + continue + self.document_data.append(entry) + if docname.endswith(SEP+'index'): + docname = docname[:-5] + self.titles.append((docname, entry[2])) + def write(self, *ignored): # first, assemble the "appendix" docs that are in every PDF appendices = [] @@ -672,43 +695,40 @@ defaults=self.env.settings, components=(docwriter,)).get_default_values() - if not self.document_data: - self.warn('No "latex_documents" config setting found; no documents ' - 'will be written.') + self.init_document_data() - for sourcename, targetname, title, author, docclass in self.document_data: + for docname, targetname, title, author, docclass in self.document_data: destination = FileOutput( destination_path=path.join(self.outdir, targetname), encoding='utf-8') self.info("processing " + targetname + "... ", nonl=1) doctree = self.assemble_doctree( - sourcename, appendices=(docclass == 'manual') and appendices or []) + docname, appendices=(docclass == 'manual') and appendices or []) self.info("writing... ", nonl=1) doctree.settings = docsettings doctree.settings.author = author - doctree.settings.filename = sourcename + doctree.settings.docname = docname doctree.settings.docclass = docclass docwriter.write(doctree, destination) self.info("done") def assemble_doctree(self, indexfile, appendices): - self.filenames = set([indexfile, 'glossary.rst', 'about.rst', - 'license.rst', 'copyright.rst']) - self.info(green(indexfile) + " ", nonl=1) - def process_tree(filename, tree): + self.docnames = set([indexfile] + appendices) + self.info(darkgreen(indexfile) + " ", nonl=1) + def process_tree(docname, tree): tree = tree.deepcopy() for toctreenode in tree.traverse(addnodes.toctree): newnodes = [] includefiles = map(str, toctreenode['includefiles']) for includefile in includefiles: try: - self.info(green(includefile) + " ", nonl=1) + self.info(darkgreen(includefile) + " ", nonl=1) subtree = process_tree(includefile, self.env.get_doctree(includefile)) - self.filenames.add(includefile) + self.docnames.add(includefile) except: self.warn('%s: toctree contains ref to nonexisting file %r' % - (filename, includefile)) + (docname, includefile)) else: newnodes.extend(subtree.children) toctreenode.parent.replace(toctreenode, newnodes) @@ -721,11 +741,11 @@ # resolve :ref:s to distant tex files -- we can't add a cross-reference, # but append the document name for pendingnode in largetree.traverse(addnodes.pending_xref): - filename = pendingnode['reffilename'] + docname = pendingnode['refdocname'] sectname = pendingnode['refsectname'] newnodes = [nodes.emphasis(sectname, sectname)] for subdir, title in self.titles: - if filename.startswith(subdir): + if docname.startswith(subdir): newnodes.append(nodes.Text(' (in ', ' (in ')) newnodes.append(nodes.emphasis(title, title)) newnodes.append(nodes.Text(')', ')')) @@ -756,7 +776,7 @@ self.vtemplate = self.get_template('changes/versionchanges.html') self.stemplate = self.get_template('changes/rstsource.html') - def get_outdated_files(self): + def get_outdated_docs(self): return self.outdir typemap = { @@ -771,18 +791,18 @@ apichanges = [] otherchanges = {} self.info(bold('writing summary file...')) - for type, filename, lineno, module, descname, content in \ + for type, docname, lineno, module, descname, content in \ self.env.versionchanges[version]: ttext = self.typemap[type] context = content.replace('\n', ' ') - if descname and filename.startswith('c-api'): + if descname and docname.startswith('c-api'): if not descname: continue if context: entry = '%s: %s: %s' % (descname, ttext, context) else: entry = '%s: %s.' % (descname, ttext) - apichanges.append((entry, filename, lineno)) + apichanges.append((entry, docname, lineno)) elif descname or module: if not module: module = 'Builtins' @@ -792,14 +812,14 @@ entry = '%s: %s: %s' % (descname, ttext, context) else: entry = '%s: %s.' % (descname, ttext) - libchanges.setdefault(module, []).append((entry, filename, lineno)) + libchanges.setdefault(module, []).append((entry, docname, lineno)) else: if not context: continue entry = '%s: %s' % (ttext.capitalize(), context) - title = self.env.titles[filename].astext() - otherchanges.setdefault((filename, title), []).append( - (entry, filename, lineno)) + title = self.env.titles[docname].astext() + otherchanges.setdefault((docname, title), []).append( + (entry, docname, lineno)) ctx = { 'project': self.config.project, @@ -832,15 +852,15 @@ return line self.info(bold('copying source files...')) - for filename in self.env.all_files: - f = open(path.join(self.srcdir, os_path(filename))) + for docname in self.env.all_docs: + f = open(self.env.doc2path(docname)) lines = f.readlines() - targetfn = path.join(self.outdir, 'rst', os_path(filename)) + '.html' + targetfn = path.join(self.outdir, 'rst', os_path(docname)) + '.html' ensuredir(path.dirname(targetfn)) f = codecs.open(targetfn, 'w', 'utf8') try: text = ''.join(hl(i+1, line) for (i, line) in enumerate(lines)) - ctx = {'filename': filename, 'text': text} + ctx = {'filename': self.env.doc2path(docname, None), 'text': text} f.write(self.stemplate.render(ctx)) finally: f.close() @@ -873,25 +893,25 @@ # create output file open(path.join(self.outdir, 'output.txt'), 'w').close() - def get_target_uri(self, source_filename, typ=None): + def get_target_uri(self, docname, typ=None): return '' - def get_outdated_files(self): - return self.env.all_files + def get_outdated_docs(self): + return self.env.all_docs - def prepare_writing(self, filenames): + def prepare_writing(self, docnames): return - def write_file(self, filename, doctree): + def write_doc(self, docname, doctree): self.info() for node in doctree.traverse(nodes.reference): try: - self.check(node, filename) + self.check(node, docname) except KeyError: continue return - def check(self, node, filename): + def check(self, node, docname): uri = node['refuri'] if '#' in uri: @@ -920,23 +940,24 @@ elif r == 2: self.info(' - ' + red('broken: ') + s) self.broken[uri] = (r, s) - self.write_entry('broken', filename, lineno, uri + ': ' + s) + self.write_entry('broken', docname, lineno, uri + ': ' + s) else: self.info(' - ' + purple('redirected') + ' to ' + s) self.redirected[uri] = (r, s) - self.write_entry('redirected', filename, lineno, uri + ' to ' + s) + self.write_entry('redirected', docname, lineno, uri + ' to ' + s) elif len(uri) == 0 or uri[0:7] == 'mailto:' or uri[0:4] == 'ftp:': return else: self.info(uri + ' - ' + red('malformed!')) - self.write_entry('malformed', filename, lineno, uri) + self.write_entry('malformed', docname, lineno, uri) return - def write_entry(self, what, filename, line, uri): + def write_entry(self, what, docname, line, uri): output = open(path.join(self.outdir, 'output.txt'), 'a') - output.write("%s:%s [%s] %s\n" % (filename, line, what, uri)) + output.write("%s:%s [%s] %s\n" % (self.env.doc2path(docname, None), + line, what, uri)) output.close() def resolve(self, uri): Modified: doctools/trunk/sphinx/config.py ============================================================================== --- doctools/trunk/sphinx/config.py (original) +++ doctools/trunk/sphinx/config.py Fri Feb 1 21:44:17 2008 @@ -33,6 +33,8 @@ extensions = ([], True), # general reading options + master_doc = ('contents', True), + source_suffix = ('.rst', True), unused_files = ([], True), add_function_parentheses = (True, True), add_module_names = (True, True), @@ -44,6 +46,7 @@ html_index = ('', False), html_sidebars = ({}, False), html_additional_pages = ({}, False), + html_copy_source = (True, False), # HTML help options htmlhelp_basename = ('pydoc', False), Modified: doctools/trunk/sphinx/directives.py ============================================================================== --- doctools/trunk/sphinx/directives.py (original) +++ doctools/trunk/sphinx/directives.py Fri Feb 1 21:44:17 2008 @@ -539,15 +539,28 @@ def toctree_directive(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): env = state.document.settings.env - dirname = posixpath.dirname(env.filename) + suffix = env.config.source_suffix + dirname = posixpath.dirname(env.docname) + ret = [] subnode = addnodes.toctree() - includefiles = filter(None, content) - # absolutize filenames - includefiles = [posixpath.normpath(posixpath.join(dirname, x)) for x in includefiles] + includefiles = [] + for docname in content: + if not docname: + continue + # absolutize filenames, remove suffixes + if docname.endswith(suffix): + docname = docname[:-len(suffix)] + docname = posixpath.normpath(posixpath.join(dirname, docname)) + if docname not in env.found_docs: + ret.append(state.document.reporter.warning( + 'toctree references unknown document %s' % docname, line=lineno)) + else: + includefiles.append(docname) subnode['includefiles'] = includefiles subnode['maxdepth'] = options.get('maxdepth', -1) - return [subnode] + ret.append(subnode) + return ret toctree_directive.content = 1 toctree_directive.options = {'maxdepth': int} Modified: doctools/trunk/sphinx/environment.py ============================================================================== --- doctools/trunk/sphinx/environment.py (original) +++ doctools/trunk/sphinx/environment.py Fri Feb 1 21:44:17 2008 @@ -43,7 +43,7 @@ Body.enum.converters['upperroman'] = lambda x: None from sphinx import addnodes -from sphinx.util import get_matching_files, os_path, SEP +from sphinx.util import get_matching_docs, SEP default_settings = { 'embed_stylesheet': False, @@ -56,7 +56,7 @@ # This is increased every time a new environment attribute is added # to properly invalidate pickle files. -ENV_VERSION = 15 +ENV_VERSION = 16 def walk_depth(node, depth, maxdepth): @@ -79,8 +79,11 @@ class RedirStream(object): - def __init__(self, write): - self.write = write + def __init__(self, writefunc): + self.writefunc = writefunc + def write(self, text): + if text.strip(): + self.writefunc(text) class NoUri(Exception): @@ -183,10 +186,10 @@ # --------- ENVIRONMENT INITIALIZATION ------------------------------------- - def __init__(self, srcdir, doctreedir): + def __init__(self, srcdir, doctreedir, config): self.doctreedir = doctreedir self.srcdir = srcdir - self.config = None + self.config = config # the docutils settings for building self.settings = default_settings.copy() @@ -198,41 +201,42 @@ # this is to invalidate old pickles self.version = ENV_VERSION - # Build times -- to determine changed files - # Also use this as an inventory of all existing and built filenames. - # All "filenames" here are /-separated and relative and include '.rst'. - self.all_files = {} # filename -> (mtime, md5sum) at the time of build + # All "docnames" here are /-separated and relative and exclude the source suffix. + + self.found_docs = set() # contains all existing docnames + self.all_docs = {} # docname -> (mtime, md5sum) at the time of build + # contains all built docnames # File metadata - self.metadata = {} # filename -> dict of metadata items + self.metadata = {} # docname -> dict of metadata items # TOC inventory - self.titles = {} # filename -> title node - self.tocs = {} # filename -> table of contents nodetree - self.toc_num_entries = {} # filename -> number of real entries + self.titles = {} # docname -> title node + self.tocs = {} # docname -> table of contents nodetree + self.toc_num_entries = {} # docname -> number of real entries # used to determine when to show the TOC in a sidebar # (don't show if it's only one item) - self.toctree_relations = {} # filename -> ["parent", "previous", "next"] filename + self.toctree_relations = {} # docname -> ["parent", "previous", "next"] docname # for navigating in the toctree - self.files_to_rebuild = {} # filename -> set of files (containing its TOCs) + self.files_to_rebuild = {} # docname -> set of files (containing its TOCs) # to rebuild too # X-ref target inventory - self.descrefs = {} # fullname -> filename, desctype - self.filemodules = {} # filename -> [modules] - self.modules = {} # modname -> filename, synopsis, platform, deprecated - self.labels = {} # labelname -> filename, labelid, sectionname - self.reftargets = {} # (type, name) -> filename, labelid + self.descrefs = {} # fullname -> docname, desctype + self.filemodules = {} # docname -> [modules] + self.modules = {} # modname -> docname, synopsis, platform, deprecated + self.labels = {} # labelname -> docname, labelid, sectionname + self.reftargets = {} # (type, name) -> docname, labelid # where type is term, token, option, envvar # Other inventories - self.indexentries = {} # filename -> list of + self.indexentries = {} # docname -> list of # (type, string, target, aliasname) self.versionchanges = {} # version -> list of - # (type, filename, lineno, module, descname, content) + # (type, docname, lineno, module, descname, content) # These are set while parsing a file - self.filename = None # current file name + self.docname = None # current document name self.currmodule = None # current module name self.currclass = None # current class name self.currdesc = None # current descref name @@ -241,78 +245,95 @@ def set_warnfunc(self, func): self._warnfunc = func - self.settings['warnfunc'] = func + self.settings['warning_stream'] = RedirStream(func) + + def warn(self, docname, msg): + if docname: + self._warnfunc(self.doc2path(docname) + ':: ' + msg) + else: + self._warnfunc('GLOBAL:: ' + msg) - def clear_file(self, filename): + def clear_doc(self, docname): """Remove all traces of a source file in the inventory.""" - if filename in self.all_files: - self.all_files.pop(filename, None) - self.metadata.pop(filename, None) - self.titles.pop(filename, None) - self.tocs.pop(filename, None) - self.toc_num_entries.pop(filename, None) + if docname in self.all_docs: + self.all_docs.pop(docname, None) + self.metadata.pop(docname, None) + self.titles.pop(docname, None) + self.tocs.pop(docname, None) + self.toc_num_entries.pop(docname, None) for subfn, fnset in self.files_to_rebuild.iteritems(): - fnset.discard(filename) + fnset.discard(docname) for fullname, (fn, _) in self.descrefs.items(): - if fn == filename: + if fn == docname: del self.descrefs[fullname] - self.filemodules.pop(filename, None) + self.filemodules.pop(docname, None) for modname, (fn, _, _, _) in self.modules.items(): - if fn == filename: + if fn == docname: del self.modules[modname] for labelname, (fn, _, _) in self.labels.items(): - if fn == filename: + if fn == docname: del self.labels[labelname] for key, (fn, _) in self.reftargets.items(): - if fn == filename: + if fn == docname: del self.reftargets[key] - self.indexentries.pop(filename, None) + self.indexentries.pop(docname, None) for version, changes in self.versionchanges.items(): - new = [change for change in changes if change[1] != filename] + new = [change for change in changes if change[1] != docname] changes[:] = new + def doc2path(self, docname, base=True, suffix=None): + """ + Return the filename for the document name. + If base is True, return absolute path under self.srcdir. + If base is None, return relative path to self.srcdir. + If base is a path string, return absolute path under that. + If suffix is not None, add it instead of config.source_suffix. + """ + suffix = suffix or self.config.source_suffix + if base is True: + return path.join(self.srcdir, docname.replace(SEP, path.sep)) + suffix + elif base is None: + return docname.replace(SEP, path.sep) + suffix + else: + return path.join(base, docname.replace(SEP, path.sep)) + suffix + def get_outdated_files(self, config, config_changed): """ - Return (added, changed, removed) iterables. + Return (added, changed, removed) sets. """ - all_source_files = list(get_matching_files( - self.srcdir, '*.rst', exclude=set(config.unused_files))) + self.found_docs = set(get_matching_docs(self.srcdir, config.source_suffix, + exclude=set(config.unused_files))) # clear all files no longer present - removed = set(self.all_files) - set(all_source_files) + removed = set(self.all_docs) - self.found_docs - added = [] - changed = [] + added = set() + changed = set() if config_changed: # config values affect e.g. substitutions - added = all_source_files + added = self.found_docs else: - for filename in all_source_files: - if filename not in self.all_files: - added.append(filename) + for docname in self.found_docs: + if docname not in self.all_docs: + added.add(docname) else: # if the doctree file is not there, rebuild - if not path.isfile(path.join(self.doctreedir, - os_path(filename)[:-3] + 'doctree')): - changed.append(filename) + if not path.isfile(self.doc2path(docname, self.doctreedir, '.doctree')): + changed.add(docname) continue - mtime, md5sum = self.all_files[filename] - newmtime = path.getmtime(path.join(self.srcdir, os_path(filename))) + mtime, md5sum = self.all_docs[docname] + newmtime = path.getmtime(self.doc2path(docname)) if newmtime == mtime: continue - # check the MD5 - #with file(path.join(self.srcdir, filename), 'rb') as f: - # newmd5sum = md5(f.read()).digest() - #if newmd5sum != md5sum: - changed.append(filename) + changed.add(docname) return added, changed, removed def update(self, config, app=None): """(Re-)read all files new or changed since last update. Yields a summary - and then filenames as it processes them. Store all environment filenames + and then docnames as it processes them. Store all environment docnames in the canonical format (ie using SEP as a separator in place of os.path.sep).""" config_changed = False @@ -338,36 +359,36 @@ self.config = config # clear all files no longer present - for filename in removed: - self.clear_file(filename) + for docname in removed: + self.clear_doc(docname) # read all new and changed files - for filename in added + changed: - yield filename - self.read_file(filename, app=app) + for docname in sorted(added | changed): + yield docname + self.read_doc(docname, app=app) - if 'contents.rst' not in self.all_files: - self._warnfunc('no master file contents.rst found') + if config.master_doc not in self.all_docs: + self.warn(None, 'no master file %s found' % self.doc2path(config.master_doc)) # --------- SINGLE FILE BUILDING ------------------------------------------- - def read_file(self, filename, src_path=None, save_parsed=True, app=None): + def read_doc(self, docname, src_path=None, save_parsed=True, app=None): """Parse a file and add/update inventory entries for the doctree. If srcpath is given, read from a different source file.""" # remove all inventory entries for that file - self.clear_file(filename) + self.clear_doc(docname) if src_path is None: - src_path = path.join(self.srcdir, os_path(filename)) + src_path = self.doc2path(docname) - self.filename = filename + self.docname = docname doctree = publish_doctree(None, src_path, FileInput, settings_overrides=self.settings, reader=MyStandaloneReader()) - self.process_metadata(filename, doctree) - self.create_title_from(filename, doctree) - self.note_labels_from(filename, doctree) - self.build_toc_from(filename, doctree) + self.process_metadata(docname, doctree) + self.create_title_from(docname, doctree) + self.note_labels_from(docname, doctree) + self.build_toc_from(docname, doctree) # calculate the MD5 of the file at time of build f = open(src_path, 'rb') @@ -375,7 +396,7 @@ md5sum = md5(f.read()).digest() finally: f.close() - self.all_files[filename] = (path.getmtime(src_path), md5sum) + self.all_docs[docname] = (path.getmtime(src_path), md5sum) if app: app.emit('doctree-read', doctree) @@ -383,11 +404,11 @@ # make it picklable doctree.reporter = None doctree.transformer = None + doctree.settings.warning_stream = None doctree.settings.env = None - doctree.settings.warnfunc = None # cleanup - self.filename = None + self.docname = None self.currmodule = None self.currclass = None self.indexnum = 0 @@ -395,8 +416,7 @@ if save_parsed: # save the parsed doctree - doctree_filename = path.join(self.doctreedir, - os_path(filename)[:-3] + 'doctree') + doctree_filename = self.doc2path(docname, self.doctreedir, '.doctree') dirname = path.dirname(doctree_filename) if not path.isdir(dirname): os.makedirs(dirname) @@ -408,11 +428,11 @@ else: return doctree - def process_metadata(self, filename, doctree): + def process_metadata(self, docname, doctree): """ Process the docinfo part of the doctree as metadata. """ - self.metadata[filename] = md = {} + self.metadata[docname] = md = {} docinfo = doctree[0] if docinfo.__class__ is not nodes.docinfo: # nothing to see here @@ -426,7 +446,7 @@ md[name.astext()] = body.astext() del doctree[0] - def create_title_from(self, filename, document): + def create_title_from(self, docname, document): """ Add a title node to the document (just copy the first section title), and store that title in the environment. @@ -436,10 +456,10 @@ visitor = MyContentsFilter(document) node[0].walkabout(visitor) titlenode += visitor.get_entry_text() - self.titles[filename] = titlenode + self.titles[docname] = titlenode return - def note_labels_from(self, filename, document): + def note_labels_from(self, docname, document): for name, explicit in document.nametypes.iteritems(): if not explicit: continue @@ -450,27 +470,27 @@ continue sectname = node[0].astext() # node[0] == title node if name in self.labels: - self._warnfunc('duplicate label %s, ' % name + - 'in %s and %s' % (self.labels[name][0], filename)) - self.labels[name] = filename, labelid, sectname + self.warn(docname, 'duplicate label %s, ' % name + + 'other instance in %s' % self.doc2path(self.labels[name][0])) + self.labels[name] = docname, labelid, sectname - def note_toctree(self, filename, toctreenode): + def note_toctree(self, docname, toctreenode): """Note a TOC tree directive in a document and gather information about file relations from it.""" includefiles = toctreenode['includefiles'] includefiles_len = len(includefiles) for i, includefile in enumerate(includefiles): # the "previous" file for the first toctree item is the parent - previous = i > 0 and includefiles[i-1] or filename + previous = i > 0 and includefiles[i-1] or docname # the "next" file for the last toctree item is the parent again - next = i < includefiles_len-1 and includefiles[i+1] or filename - self.toctree_relations[includefile] = [filename, previous, next] + next = i < includefiles_len-1 and includefiles[i+1] or docname + self.toctree_relations[includefile] = [docname, previous, next] # note that if the included file is rebuilt, this one must be # too (since the TOC of the included file could have changed) - self.files_to_rebuild.setdefault(includefile, set()).add(filename) + self.files_to_rebuild.setdefault(includefile, set()).add(docname) - def build_toc_from(self, filename, document): + def build_toc_from(self, docname, document): """Build a TOC from the doctree and store it in the inventory.""" numentries = [0] # nonlocal again... @@ -483,7 +503,7 @@ item = subnode.copy() entries.append(item) # do the inventory stuff - self.note_toctree(filename, subnode) + self.note_toctree(docname, subnode) continue if not isinstance(subnode, nodes.section): continue @@ -500,7 +520,7 @@ else: anchorname = '#' + subnode['ids'][0] numentries[0] += 1 - reference = nodes.reference('', '', refuri=filename, + reference = nodes.reference('', '', refuri=docname, anchorname=anchorname, *nodetext) para = addnodes.compact_paragraph('', '', reference) @@ -512,64 +532,66 @@ return [] toc = build_toc(document) if toc: - self.tocs[filename] = toc + self.tocs[docname] = toc else: - self.tocs[filename] = nodes.bullet_list('') - self.toc_num_entries[filename] = numentries[0] + self.tocs[docname] = nodes.bullet_list('') + self.toc_num_entries[docname] = numentries[0] - def get_toc_for(self, filename): + def get_toc_for(self, docname): """Return a TOC nodetree -- for use on the same page only!""" - toc = self.tocs[filename].deepcopy() + toc = self.tocs[docname].deepcopy() for node in toc.traverse(nodes.reference): node['refuri'] = node['anchorname'] return toc # ------- - # these are called from docutils directives and therefore use self.filename + # these are called from docutils directives and therefore use self.docname # def note_descref(self, fullname, desctype): if fullname in self.descrefs: - self._warnfunc('duplicate canonical description name %s, ' % fullname + - 'in %s and %s' % (self.descrefs[fullname][0], self.filename)) - self.descrefs[fullname] = (self.filename, desctype) + self.warn(self.docname, + 'duplicate canonical description name %s, ' % fullname + + 'other instance in %s' % self.doc2path(self.descrefs[fullname][0])) + self.descrefs[fullname] = (self.docname, desctype) def note_module(self, modname, synopsis, platform, deprecated): - self.modules[modname] = (self.filename, synopsis, platform, deprecated) - self.filemodules.setdefault(self.filename, []).append(modname) + self.modules[modname] = (self.docname, synopsis, platform, deprecated) + self.filemodules.setdefault(self.docname, []).append(modname) def note_reftarget(self, type, name, labelid): - self.reftargets[type, name] = (self.filename, labelid) + self.reftargets[type, name] = (self.docname, labelid) def note_index_entry(self, type, string, targetid, aliasname): - self.indexentries.setdefault(self.filename, []).append( + self.indexentries.setdefault(self.docname, []).append( (type, string, targetid, aliasname)) def note_versionchange(self, type, version, node, lineno): self.versionchanges.setdefault(version, []).append( - (type, self.filename, lineno, self.currmodule, self.currdesc, node.astext())) + (type, self.docname, lineno, self.currmodule, self.currdesc, node.astext())) # ------- # --------- RESOLVING REFERENCES AND TOCTREES ------------------------------ - def get_doctree(self, filename): + def get_doctree(self, docname): """Read the doctree for a file from the pickle and return it.""" - doctree_filename = path.join(self.doctreedir, os_path(filename)[:-3] + 'doctree') + doctree_filename = self.doc2path(docname, self.doctreedir, '.doctree') f = open(doctree_filename, 'rb') try: doctree = pickle.load(f) finally: f.close() - doctree.reporter = Reporter(filename, 2, 4, stream=RedirStream(self._warnfunc)) + doctree.reporter = Reporter(self.doc2path(docname), 2, 4, + stream=RedirStream(self._warnfunc)) return doctree - def get_and_resolve_doctree(self, filename, builder, doctree=None): + def get_and_resolve_doctree(self, docname, builder, doctree=None): """Read the doctree from the pickle, resolve cross-references and toctrees and return it.""" if doctree is None: - doctree = self.get_doctree(filename) + doctree = self.get_doctree(docname) # resolve all pending cross-references - self.resolve_references(doctree, filename, builder) + self.resolve_references(doctree, docname, builder) # now, resolve all toctree nodes def _entries_from_toctree(toctreenode): @@ -582,8 +604,8 @@ toc = self.tocs[includefile].deepcopy() except KeyError: # this is raised if the included file does not exist - self._warnfunc('%s: toctree contains ref to nonexisting ' - 'file %r' % (filename, includefile)) + self.warn(docname, 'toctree contains ref to nonexisting ' + 'file %r' % includefile) else: for toctreenode in toc.traverse(addnodes.toctree): toctreenode.parent.replace_self( @@ -607,7 +629,7 @@ if node.hasattr('anchorname'): # a TOC reference node['refuri'] = builder.get_relative_uri( - filename, node['refuri']) + node['anchorname'] + docname, node['refuri']) + node['anchorname'] return doctree @@ -615,7 +637,7 @@ descroles = frozenset(('data', 'exc', 'func', 'class', 'const', 'attr', 'meth', 'cfunc', 'cdata', 'ctype', 'cmacro')) - def resolve_references(self, doctree, docfilename, builder): + def resolve_references(self, doctree, fromdocname, builder): for node in doctree.traverse(addnodes.pending_xref): contnode = node[0].deepcopy() newnode = None @@ -627,70 +649,69 @@ if typ == 'ref': # reference to the named label; the final node will contain the # section name after the label - filename, labelid, sectname = self.labels.get(target, ('','','')) - if not filename: + docname, labelid, sectname = self.labels.get(target, ('','','')) + if not docname: newnode = doctree.reporter.system_message( 2, 'undefined label: %s' % target) - self._warnfunc('%s: undefined label: %s' % (docfilename, target)) + #self.warn(fromdocname, 'undefined label: %s' % target) else: newnode = nodes.reference('', '') innernode = nodes.emphasis(sectname, sectname) - if filename == docfilename: + if docname == fromdocname: newnode['refid'] = labelid else: # set more info in contnode in case the following call # raises NoUri, the builder will have to resolve these contnode = addnodes.pending_xref('') - contnode['reffilename'] = filename + contnode['refdocname'] = docname contnode['refsectname'] = sectname newnode['refuri'] = builder.get_relative_uri( - docfilename, filename) + '#' + labelid + fromdocname, docname) + '#' + labelid newnode.append(innernode) elif typ == 'keyword': # keywords are referenced by named labels - filename, labelid, _ = self.labels.get(target, ('','','')) - if not filename: - self._warnfunc('%s: unknown keyword: %s' % (docfilename, target)) + docname, labelid, _ = self.labels.get(target, ('','','')) + if not docname: + self.warn(fromdocname, 'unknown keyword: %s' % target) newnode = contnode else: newnode = nodes.reference('', '') - if filename == docfilename: + if docname == fromdocname: newnode['refid'] = labelid else: newnode['refuri'] = builder.get_relative_uri( - docfilename, filename) + '#' + labelid + fromdocname, docname) + '#' + labelid newnode.append(contnode) elif typ in ('token', 'term', 'envvar', 'option'): - filename, labelid = self.reftargets.get((typ, target), ('', '')) - if not filename: + docname, labelid = self.reftargets.get((typ, target), ('', '')) + if not docname: if typ == 'term': - self._warnfunc('%s: term not in glossary: %s' % - (docfilename, target)) + self.warn(fromdocname, 'term not in glossary: %s' % target) newnode = contnode else: newnode = nodes.reference('', '') - if filename == docfilename: + if docname == fromdocname: newnode['refid'] = labelid else: newnode['refuri'] = builder.get_relative_uri( - docfilename, filename, typ) + '#' + labelid + fromdocname, docname, typ) + '#' + labelid newnode.append(contnode) elif typ == 'mod': - filename, synopsis, platform, deprecated = \ + docname, synopsis, platform, deprecated = \ self.modules.get(target, ('','','', '')) # just link to an anchor if there are multiple modules in one file # because the anchor is generally below the heading which is ugly # but can't be helped easily anchor = '' - if not filename or filename == docfilename: + if not docname or docname == fromdocname: # don't link to self newnode = contnode else: - if len(self.filemodules[filename]) > 1: + if len(self.filemodules[docname]) > 1: anchor = '#' + 'module-' + target newnode = nodes.reference('', '') newnode['refuri'] = ( - builder.get_relative_uri(docfilename, filename) + anchor) + builder.get_relative_uri(fromdocname, docname) + anchor) newnode['reftitle'] = '%s%s%s' % ( (platform and '(%s) ' % platform), synopsis, (deprecated and ' (deprecated)' or '')) @@ -706,11 +727,11 @@ newnode = contnode else: newnode = nodes.reference('', '') - if desc[0] == docfilename: + if desc[0] == fromdocname: newnode['refid'] = name else: newnode['refuri'] = ( - builder.get_relative_uri(docfilename, desc[0]) + builder.get_relative_uri(fromdocname, desc[0]) + '#' + name) newnode.append(contnode) else: @@ -721,7 +742,7 @@ node.replace_self(newnode) # allow custom references to be resolved - builder.app.emit('doctree-resolved', doctree, docfilename) + builder.app.emit('doctree-resolved', doctree, fromdocname) def create_index(self, builder, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): """Create the real index from the collected index entries.""" @@ -735,7 +756,7 @@ add_entry(subword, '', dic=entry[1]) else: try: - entry[0].append(builder.get_relative_uri('genindex.rst', fn) + entry[0].append(builder.get_relative_uri('genindex', fn) + '#' + tid) except NoUri: pass @@ -766,7 +787,7 @@ add_entry(string, 'built-in function') add_entry('built-in function', string) else: - self._warnfunc("unknown index entry type %r in %s" % (type, fn)) + self.warn(fn, "unknown index entry type %r" % type) newlist = new.items() newlist.sort(key=lambda t: t[0].lower()) @@ -815,12 +836,12 @@ def check_consistency(self): """Do consistency checks.""" - for filename in self.all_files: - if filename not in self.toctree_relations: - if filename == 'contents.rst': + for docname in self.all_docs: + if docname not in self.toctree_relations: + if docname == self.config.master_doc: # the master file is not included anywhere ;) continue - self._warnfunc('%s isn\'t included in any toctree' % filename) + self.warn(docname, 'document isn\'t included in any toctree') # --------- QUERYING ------------------------------------------------------- @@ -879,26 +900,26 @@ Keywords searched are: first modules, then descrefs. Returns: None if nothing found - (type, filename, anchorname) if exact match found - list of (quality, type, filename, anchorname, description) if fuzzy + (type, docname, anchorname) if exact match found + list of (quality, type, docname, anchorname, description) if fuzzy """ if keyword in self.modules: - filename, title, system, deprecated = self.modules[keyword] - return 'module', filename, 'module-' + keyword + docname, title, system, deprecated = self.modules[keyword] + return 'module', docname, 'module-' + keyword if keyword in self.descrefs: - filename, ref_type = self.descrefs[keyword] - return ref_type, filename, keyword + docname, ref_type = self.descrefs[keyword] + return ref_type, docname, keyword # special cases if '.' not in keyword: # exceptions are documented in the exceptions module if 'exceptions.'+keyword in self.descrefs: - filename, ref_type = self.descrefs['exceptions.'+keyword] - return ref_type, filename, 'exceptions.'+keyword + docname, ref_type = self.descrefs['exceptions.'+keyword] + return ref_type, docname, 'exceptions.'+keyword # special methods are documented as object methods if 'object.'+keyword in self.descrefs: - filename, ref_type = self.descrefs['object.'+keyword] - return ref_type, filename, 'object.'+keyword + docname, ref_type = self.descrefs['object.'+keyword] + return ref_type, docname, 'object.'+keyword if avoid_fuzzy: return @@ -919,7 +940,7 @@ yield '.'.join(parts[idx:]) result = [] - for type, filename, title, desc in possibilities(): + for type, docname, title, desc in possibilities(): best_res = 0 for part in dotsearch(title): s.set_seq1(part) @@ -929,16 +950,6 @@ s.ratio() > best_res: best_res = s.ratio() if best_res: - result.append((best_res, type, filename, title, desc)) + result.append((best_res, type, docname, title, desc)) return heapq.nlargest(n, result) - - def get_real_filename(self, filename): - """ - Pass this function a filename without .rst extension to get the real - filename. This also resolves the special `index.rst` files. If the file - does not exist the return value will be `None`. - """ - for rstname in filename + '.rst', filename + SEP + 'index.rst': - if rstname in self.all_files: - return rstname Modified: doctools/trunk/sphinx/htmlhelp.py ============================================================================== --- doctools/trunk/sphinx/htmlhelp.py (original) +++ doctools/trunk/sphinx/htmlhelp.py Fri Feb 1 21:44:17 2008 @@ -149,7 +149,7 @@ f.write('
  • ' + object_sitemap % ('Main page', 'index.html')) f.write('
  • ' + object_sitemap % ('Global Module Index', 'modindex.html')) # the TOC - toc = builder.env.get_and_resolve_doctree('contents.rst', builder) + toc = builder.env.get_and_resolve_doctree(builder.config.master_doc, builder) def write_toc(node, ullevel=0): if isinstance(node, nodes.list_item): f.write('
  • ') Modified: doctools/trunk/sphinx/latexwriter.py ============================================================================== --- doctools/trunk/sphinx/latexwriter.py (original) +++ doctools/trunk/sphinx/latexwriter.py Fri Feb 1 21:44:17 2008 @@ -100,7 +100,7 @@ 'pointsize': builder.config.latex_font_size, 'preamble': builder.config.latex_preamble, 'author': document.settings.author, - 'filename': document.settings.filename, + 'docname': document.settings.docname, 'title': None, # is determined later 'release': builder.config.release, 'date': date, @@ -200,7 +200,7 @@ # the environment already handles this raise nodes.SkipNode elif self.this_is_the_title: - if len(node.children) != 1 and not isinstance(node.children[0], Text): + if len(node.children) != 1 and not isinstance(node.children[0], nodes.Text): self.builder.warn('document title is not a single Text node') self.options['title'] = node.astext() self.this_is_the_title = 0 @@ -731,5 +731,10 @@ def depart_Text(self, node): pass + def visit_system_message(self, node): + pass + def depart_system_message(self, node): + self.body.append('\n') + def unknown_visit(self, node): raise NotImplementedError("Unknown node: " + node.__class__.__name__) Modified: doctools/trunk/sphinx/templates/changes/versionchanges.html ============================================================================== --- doctools/trunk/sphinx/templates/changes/versionchanges.html (original) +++ doctools/trunk/sphinx/templates/changes/versionchanges.html Fri Feb 1 21:44:17 2008 @@ -1,6 +1,6 @@ {% macro entries changes %} - {% endif %} Modified: doctools/trunk/sphinx/util/__init__.py ============================================================================== --- doctools/trunk/sphinx/util/__init__.py (original) +++ doctools/trunk/sphinx/util/__init__.py Fri Feb 1 21:44:17 2008 @@ -22,11 +22,8 @@ # hangover from more *nix-oriented origins. SEP = "/" -def canonical_path(ospath): - return ospath.replace(os.path.sep, SEP) - -def os_path(canpath): - return canpath.replace(SEP, os.path.sep) +def os_path(canonicalpath): + return canonicalpath.replace(SEP, os.path.sep) def relative_uri(base, to): @@ -51,8 +48,12 @@ raise -def get_matching_files(dirname, pattern, exclude=()): - """Get all files matching a pattern in a directory, recursively.""" +def get_matching_docs(dirname, suffix, exclude=()): + """ + Get all file names (without suffix) matching a suffix in a + directory, recursively. + """ + pattern = '*' + suffix # dirname is a normalized absolute path. dirname = path.normpath(path.abspath(dirname)) dirlen = len(dirname) + 1 # exclude slash @@ -65,7 +66,7 @@ qualified_name = path.join(root[dirlen:], sfile) if qualified_name in exclude: continue - yield canonical_path(qualified_name) + yield qualified_name[:-len(suffix)].replace(os.path.sep, SEP) def shorten_result(text='', keywords=[], maxlen=240, fuzz=60): Modified: doctools/trunk/sphinx/web/application.py ============================================================================== --- doctools/trunk/sphinx/web/application.py (original) +++ doctools/trunk/sphinx/web/application.py Fri Feb 1 21:44:17 2008 @@ -225,7 +225,7 @@ builder = MockBuilder() builder.config = env2.config writer = HTMLWriter(builder) - doctree = env2.read_file(page_id+'.rst', pathname, save_parsed=False) + doctree = env2.read_doc(page_id, pathname, save_parsed=False) doctree = env2.get_and_resolve_doctree(page_id+'.rst', builder, doctree) doctree.settings = OptionParser(defaults=env2.settings, components=(writer,)).get_default_values() From python-checkins at python.org Fri Feb 1 21:45:33 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 1 Feb 2008 21:45:33 +0100 (CET) Subject: [Python-checkins] r60510 - python/trunk/Doc/conf.py Message-ID: <20080201204533.E2D591E400A@bag.python.org> Author: georg.brandl Date: Fri Feb 1 21:45:33 2008 New Revision: 60510 Modified: python/trunk/Doc/conf.py Log: Update for latest sphinx latex writer. Modified: python/trunk/Doc/conf.py ============================================================================== --- python/trunk/Doc/conf.py (original) +++ python/trunk/Doc/conf.py Fri Feb 1 21:45:33 2008 @@ -102,29 +102,29 @@ # (source start file, target name, title, author, document class [howto/manual]). _stdauthor = r'Guido van Rossum\\Fred L. Drake, Jr., editor' latex_documents = [ - ('c-api/index.rst', 'c-api.tex', + ('c-api/index', 'c-api.tex', 'The Python/C API', _stdauthor, 'manual'), - ('distutils/index.rst', 'distutils.tex', + ('distutils/index', 'distutils.tex', 'Distributing Python Modules', _stdauthor, 'manual'), - ('documenting/index.rst', 'documenting.tex', + ('documenting/index', 'documenting.tex', 'Documenting Python', 'Georg Brandl', 'manual'), - ('extending/index.rst', 'extending.tex', + ('extending/index', 'extending.tex', 'Extending and Embedding Python', _stdauthor, 'manual'), - ('install/index.rst', 'install.tex', + ('install/index', 'install.tex', 'Installing Python Modules', _stdauthor, 'manual'), - ('library/index.rst', 'library.tex', + ('library/index', 'library.tex', 'The Python Library Reference', _stdauthor, 'manual'), - ('reference/index.rst', 'reference.tex', + ('reference/index', 'reference.tex', 'The Python Language Reference', _stdauthor, 'manual'), - ('tutorial/index.rst', 'tutorial.tex', + ('tutorial/index', 'tutorial.tex', 'Python Tutorial', _stdauthor, 'manual'), - ('using/index.rst', 'using.tex', + ('using/index', 'using.tex', 'Using Python', _stdauthor, 'manual'), - ('whatsnew/' + version + '.rst', 'whatsnew.tex', + ('whatsnew/' + version, 'whatsnew.tex', 'What\'s New in Python', 'A. M. Kuchling', 'howto'), ] # Collect all HOWTOs individually -latex_documents.extend(('howto/' + fn, 'howto-' + fn[:-4] + '.tex', +latex_documents.extend(('howto/' + fn[:-4], 'howto-' + fn[:-4] + '.tex', 'HOWTO', _stdauthor, 'howto') for fn in os.listdir('howto') if fn.endswith('.rst') and fn != 'index.rst') @@ -138,4 +138,4 @@ ''' # Documents to append as an appendix to all manuals. -latex_appendices = ['glossary.rst', 'about.rst', 'license.rst', 'copyright.rst'] +latex_appendices = ['glossary', 'about', 'license', 'copyright'] From buildbot at python.org Fri Feb 1 21:48:05 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 20:48:05 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080201204805.D84661E400A@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/485 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From theller at ctypes.org Fri Feb 1 22:12:01 2008 From: theller at ctypes.org (Thomas Heller) Date: Fri, 01 Feb 2008 22:12:01 +0100 Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c In-Reply-To: <47A3713E.3090009@cheimes.de> References: <20080201184927.46EB21E400A@bag.python.org> <47A3713E.3090009@cheimes.de> Message-ID: Christian Heimes schrieb: > Thomas Heller wrote: >> Hm, what happens if sizeof(pid_t) != sizeof(int) ? > > The problem is discussed in issue #1983. Python may need to get a format > string for pid_t and PyInt_FromPid_t() / PyInt_AsPid_t(). There probably are more int-like types than characters available for format strings, so the approach I would take is the use the 'O&' format and write the conversion function myself. Thomas From g.brandl at gmx.net Fri Feb 1 22:26:03 2008 From: g.brandl at gmx.net (Georg Brandl) Date: Fri, 01 Feb 2008 22:26:03 +0100 Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c In-Reply-To: <47A3713E.3090009@cheimes.de> References: <20080201184927.46EB21E400A@bag.python.org> <47A3713E.3090009@cheimes.de> Message-ID: Christian Heimes schrieb: > Thomas Heller wrote: >> Hm, what happens if sizeof(pid_t) != sizeof(int) ? > > The problem is discussed in issue #1983. Python may need to get a format > string for pid_t and PyInt_FromPid_t() / PyInt_AsPid_t(). I remember that we had similar problems for uid_t and gid_t in the past... Georg -- Thus spake the Lord: Thou shalt indent with four spaces. No more, no less. Four shall be the number of spaces thou shalt indent, and the number of thy indenting shall be four. Eight shalt thou not indent, nor either indent thou two, excepting that thou then proceed to four. Tabs are right out. From python-checkins at python.org Fri Feb 1 22:30:24 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 1 Feb 2008 22:30:24 +0100 (CET) Subject: [Python-checkins] r60511 - in python/trunk: Lib/test/test_builtin.py Objects/floatobject.c Message-ID: <20080201213024.67BA01E400A@bag.python.org> Author: raymond.hettinger Date: Fri Feb 1 22:30:23 2008 New Revision: 60511 Modified: python/trunk/Lib/test/test_builtin.py python/trunk/Objects/floatobject.c Log: Issue #1996: float.as_integer_ratio() should return fraction in lowest terms. Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Feb 1 22:30:23 2008 @@ -689,6 +689,14 @@ self.assertRaises(TypeError, float, Foo4(42)) def test_floatasratio(self): + for f, ratio in [ + (0.875, (7, 8)), + (-0.875, (-7, 8)), + (0.0, (0, 1)), + (11.5, (23, 2)), + ]: + self.assertEqual(f.as_integer_ratio(), ratio) + R = rational.Rational self.assertEqual(R(0, 1), R(*float(0.0).as_integer_ratio())) Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Fri Feb 1 22:30:23 2008 @@ -1154,20 +1154,18 @@ } static PyObject * -float_as_integer_ratio(PyObject *v) +float_as_integer_ratio(PyObject *v, PyObject *unused) { double self; double float_part; int exponent; - int is_negative; - const int chunk_size = 28; + PyObject *prev; - PyObject *py_chunk = NULL; PyObject *py_exponent = NULL; PyObject *numerator = NULL; PyObject *denominator = NULL; PyObject *result_pair = NULL; - PyNumberMethods *long_methods; + PyNumberMethods *long_methods = PyLong_Type.tp_as_number; #define INPLACE_UPDATE(obj, call) \ prev = obj; \ @@ -1189,85 +1187,22 @@ } #endif - if (self == 0) { - numerator = PyInt_FromLong(0); - if (numerator == NULL) goto error; - denominator = PyInt_FromLong(1); - if (denominator == NULL) goto error; - result_pair = PyTuple_Pack(2, numerator, denominator); - /* Hand ownership over to the tuple. If the tuple - wasn't created successfully, we want to delete the - ints anyway. */ - Py_DECREF(numerator); - Py_DECREF(denominator); - return result_pair; - } - - /* XXX: Could perhaps handle FLT_RADIX!=2 by using ilogb and - scalbn, but those may not be in C89. */ PyFPE_START_PROTECT("as_integer_ratio", goto error); - float_part = frexp(self, &exponent); - is_negative = 0; - if (float_part < 0) { - float_part = -float_part; - is_negative = 1; - /* 0.5 <= float_part < 1.0 */ - } + float_part = frexp(self, &exponent); /* self == float_part * 2**exponent exactly */ PyFPE_END_PROTECT(float_part); - /* abs(self) == float_part * 2**exponent exactly */ - - /* Suck up chunk_size bits at a time; 28 is enough so that we - suck up all bits in 2 iterations for all known binary - double-precision formats, and small enough to fit in a - long. */ - numerator = PyLong_FromLong(0); - if (numerator == NULL) goto error; - - long_methods = PyLong_Type.tp_as_number; - - py_chunk = PyLong_FromLong(chunk_size); - if (py_chunk == NULL) goto error; - - while (float_part != 0) { - /* invariant: abs(self) == - (numerator + float_part) * 2**exponent exactly */ - long digit; - PyObject *py_digit; - - PyFPE_START_PROTECT("as_integer_ratio", goto error); - /* Pull chunk_size bits out of float_part, into digits. */ - float_part = ldexp(float_part, chunk_size); - digit = (long)float_part; - float_part -= digit; - /* 0 <= float_part < 1 */ - exponent -= chunk_size; - PyFPE_END_PROTECT(float_part); - - /* Shift digits into numerator. */ - // numerator <<= chunk_size - INPLACE_UPDATE(numerator, - long_methods->nb_lshift(numerator, py_chunk)); - if (numerator == NULL) goto error; - - // numerator |= digit - py_digit = PyLong_FromLong(digit); - if (py_digit == NULL) goto error; - INPLACE_UPDATE(numerator, - long_methods->nb_or(numerator, py_digit)); - Py_DECREF(py_digit); - if (numerator == NULL) goto error; + + while (float_part != floor(float_part)) { + float_part *= 2.0; + exponent--; } + /* Now, self == float_part * 2**exponent exactly and float_part is integral */ - /* Add in the sign bit. */ - if (is_negative) { - INPLACE_UPDATE(numerator, - long_methods->nb_negative(numerator)); - if (numerator == NULL) goto error; - } + numerator = PyLong_FromDouble(float_part); + if (numerator == NULL) goto error; /* now self = numerator * 2**exponent exactly; fold in 2**exponent */ - denominator = PyLong_FromLong(1); - py_exponent = PyLong_FromLong(labs(exponent)); + denominator = PyInt_FromLong(1); + py_exponent = PyInt_FromLong(labs(exponent)); if (py_exponent == NULL) goto error; INPLACE_UPDATE(py_exponent, long_methods->nb_lshift(denominator, py_exponent)); @@ -1289,7 +1224,6 @@ #undef INPLACE_UPDATE error: Py_XDECREF(py_exponent); - Py_XDECREF(py_chunk); Py_XDECREF(denominator); Py_XDECREF(numerator); return result_pair; @@ -1298,17 +1232,16 @@ PyDoc_STRVAR(float_as_integer_ratio_doc, "float.as_integer_ratio() -> (int, int)\n" "\n" -"Returns a pair of integers, not necessarily in lowest terms, whose\n" -"ratio is exactly equal to the original float. This method raises an\n" -"OverflowError on infinities and a ValueError on nans. The resulting\n" -"denominator will be positive.\n" +"Returns a pair of integers, whose ratio is exactly equal to the original\n" +"float and with a positive denominator.\n" +"Raises OverflowError on infinities and a ValueError on nans.\n" "\n" ">>> (10.0).as_integer_ratio()\n" -"(167772160L, 16777216L)\n" +"(10, 1)\n" ">>> (0.0).as_integer_ratio()\n" "(0, 1)\n" ">>> (-.25).as_integer_ratio()\n" -"(-134217728L, 536870912L)"); +"(-1, 4)"); static PyObject * From nnorwitz at gmail.com Fri Feb 1 23:41:33 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 1 Feb 2008 17:41:33 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080201224133.GA6116@python.psfb.org> test_asynchat leaked [91, -3, -2] references, sum=86 test_threadsignals leaked [0, 0, -8] references, sum=-8 test_urllib2_localnet leaked [-128, 3, 126] references, sum=1 From python-checkins at python.org Fri Feb 1 23:15:52 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 1 Feb 2008 23:15:52 +0100 (CET) Subject: [Python-checkins] r60512 - python/trunk/Objects/floatobject.c Message-ID: <20080201221552.7DEAE1E401D@bag.python.org> Author: raymond.hettinger Date: Fri Feb 1 23:15:52 2008 New Revision: 60512 Modified: python/trunk/Objects/floatobject.c Log: Integer ratio should return ints instead of longs whereever possible. Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Fri Feb 1 23:15:52 2008 @@ -1201,8 +1201,8 @@ if (numerator == NULL) goto error; /* now self = numerator * 2**exponent exactly; fold in 2**exponent */ - denominator = PyInt_FromLong(1); - py_exponent = PyInt_FromLong(labs(exponent)); + denominator = PyLong_FromLong(1); + py_exponent = PyLong_FromLong(labs(exponent)); if (py_exponent == NULL) goto error; INPLACE_UPDATE(py_exponent, long_methods->nb_lshift(denominator, py_exponent)); @@ -1219,6 +1219,12 @@ py_exponent = NULL; } + /* Returns ints instead of longs where possible */ + INPLACE_UPDATE(numerator, PyNumber_Int(numerator)); + if (numerator == NULL) goto error; + INPLACE_UPDATE(denominator, PyNumber_Int(denominator)); + if (denominator == NULL) goto error; + result_pair = PyTuple_Pack(2, numerator, denominator); #undef INPLACE_UPDATE From python-checkins at python.org Fri Feb 1 23:22:51 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 1 Feb 2008 23:22:51 +0100 (CET) Subject: [Python-checkins] r60513 - python/trunk/Objects/floatobject.c Message-ID: <20080201222251.2F4F01E400A@bag.python.org> Author: raymond.hettinger Date: Fri Feb 1 23:22:50 2008 New Revision: 60513 Modified: python/trunk/Objects/floatobject.c Log: labs() takes a long for an input. Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Fri Feb 1 23:22:50 2008 @@ -1158,7 +1158,7 @@ { double self; double float_part; - int exponent; + long exponent; PyObject *prev; PyObject *py_exponent = NULL; From python-checkins at python.org Fri Feb 1 23:42:59 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 1 Feb 2008 23:42:59 +0100 (CET) Subject: [Python-checkins] r60514 - python/trunk/Lib/test/test_builtin.py Message-ID: <20080201224259.89B0D1E400A@bag.python.org> Author: raymond.hettinger Date: Fri Feb 1 23:42:59 2008 New Revision: 60514 Modified: python/trunk/Lib/test/test_builtin.py Log: Test round-trip on float.as_integer_ratio() and float.__truediv__(). Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Feb 1 23:42:59 2008 @@ -697,6 +697,12 @@ ]: self.assertEqual(f.as_integer_ratio(), ratio) + for i in range(10000): + f = random.random() + f *= 10 ** random.randint(-100, 100) + n, d = f.as_integer_ratio() + self.assertEqual(float(n).__truediv__(d), f) + R = rational.Rational self.assertEqual(R(0, 1), R(*float(0.0).as_integer_ratio())) From python-checkins at python.org Fri Feb 1 23:58:18 2008 From: python-checkins at python.org (marc-andre.lemburg) Date: Fri, 1 Feb 2008 23:58:18 +0100 (CET) Subject: [Python-checkins] r60515 - python/trunk/Lib/distutils/__init__.py Message-ID: <20080201225818.540781E400A@bag.python.org> Author: marc-andre.lemburg Date: Fri Feb 1 23:58:17 2008 New Revision: 60515 Modified: python/trunk/Lib/distutils/__init__.py Log: Bump distutils version number to match Python version. Modified: python/trunk/Lib/distutils/__init__.py ============================================================================== --- python/trunk/Lib/distutils/__init__.py (original) +++ python/trunk/Lib/distutils/__init__.py Fri Feb 1 23:58:17 2008 @@ -20,4 +20,4 @@ # In general, major and minor version should loosely follow the Python # version number the distutils code was shipped with. # -__version__ = "2.5.1" +__version__ = "2.6.0" From buildbot at python.org Sat Feb 2 00:09:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 23:09:39 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080201230939.AC8481E400A@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/81 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_builtin test_rational ====================================================================== ERROR: test_floatasratio (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_builtin.py", line 698, in test_floatasratio self.assertEqual(f.as_integer_ratio(), ratio) ValueError: outrageous left shift count ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_builtin.py", line 965, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== ERROR: testApproximateFrom (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 204, in testApproximateFrom self.assertEqual(R.from_float(math.pi).approximate(10000), R(355, 113)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testAsContinuedFraction (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 197, in testAsContinuedFraction self.assertEqual(R.from_float(math.pi).as_continued_fraction()[:15], File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testBigComplexComparisons (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 343, in testBigComplexComparisons self.assertFalse(R(10**23) == complex(10**23)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testBigFloatComparisons (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 334, in testBigFloatComparisons self.assertFalse(R(10**23) == float(10**23)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testFromFloat (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 138, in testFromFloat self.assertEquals((0, 1), _components(R.from_float(-0.0))) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testHash (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 363, in testHash self.assertEquals(hash(2.5), hash(R(5, 2))) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 432, in __hash__ if self == float(self): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedEqual (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 348, in testMixedEqual self.assertTrue(0.5 == R(1, 2)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedLess (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 317, in testMixedLess self.assertTrue(R(1, 2) < 0.6) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 482, in __lt__ return a._subtractAndCompareToZero(b, operator.lt) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 466, in _subtractAndCompareToZero b = a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedLessEqual (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_rational.py", line 323, in testMixedLessEqual self.assertTrue(0.5 <= R(1, 2)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 494, in __ge__ return a._subtractAndCompareToZero(b, operator.ge) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 466, in _subtractAndCompareToZero b = a.from_float(b) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 00:12:19 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 2 Feb 2008 00:12:19 +0100 (CET) Subject: [Python-checkins] r60516 - python/trunk/Objects/floatobject.c Message-ID: <20080201231219.C484F1E400A@bag.python.org> Author: raymond.hettinger Date: Sat Feb 2 00:12:19 2008 New Revision: 60516 Modified: python/trunk/Objects/floatobject.c Log: Fix int/long typecase. Add check for non-binary floating point. Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Sat Feb 2 00:12:19 2008 @@ -1158,7 +1158,7 @@ { double self; double float_part; - long exponent; + int exponent; PyObject *prev; PyObject *py_exponent = NULL; @@ -1172,6 +1172,13 @@ obj = call; \ Py_DECREF(prev); \ +#ifdef FLT_RADIX + if (FLT_RADIX != 2) { + /* This routine depends on base-2 floating_point. */ + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } +#endif CONVERT_TO_DOUBLE(v, self); if (Py_IS_INFINITY(self)) { @@ -1202,7 +1209,7 @@ /* now self = numerator * 2**exponent exactly; fold in 2**exponent */ denominator = PyLong_FromLong(1); - py_exponent = PyLong_FromLong(labs(exponent)); + py_exponent = PyLong_FromLong(labs((long)exponent)); if (py_exponent == NULL) goto error; INPLACE_UPDATE(py_exponent, long_methods->nb_lshift(denominator, py_exponent)); From buildbot at python.org Sat Feb 2 00:21:44 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 23:21:44 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian 3.0 Message-ID: <20080201232144.BF6191E401A@bag.python.org> The Buildbot has detected a new failure of sparc Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%203.0/builds/3 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ctypes make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 00:26:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 23:26:57 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080201232657.6B48C1E400A@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1351 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_builtin test_rational ====================================================================== ERROR: test_floatasratio (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_builtin.py", line 698, in test_floatasratio self.assertEqual(f.as_integer_ratio(), ratio) ValueError: outrageous left shift count ====================================================================== FAIL: test_intern (test.test_builtin.BuiltinTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_builtin.py", line 965, in test_intern self.assert_(intern(s) is s) AssertionError ====================================================================== ERROR: testApproximateFrom (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 204, in testApproximateFrom self.assertEqual(R.from_float(math.pi).approximate(10000), R(355, 113)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testAsContinuedFraction (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 197, in testAsContinuedFraction self.assertEqual(R.from_float(math.pi).as_continued_fraction()[:15], File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testBigComplexComparisons (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 343, in testBigComplexComparisons self.assertFalse(R(10**23) == complex(10**23)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testBigFloatComparisons (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 334, in testBigFloatComparisons self.assertFalse(R(10**23) == float(10**23)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testFromFloat (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 138, in testFromFloat self.assertEquals((0, 1), _components(R.from_float(-0.0))) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testHash (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 363, in testHash self.assertEquals(hash(2.5), hash(R(5, 2))) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 432, in __hash__ if self == float(self): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedEqual (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 348, in testMixedEqual self.assertTrue(0.5 == R(1, 2)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 447, in __eq__ return a == a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedLess (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 317, in testMixedLess self.assertTrue(R(1, 2) < 0.6) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 482, in __lt__ return a._subtractAndCompareToZero(b, operator.lt) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 466, in _subtractAndCompareToZero b = a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count ====================================================================== ERROR: testMixedLessEqual (test.test_rational.RationalTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_rational.py", line 323, in testMixedLessEqual self.assertTrue(0.5 <= R(1, 2)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 494, in __ge__ return a._subtractAndCompareToZero(b, operator.ge) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 466, in _subtractAndCompareToZero b = a.from_float(b) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/rational.py", line 112, in from_float return cls(*f.as_integer_ratio()) ValueError: outrageous left shift count make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 00:45:45 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 2 Feb 2008 00:45:45 +0100 (CET) Subject: [Python-checkins] r60517 - python/trunk/Objects/floatobject.c Message-ID: <20080201234545.3B1FA1E4016@bag.python.org> Author: raymond.hettinger Date: Sat Feb 2 00:45:44 2008 New Revision: 60517 Modified: python/trunk/Objects/floatobject.c Log: Add protection from weirdness while scaling the mantissa to an integer. Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Sat Feb 2 00:45:44 2008 @@ -1159,6 +1159,7 @@ double self; double float_part; int exponent; + int i; PyObject *prev; PyObject *py_exponent = NULL; @@ -1198,16 +1199,21 @@ float_part = frexp(self, &exponent); /* self == float_part * 2**exponent exactly */ PyFPE_END_PROTECT(float_part); - while (float_part != floor(float_part)) { + for (i=0; i<300 && float_part != floor(float_part) ; i++) { float_part *= 2.0; exponent--; } - /* Now, self == float_part * 2**exponent exactly and float_part is integral */ + if (i == 300) { + /* Could not convert mantissa to an integer */ + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + /* self == float_part * 2**exponent exactly and float_part is integral */ numerator = PyLong_FromDouble(float_part); if (numerator == NULL) goto error; - /* now self = numerator * 2**exponent exactly; fold in 2**exponent */ + /* fold in 2**exponent */ denominator = PyLong_FromLong(1); py_exponent = PyLong_FromLong(labs((long)exponent)); if (py_exponent == NULL) goto error; @@ -1216,8 +1222,7 @@ if (py_exponent == NULL) goto error; if (exponent > 0) { INPLACE_UPDATE(numerator, - long_methods->nb_multiply(numerator, - py_exponent)); + long_methods->nb_multiply(numerator, py_exponent)); if (numerator == NULL) goto error; } else { From buildbot at python.org Sat Feb 2 00:55:38 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 01 Feb 2008 23:55:38 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080201235539.2136E1E41ED@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/232 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 01:53:47 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 00:53:47 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080202005347.89FCC1E400A@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/32 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 02:08:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 01:08:31 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080202010831.55D681E400B@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/514 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: marc-andre.lemburg,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_xmlrpc Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable sincerely, -The Buildbot From martin at v.loewis.de Sat Feb 2 02:05:01 2008 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Sat, 02 Feb 2008 02:05:01 +0100 Subject: [Python-checkins] r60504 - python/trunk/Modules/posixmodule.c In-Reply-To: References: <20080201184927.46EB21E400A@bag.python.org> <47A3713E.3090009@cheimes.de> Message-ID: <47A3C1BD.7030403@v.loewis.de> > There probably are more int-like types than characters available for format > strings, so the approach I would take is the use the 'O&' format and > write the conversion function myself. I still don't see why any of this is necessary. Can't you just parse it in a Py_LONG_LONG where available, and into an int elsewhere? Then check whether the value is out of range for pid_t, by assigning to pid_t and then comparing. From buildbot at python.org Sat Feb 2 04:38:32 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 03:38:32 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080202033832.D3D551E400A@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/3 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: marc-andre.lemburg,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 06:11:40 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 2 Feb 2008 06:11:40 +0100 (CET) Subject: [Python-checkins] r60518 - python/trunk/Objects/floatobject.c Message-ID: <20080202051140.8D6C81E400A@bag.python.org> Author: raymond.hettinger Date: Sat Feb 2 06:11:40 2008 New Revision: 60518 Modified: python/trunk/Objects/floatobject.c Log: Simpler solution to handling non-IEEE 754 environments. Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Sat Feb 2 06:11:40 2008 @@ -1173,13 +1173,6 @@ obj = call; \ Py_DECREF(prev); \ -#ifdef FLT_RADIX - if (FLT_RADIX != 2) { - /* This routine depends on base-2 floating_point. */ - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; - } -#endif CONVERT_TO_DOUBLE(v, self); if (Py_IS_INFINITY(self)) { @@ -1202,13 +1195,10 @@ for (i=0; i<300 && float_part != floor(float_part) ; i++) { float_part *= 2.0; exponent--; - } - if (i == 300) { - /* Could not convert mantissa to an integer */ - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; } - /* self == float_part * 2**exponent exactly and float_part is integral */ + /* self == float_part * 2**exponent exactly and float_part is integral. + If FLT_RADIX != 2, the 300 steps may leave a tiny fractional part + to be truncated by PyLong_FromDouble(). */ numerator = PyLong_FromDouble(float_part); if (numerator == NULL) goto error; From python-checkins at python.org Sat Feb 2 06:24:44 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 2 Feb 2008 06:24:44 +0100 (CET) Subject: [Python-checkins] r60519 - python/trunk/Modules/mathmodule.c Message-ID: <20080202052444.5186F1E400A@bag.python.org> Author: raymond.hettinger Date: Sat Feb 2 06:24:44 2008 New Revision: 60519 Modified: python/trunk/Modules/mathmodule.c Log: Neaten-up a bit. Modified: python/trunk/Modules/mathmodule.c ============================================================================== --- python/trunk/Modules/mathmodule.c (original) +++ python/trunk/Modules/mathmodule.c Sat Feb 2 06:24:44 2008 @@ -157,17 +157,13 @@ static PyObject * math_trunc(PyObject *self, PyObject *number) { - /* XXX: The py3k branch gets better errors for this by using - _PyType_Lookup(), but since float's mro isn't set in py2.6, - we just use PyObject_CallMethod here. */ return PyObject_CallMethod(number, "__trunc__", NULL); } PyDoc_STRVAR(math_trunc_doc, "trunc(x:Real) -> Integral\n" "\n" -"Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic" -"method."); +"Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic method."); static PyObject * math_frexp(PyObject *self, PyObject *arg) From buildbot at python.org Sat Feb 2 06:39:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 05:39:01 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20080202053901.E56D61E400A@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/1382 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Fehler 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 06:41:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 05:41:10 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080202054111.0E0DA1E400A@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/85 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 07:25:44 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 06:25:44 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080202062545.0D46B1E400A@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2456 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 10:56:20 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 10:56:20 +0100 (CET) Subject: [Python-checkins] r60520 - python/trunk/Doc/library/urllib2.rst Message-ID: <20080202095620.9211F1E401C@bag.python.org> Author: georg.brandl Date: Sat Feb 2 10:56:20 2008 New Revision: 60520 Modified: python/trunk/Doc/library/urllib2.rst Log: Amendments to the urllib2 docs, written for GHOP by Thomas Lamb. Modified: python/trunk/Doc/library/urllib2.rst ============================================================================== --- python/trunk/Doc/library/urllib2.rst (original) +++ python/trunk/Doc/library/urllib2.rst Sat Feb 2 10:56:20 2008 @@ -33,10 +33,12 @@ This function returns a file-like object with two additional methods: - * :meth:`geturl` --- return the URL of the resource retrieved + * :meth:`geturl` --- return the URL of the resource retrieved, commonly used to + determine if a redirect was followed - * :meth:`info` --- return the meta-information of the page, as a dictionary-like - object + * :meth:`info` --- return the meta-information of the page, such as headers, in + the form of an ``httplib.HTTPMessage`` instance + (see `Quick Reference to HTTP Headers `_) Raises :exc:`URLError` on errors. @@ -84,18 +86,32 @@ The handlers raise this exception (or derived exceptions) when they run into a problem. It is a subclass of :exc:`IOError`. + .. attribute:: reason + + The reason for this error. It can be a message string or another exception + instance (:exc:`socket.error` for remote URLs, :exc:`OSError` for local + URLs). + .. exception:: HTTPError - A subclass of :exc:`URLError`, it can also function as a non-exceptional - file-like return value (the same thing that :func:`urlopen` returns). This - is useful when handling exotic HTTP errors, such as requests for - authentication. + Though being an exception (a subclass of :exc:`URLError`), an :exc:`HTTPError` + can also function as a non-exceptional file-like return value (the same thing + that :func:`urlopen` returns). This is useful when handling exotic HTTP + errors, such as requests for authentication. + + .. attribute:: code + + An HTTP status code as defined in `RFC 2616 `_. + This numeric value corresponds to a value found in the dictionary of + codes as found in :attr:`BaseHTTPServer.BaseHTTPRequestHandler.responses`. + + The following classes are provided: -.. class:: Request(url[, data][, headers] [, origin_req_host][, unverifiable]) +.. class:: Request(url[, data][, headers][, origin_req_host][, unverifiable]) This class is an abstraction of a URL request. @@ -110,7 +126,12 @@ returns a string in this format. *headers* should be a dictionary, and will be treated as if :meth:`add_header` - was called with each key and value as arguments. + was called with each key and value as arguments. This is often used to "spoof" + the ``User-Agent`` header, which is used by a browser to identify itself -- + some HTTP servers only allow requests coming from common browsers as opposed + to scripts. For example, Mozilla Firefox may identify itself as ``"Mozilla/5.0 + (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"``, while :mod:`urllib2`'s + default user agent string is ``"Python-urllib/2.6"`` (on Python 2.6). The final two arguments are only of interest for correct handling of third-party HTTP cookies: From nnorwitz at gmail.com Sat Feb 2 11:25:48 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Feb 2008 05:25:48 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080202102548.GA17248@python.psfb.org> test_asynchat leaked [-91, 0, 0] references, sum=-91 test_cmd_line leaked [0, 23, 0] references, sum=23 test_threadedtempfile leaked [0, 70, -70] references, sum=0 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [3, 3, 3] references, sum=9 From python-checkins at python.org Sat Feb 2 11:12:39 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 11:12:39 +0100 (CET) Subject: [Python-checkins] r60521 - python/trunk/Lib/test/test_descr.py Message-ID: <20080202101239.3C6F61E400B@bag.python.org> Author: georg.brandl Date: Sat Feb 2 11:12:36 2008 New Revision: 60521 Modified: python/trunk/Lib/test/test_descr.py Log: Rewrite test_descr as unittest, written for GHOP by Jeff Wheeler. Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Sat Feb 2 11:12:36 2008 @@ -1,4637 +1,4332 @@ -# Test enhancements related to descriptors and new-style classes +import types +import unittest +import warnings + +from copy import deepcopy +from test import test_support + + +class OperatorsTest(unittest.TestCase): + + def __init__(self, *args, **kwargs): + unittest.TestCase.__init__(self, *args, **kwargs) + self.binops = { + 'add': '+', + 'sub': '-', + 'mul': '*', + 'div': '/', + 'divmod': 'divmod', + 'pow': '**', + 'lshift': '<<', + 'rshift': '>>', + 'and': '&', + 'xor': '^', + 'or': '|', + 'cmp': 'cmp', + 'lt': '<', + 'le': '<=', + 'eq': '==', + 'ne': '!=', + 'gt': '>', + 'ge': '>=', + } + + for name, expr in self.binops.items(): + if expr.islower(): + expr = expr + "(a, b)" + else: + expr = 'a %s b' % expr + self.binops[name] = expr + + self.unops = { + 'pos': '+', + 'neg': '-', + 'abs': 'abs', + 'invert': '~', + 'int': 'int', + 'long': 'long', + 'float': 'float', + 'oct': 'oct', + 'hex': 'hex', + } + + for name, expr in self.unops.items(): + if expr.islower(): + expr = expr + "(a)" + else: + expr = '%s a' % expr + self.unops[name] = expr + + def setUp(self): + self.original_filters = warnings.filters[:] + warnings.filterwarnings("ignore", + r'complex divmod\(\), // and % are deprecated$', + DeprecationWarning, r'(|%s)$' % __name__) + + def tearDown(self): + warnings.filters = self.original_filters + + def unop_test(self, a, res, expr="len(a)", meth="__len__"): + d = {'a': a} + self.assertEqual(eval(expr, d), res) + t = type(a) + m = getattr(t, meth) + + # Find method in parent class + while meth not in t.__dict__: + t = t.__bases__[0] + + self.assertEqual(m, t.__dict__[meth]) + self.assertEqual(m(a), res) + bm = getattr(a, meth) + self.assertEqual(bm(), res) + + def binop_test(self, a, b, res, expr="a+b", meth="__add__"): + d = {'a': a, 'b': b} + + # XXX Hack so this passes before 2.3 when -Qnew is specified. + if meth == "__div__" and 1/2 == 0.5: + meth = "__truediv__" + + if meth == '__divmod__': pass + + self.assertEqual(eval(expr, d), res) + t = type(a) + m = getattr(t, meth) + while meth not in t.__dict__: + t = t.__bases__[0] + self.assertEqual(m, t.__dict__[meth]) + self.assertEqual(m(a, b), res) + bm = getattr(a, meth) + self.assertEqual(bm(b), res) + + def ternop_test(self, a, b, c, res, expr="a[b:c]", meth="__getslice__"): + d = {'a': a, 'b': b, 'c': c} + self.assertEqual(eval(expr, d), res) + t = type(a) + m = getattr(t, meth) + while meth not in t.__dict__: + t = t.__bases__[0] + self.assertEqual(m, t.__dict__[meth]) + self.assertEqual(m(a, b, c), res) + bm = getattr(a, meth) + self.assertEqual(bm(b, c), res) + + def setop_test(self, a, b, res, stmt="a+=b", meth="__iadd__"): + d = {'a': deepcopy(a), 'b': b} + exec stmt in d + self.assertEqual(d['a'], res) + t = type(a) + m = getattr(t, meth) + while meth not in t.__dict__: + t = t.__bases__[0] + self.assertEqual(m, t.__dict__[meth]) + d['a'] = deepcopy(a) + m(d['a'], b) + self.assertEqual(d['a'], res) + d['a'] = deepcopy(a) + bm = getattr(d['a'], meth) + bm(b) + self.assertEqual(d['a'], res) + + def set2op_test(self, a, b, c, res, stmt="a[b]=c", meth="__setitem__"): + d = {'a': deepcopy(a), 'b': b, 'c': c} + exec stmt in d + self.assertEqual(d['a'], res) + t = type(a) + m = getattr(t, meth) + while meth not in t.__dict__: + t = t.__bases__[0] + self.assertEqual(m, t.__dict__[meth]) + d['a'] = deepcopy(a) + m(d['a'], b, c) + self.assertEqual(d['a'], res) + d['a'] = deepcopy(a) + bm = getattr(d['a'], meth) + bm(b, c) + self.assertEqual(d['a'], res) + + def set3op_test(self, a, b, c, d, res, stmt="a[b:c]=d", meth="__setslice__"): + dictionary = {'a': deepcopy(a), 'b': b, 'c': c, 'd': d} + exec stmt in dictionary + self.assertEqual(dictionary['a'], res) + t = type(a) + while meth not in t.__dict__: + t = t.__bases__[0] + m = getattr(t, meth) + self.assertEqual(m, t.__dict__[meth]) + dictionary['a'] = deepcopy(a) + m(dictionary['a'], b, c, d) + self.assertEqual(dictionary['a'], res) + dictionary['a'] = deepcopy(a) + bm = getattr(dictionary['a'], meth) + bm(b, c, d) + self.assertEqual(dictionary['a'], res) + + def test_lists(self): + # Testing list operations... + # Asserts are within individual test methods + self.binop_test([1], [2], [1,2], "a+b", "__add__") + self.binop_test([1,2,3], 2, 1, "b in a", "__contains__") + self.binop_test([1,2,3], 4, 0, "b in a", "__contains__") + self.binop_test([1,2,3], 1, 2, "a[b]", "__getitem__") + self.ternop_test([1,2,3], 0, 2, [1,2], "a[b:c]", "__getslice__") + self.setop_test([1], [2], [1,2], "a+=b", "__iadd__") + self.setop_test([1,2], 3, [1,2,1,2,1,2], "a*=b", "__imul__") + self.unop_test([1,2,3], 3, "len(a)", "__len__") + self.binop_test([1,2], 3, [1,2,1,2,1,2], "a*b", "__mul__") + self.binop_test([1,2], 3, [1,2,1,2,1,2], "b*a", "__rmul__") + self.set2op_test([1,2], 1, 3, [1,3], "a[b]=c", "__setitem__") + self.set3op_test([1,2,3,4], 1, 3, [5,6], [1,5,6,4], "a[b:c]=d", + "__setslice__") + + def test_dicts(self): + # Testing dict operations... + self.binop_test({1:2}, {2:1}, -1, "cmp(a,b)", "__cmp__") + self.binop_test({1:2,3:4}, 1, 1, "b in a", "__contains__") + self.binop_test({1:2,3:4}, 2, 0, "b in a", "__contains__") + self.binop_test({1:2,3:4}, 1, 2, "a[b]", "__getitem__") + + d = {1:2, 3:4} + l1 = [] + for i in d.keys(): + l1.append(i) + l = [] + for i in iter(d): + l.append(i) + self.assertEqual(l, l1) + l = [] + for i in d.__iter__(): + l.append(i) + self.assertEqual(l, l1) + l = [] + for i in dict.__iter__(d): + l.append(i) + self.assertEqual(l, l1) + d = {1:2, 3:4} + self.unop_test(d, 2, "len(a)", "__len__") + self.assertEqual(eval(repr(d), {}), d) + self.assertEqual(eval(d.__repr__(), {}), d) + self.set2op_test({1:2,3:4}, 2, 3, {1:2,2:3,3:4}, "a[b]=c", + "__setitem__") + + # Tests for unary and binary operators + def number_operators(self, a, b, skip=[]): + dict = {'a': a, 'b': b} + + for name, expr in self.binops.items(): + if name not in skip: + name = "__%s__" % name + if hasattr(a, name): + res = eval(expr, dict) + self.binop_test(a, b, res, expr, name) + + for name, expr in self.unops.items(): + if name not in skip: + name = "__%s__" % name + if hasattr(a, name): + res = eval(expr, dict) + self.unop_test(a, res, expr, name) + + def test_ints(self): + # Testing int operations... + self.number_operators(100, 3) + # The following crashes in Python 2.2 + self.assertEqual((1).__nonzero__(), 1) + self.assertEqual((0).__nonzero__(), 0) + # This returns 'NotImplemented' in Python 2.2 + class C(int): + def __add__(self, other): + return NotImplemented + self.assertEqual(C(5L), 5) + try: + C() + "" + except TypeError: + pass + else: + self.fail("NotImplemented should have caused TypeError") + import sys + try: + C(sys.maxint+1) + except OverflowError: + pass + else: + self.fail("should have raised OverflowError") + + def test_longs(self): + # Testing long operations... + self.number_operators(100L, 3L) + + def test_floats(self): + # Testing float operations... + self.number_operators(100.0, 3.0) + + def test_complexes(self): + # Testing complex operations... + self.number_operators(100.0j, 3.0j, skip=['lt', 'le', 'gt', 'ge', + 'int', 'long', 'float']) + + class Number(complex): + __slots__ = ['prec'] + def __new__(cls, *args, **kwds): + result = complex.__new__(cls, *args) + result.prec = kwds.get('prec', 12) + return result + def __repr__(self): + prec = self.prec + if self.imag == 0.0: + return "%.*g" % (prec, self.real) + if self.real == 0.0: + return "%.*gj" % (prec, self.imag) + return "(%.*g+%.*gj)" % (prec, self.real, prec, self.imag) + __str__ = __repr__ + + a = Number(3.14, prec=6) + self.assertEqual(repr(a), "3.14") + self.assertEqual(a.prec, 6) + + a = Number(a, prec=2) + self.assertEqual(repr(a), "3.1") + self.assertEqual(a.prec, 2) + + a = Number(234.5) + self.assertEqual(repr(a), "234.5") + self.assertEqual(a.prec, 12) + + def test_spam_lists(self): + # Testing spamlist operations... + import copy, xxsubtype as spam + + def spamlist(l, memo=None): + import xxsubtype as spam + return spam.spamlist(l) + + # This is an ugly hack: + copy._deepcopy_dispatch[spam.spamlist] = spamlist + + self.binop_test(spamlist([1]), spamlist([2]), spamlist([1,2]), "a+b", + "__add__") + self.binop_test(spamlist([1,2,3]), 2, 1, "b in a", "__contains__") + self.binop_test(spamlist([1,2,3]), 4, 0, "b in a", "__contains__") + self.binop_test(spamlist([1,2,3]), 1, 2, "a[b]", "__getitem__") + self.ternop_test(spamlist([1,2,3]), 0, 2, spamlist([1,2]), "a[b:c]", + "__getslice__") + self.setop_test(spamlist([1]), spamlist([2]), spamlist([1,2]), "a+=b", + "__iadd__") + self.setop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*=b", + "__imul__") + self.unop_test(spamlist([1,2,3]), 3, "len(a)", "__len__") + self.binop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*b", + "__mul__") + self.binop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "b*a", + "__rmul__") + self.set2op_test(spamlist([1,2]), 1, 3, spamlist([1,3]), "a[b]=c", + "__setitem__") + self.set3op_test(spamlist([1,2,3,4]), 1, 3, spamlist([5,6]), + spamlist([1,5,6,4]), "a[b:c]=d", "__setslice__") + # Test subclassing + class C(spam.spamlist): + def foo(self): return 1 + a = C() + self.assertEqual(a, []) + self.assertEqual(a.foo(), 1) + a.append(100) + self.assertEqual(a, [100]) + self.assertEqual(a.getstate(), 0) + a.setstate(42) + self.assertEqual(a.getstate(), 42) + + def test_spam_dicts(self): + # Testing spamdict operations... + import copy, xxsubtype as spam + def spamdict(d, memo=None): + import xxsubtype as spam + sd = spam.spamdict() + for k, v in d.items(): + sd[k] = v + return sd + # This is an ugly hack: + copy._deepcopy_dispatch[spam.spamdict] = spamdict + + self.binop_test(spamdict({1:2}), spamdict({2:1}), -1, "cmp(a,b)", + "__cmp__") + self.binop_test(spamdict({1:2,3:4}), 1, 1, "b in a", "__contains__") + self.binop_test(spamdict({1:2,3:4}), 2, 0, "b in a", "__contains__") + self.binop_test(spamdict({1:2,3:4}), 1, 2, "a[b]", "__getitem__") + d = spamdict({1:2,3:4}) + l1 = [] + for i in d.keys(): + l1.append(i) + l = [] + for i in iter(d): + l.append(i) + self.assertEqual(l, l1) + l = [] + for i in d.__iter__(): + l.append(i) + self.assertEqual(l, l1) + l = [] + for i in type(spamdict({})).__iter__(d): + l.append(i) + self.assertEqual(l, l1) + straightd = {1:2, 3:4} + spamd = spamdict(straightd) + self.unop_test(spamd, 2, "len(a)", "__len__") + self.unop_test(spamd, repr(straightd), "repr(a)", "__repr__") + self.set2op_test(spamdict({1:2,3:4}), 2, 3, spamdict({1:2,2:3,3:4}), + "a[b]=c", "__setitem__") + # Test subclassing + class C(spam.spamdict): + def foo(self): return 1 + a = C() + self.assertEqual(a.items(), []) + self.assertEqual(a.foo(), 1) + a['foo'] = 'bar' + self.assertEqual(a.items(), [('foo', 'bar')]) + self.assertEqual(a.getstate(), 0) + a.setstate(100) + self.assertEqual(a.getstate(), 100) + +class ClassPropertiesAndMethods(unittest.TestCase): + + def test_python_dicts(self): + # Testing Python subclass of dict... + self.assert_(issubclass(dict, dict)) + self.assert_(isinstance({}, dict)) + d = dict() + self.assertEqual(d, {}) + self.assert_(d.__class__ is dict) + self.assert_(isinstance(d, dict)) + class C(dict): + state = -1 + def __init__(self_local, *a, **kw): + if a: + self.assertEqual(len(a), 1) + self_local.state = a[0] + if kw: + for k, v in kw.items(): + self_local[v] = k + def __getitem__(self, key): + return self.get(key, 0) + def __setitem__(self_local, key, value): + self.assert_(isinstance(key, type(0))) + dict.__setitem__(self_local, key, value) + def setstate(self, state): + self.state = state + def getstate(self): + return self.state + self.assert_(issubclass(C, dict)) + a1 = C(12) + self.assertEqual(a1.state, 12) + a2 = C(foo=1, bar=2) + self.assertEqual(a2[1] == 'foo' and a2[2], 'bar') + a = C() + self.assertEqual(a.state, -1) + self.assertEqual(a.getstate(), -1) + a.setstate(0) + self.assertEqual(a.state, 0) + self.assertEqual(a.getstate(), 0) + a.setstate(10) + self.assertEqual(a.state, 10) + self.assertEqual(a.getstate(), 10) + self.assertEqual(a[42], 0) + a[42] = 24 + self.assertEqual(a[42], 24) + N = 50 + for i in range(N): + a[i] = C() + for j in range(N): + a[i][j] = i*j + for i in range(N): + for j in range(N): + self.assertEqual(a[i][j], i*j) + + def test_python_lists(self): + # Testing Python subclass of list... + class C(list): + def __getitem__(self, i): + return list.__getitem__(self, i) + 100 + def __getslice__(self, i, j): + return (i, j) + a = C() + a.extend([0,1,2]) + self.assertEqual(a[0], 100) + self.assertEqual(a[1], 101) + self.assertEqual(a[2], 102) + self.assertEqual(a[100:200], (100,200)) + + def test_metaclass(self): + # Testing __metaclass__... + class C: + __metaclass__ = type + def __init__(self): + self.__state = 0 + def getstate(self): + return self.__state + def setstate(self, state): + self.__state = state + a = C() + self.assertEqual(a.getstate(), 0) + a.setstate(10) + self.assertEqual(a.getstate(), 10) + class D: + class __metaclass__(type): + def myself(cls): return cls + self.assertEqual(D.myself(), D) + d = D() + self.assertEqual(d.__class__, D) + class M1(type): + def __new__(cls, name, bases, dict): + dict['__spam__'] = 1 + return type.__new__(cls, name, bases, dict) + class C: + __metaclass__ = M1 + self.assertEqual(C.__spam__, 1) + c = C() + self.assertEqual(c.__spam__, 1) + + class _instance(object): + pass + class M2(object): + @staticmethod + def __new__(cls, name, bases, dict): + self = object.__new__(cls) + self.name = name + self.bases = bases + self.dict = dict + return self + def __call__(self): + it = _instance() + # Early binding of methods + for key in self.dict: + if key.startswith("__"): + continue + setattr(it, key, self.dict[key].__get__(it, self)) + return it + class C: + __metaclass__ = M2 + def spam(self): + return 42 + self.assertEqual(C.name, 'C') + self.assertEqual(C.bases, ()) + self.assert_('spam' in C.dict) + c = C() + self.assertEqual(c.spam(), 42) + + # More metaclass examples + + class autosuper(type): + # Automatically add __super to the class + # This trick only works for dynamic classes + def __new__(metaclass, name, bases, dict): + cls = super(autosuper, metaclass).__new__(metaclass, + name, bases, dict) + # Name mangling for __super removes leading underscores + while name[:1] == "_": + name = name[1:] + if name: + name = "_%s__super" % name + else: + name = "__super" + setattr(cls, name, super(cls)) + return cls + class A: + __metaclass__ = autosuper + def meth(self): + return "A" + class B(A): + def meth(self): + return "B" + self.__super.meth() + class C(A): + def meth(self): + return "C" + self.__super.meth() + class D(C, B): + def meth(self): + return "D" + self.__super.meth() + self.assertEqual(D().meth(), "DCBA") + class E(B, C): + def meth(self): + return "E" + self.__super.meth() + self.assertEqual(E().meth(), "EBCA") + + class autoproperty(type): + # Automatically create property attributes when methods + # named _get_x and/or _set_x are found + def __new__(metaclass, name, bases, dict): + hits = {} + for key, val in dict.iteritems(): + if key.startswith("_get_"): + key = key[5:] + get, set = hits.get(key, (None, None)) + get = val + hits[key] = get, set + elif key.startswith("_set_"): + key = key[5:] + get, set = hits.get(key, (None, None)) + set = val + hits[key] = get, set + for key, (get, set) in hits.iteritems(): + dict[key] = property(get, set) + return super(autoproperty, metaclass).__new__(metaclass, + name, bases, dict) + class A: + __metaclass__ = autoproperty + def _get_x(self): + return -self.__x + def _set_x(self, x): + self.__x = -x + a = A() + self.assert_(not hasattr(a, "x")) + a.x = 12 + self.assertEqual(a.x, 12) + self.assertEqual(a._A__x, -12) + + class multimetaclass(autoproperty, autosuper): + # Merge of multiple cooperating metaclasses + pass + class A: + __metaclass__ = multimetaclass + def _get_x(self): + return "A" + class B(A): + def _get_x(self): + return "B" + self.__super._get_x() + class C(A): + def _get_x(self): + return "C" + self.__super._get_x() + class D(C, B): + def _get_x(self): + return "D" + self.__super._get_x() + self.assertEqual(D().x, "DCBA") + + # Make sure type(x) doesn't call x.__class__.__init__ + class T(type): + counter = 0 + def __init__(self, *args): + T.counter += 1 + class C: + __metaclass__ = T + self.assertEqual(T.counter, 1) + a = C() + self.assertEqual(type(a), C) + self.assertEqual(T.counter, 1) + + class C(object): pass + c = C() + try: c() + except TypeError: pass + else: self.fail("calling object w/o call method should raise " + "TypeError") + + # Testing code to find most derived baseclass + class A(type): + def __new__(*args, **kwargs): + return type.__new__(*args, **kwargs) + + class B(object): + pass + + class C(object): + __metaclass__ = A + + # The most derived metaclass of D is A rather than type. + class D(B, C): + pass + + def test_module_subclasses(self): + # Testing Python subclass of module... + log = [] + import types, sys + MT = type(sys) + class MM(MT): + def __init__(self, name): + MT.__init__(self, name) + def __getattribute__(self, name): + log.append(("getattr", name)) + return MT.__getattribute__(self, name) + def __setattr__(self, name, value): + log.append(("setattr", name, value)) + MT.__setattr__(self, name, value) + def __delattr__(self, name): + log.append(("delattr", name)) + MT.__delattr__(self, name) + a = MM("a") + a.foo = 12 + x = a.foo + del a.foo + self.assertEqual(log, [("setattr", "foo", 12), + ("getattr", "foo"), + ("delattr", "foo")]) + + # http://python.org/sf/1174712 + try: + class Module(types.ModuleType, str): + pass + except TypeError: + pass + else: + self.fail("inheriting from ModuleType and str at the same time " + "should fail") + + def test_multiple_inheritence(self): + # Testing multiple inheritance... + class C(object): + def __init__(self): + self.__state = 0 + def getstate(self): + return self.__state + def setstate(self, state): + self.__state = state + a = C() + self.assertEqual(a.getstate(), 0) + a.setstate(10) + self.assertEqual(a.getstate(), 10) + class D(dict, C): + def __init__(self): + type({}).__init__(self) + C.__init__(self) + d = D() + self.assertEqual(d.keys(), []) + d["hello"] = "world" + self.assertEqual(d.items(), [("hello", "world")]) + self.assertEqual(d["hello"], "world") + self.assertEqual(d.getstate(), 0) + d.setstate(10) + self.assertEqual(d.getstate(), 10) + self.assertEqual(D.__mro__, (D, dict, C, object)) + + # SF bug #442833 + class Node(object): + def __int__(self): + return int(self.foo()) + def foo(self): + return "23" + class Frag(Node, list): + def foo(self): + return "42" + self.assertEqual(Node().__int__(), 23) + self.assertEqual(int(Node()), 23) + self.assertEqual(Frag().__int__(), 42) + self.assertEqual(int(Frag()), 42) + + # MI mixing classic and new-style classes. + + class A: + x = 1 + + class B(A): + pass + + class C(A): + x = 2 + + class D(B, C): + pass + self.assertEqual(D.x, 1) + + # Classic MRO is preserved for a classic base class. + class E(D, object): + pass + self.assertEqual(E.__mro__, (E, D, B, A, C, object)) + self.assertEqual(E.x, 1) + + # But with a mix of classic bases, their MROs are combined using + # new-style MRO. + class F(B, C, object): + pass + self.assertEqual(F.__mro__, (F, B, C, A, object)) + self.assertEqual(F.x, 2) + + # Try something else. + class C: + def cmethod(self): + return "C a" + def all_method(self): + return "C b" + + class M1(C, object): + def m1method(self): + return "M1 a" + def all_method(self): + return "M1 b" + + self.assertEqual(M1.__mro__, (M1, C, object)) + m = M1() + self.assertEqual(m.cmethod(), "C a") + self.assertEqual(m.m1method(), "M1 a") + self.assertEqual(m.all_method(), "M1 b") + + class D(C): + def dmethod(self): + return "D a" + def all_method(self): + return "D b" + + class M2(D, object): + def m2method(self): + return "M2 a" + def all_method(self): + return "M2 b" + + self.assertEqual(M2.__mro__, (M2, D, C, object)) + m = M2() + self.assertEqual(m.cmethod(), "C a") + self.assertEqual(m.dmethod(), "D a") + self.assertEqual(m.m2method(), "M2 a") + self.assertEqual(m.all_method(), "M2 b") + + class M3(M1, M2, object): + def m3method(self): + return "M3 a" + def all_method(self): + return "M3 b" + self.assertEqual(M3.__mro__, (M3, M1, M2, D, C, object)) + m = M3() + self.assertEqual(m.cmethod(), "C a") + self.assertEqual(m.dmethod(), "D a") + self.assertEqual(m.m1method(), "M1 a") + self.assertEqual(m.m2method(), "M2 a") + self.assertEqual(m.m3method(), "M3 a") + self.assertEqual(m.all_method(), "M3 b") + + class Classic: + pass + try: + class New(Classic): + __metaclass__ = type + except TypeError: + pass + else: + self.fail("new class with only classic bases - shouldn't be") + + def test_diamond_inheritence(self): + # Testing multiple inheritance special cases... + class A(object): + def spam(self): return "A" + self.assertEqual(A().spam(), "A") + class B(A): + def boo(self): return "B" + def spam(self): return "B" + self.assertEqual(B().spam(), "B") + self.assertEqual(B().boo(), "B") + class C(A): + def boo(self): return "C" + self.assertEqual(C().spam(), "A") + self.assertEqual(C().boo(), "C") + class D(B, C): pass + self.assertEqual(D().spam(), "B") + self.assertEqual(D().boo(), "B") + self.assertEqual(D.__mro__, (D, B, C, A, object)) + class E(C, B): pass + self.assertEqual(E().spam(), "B") + self.assertEqual(E().boo(), "C") + self.assertEqual(E.__mro__, (E, C, B, A, object)) + # MRO order disagreement + try: + class F(D, E): pass + except TypeError: + pass + else: + self.fail("expected MRO order disagreement (F)") + try: + class G(E, D): pass + except TypeError: + pass + else: + self.fail("expected MRO order disagreement (G)") + + # see thread python-dev/2002-October/029035.html + def test_ex5_from_c3_switch(self): + # Testing ex5 from C3 switch discussion... + class A(object): pass + class B(object): pass + class C(object): pass + class X(A): pass + class Y(A): pass + class Z(X,B,Y,C): pass + self.assertEqual(Z.__mro__, (Z, X, B, Y, A, C, object)) + + # see "A Monotonic Superclass Linearization for Dylan", + # by Kim Barrett et al. (OOPSLA 1996) + def test_monotonicity(self): + # Testing MRO monotonicity... + class Boat(object): pass + class DayBoat(Boat): pass + class WheelBoat(Boat): pass + class EngineLess(DayBoat): pass + class SmallMultihull(DayBoat): pass + class PedalWheelBoat(EngineLess,WheelBoat): pass + class SmallCatamaran(SmallMultihull): pass + class Pedalo(PedalWheelBoat,SmallCatamaran): pass + + self.assertEqual(PedalWheelBoat.__mro__, + (PedalWheelBoat, EngineLess, DayBoat, WheelBoat, Boat, object)) + self.assertEqual(SmallCatamaran.__mro__, + (SmallCatamaran, SmallMultihull, DayBoat, Boat, object)) + self.assertEqual(Pedalo.__mro__, + (Pedalo, PedalWheelBoat, EngineLess, SmallCatamaran, + SmallMultihull, DayBoat, WheelBoat, Boat, object)) + + # see "A Monotonic Superclass Linearization for Dylan", + # by Kim Barrett et al. (OOPSLA 1996) + def test_consistency_with_epg(self): + # Testing consistentcy with EPG... + class Pane(object): pass + class ScrollingMixin(object): pass + class EditingMixin(object): pass + class ScrollablePane(Pane,ScrollingMixin): pass + class EditablePane(Pane,EditingMixin): pass + class EditableScrollablePane(ScrollablePane,EditablePane): pass + + self.assertEqual(EditableScrollablePane.__mro__, + (EditableScrollablePane, ScrollablePane, EditablePane, Pane, + ScrollingMixin, EditingMixin, object)) + + def test_mro_disagreement(self): + # Testing error messages for MRO disagreement... + mro_err_msg = """Cannot create a consistent method resolution +order (MRO) for bases """ + + def raises(exc, expected, callable, *args): + try: + callable(*args) + except exc, msg: + if not str(msg).startswith(expected): + self.fail("Message %r, expected %r" % (str(msg), expected)) + else: + self.fail("Expected %s" % exc) + + class A(object): pass + class B(A): pass + class C(object): pass + + # Test some very simple errors + raises(TypeError, "duplicate base class A", + type, "X", (A, A), {}) + raises(TypeError, mro_err_msg, + type, "X", (A, B), {}) + raises(TypeError, mro_err_msg, + type, "X", (A, C, B), {}) + # Test a slightly more complex error + class GridLayout(object): pass + class HorizontalGrid(GridLayout): pass + class VerticalGrid(GridLayout): pass + class HVGrid(HorizontalGrid, VerticalGrid): pass + class VHGrid(VerticalGrid, HorizontalGrid): pass + raises(TypeError, mro_err_msg, + type, "ConfusedGrid", (HVGrid, VHGrid), {}) + + def test_object_class(self): + # Testing object class... + a = object() + self.assertEqual(a.__class__, object) + self.assertEqual(type(a), object) + b = object() + self.assertNotEqual(a, b) + self.assertFalse(hasattr(a, "foo")) + try: + a.foo = 12 + except (AttributeError, TypeError): + pass + else: + self.fail("object() should not allow setting a foo attribute") + self.assertFalse(hasattr(object(), "__dict__")) + + class Cdict(object): + pass + x = Cdict() + self.assertEqual(x.__dict__, {}) + x.foo = 1 + self.assertEqual(x.foo, 1) + self.assertEqual(x.__dict__, {'foo': 1}) + + def test_slots(self): + # Testing __slots__... + class C0(object): + __slots__ = [] + x = C0() + self.assertFalse(hasattr(x, "__dict__")) + self.assertFalse(hasattr(x, "foo")) + + class C1(object): + __slots__ = ['a'] + x = C1() + self.assertFalse(hasattr(x, "__dict__")) + self.assertFalse(hasattr(x, "a")) + x.a = 1 + self.assertEqual(x.a, 1) + x.a = None + self.assertEqual(x.a, None) + del x.a + self.assertFalse(hasattr(x, "a")) + + class C3(object): + __slots__ = ['a', 'b', 'c'] + x = C3() + self.assertFalse(hasattr(x, "__dict__")) + self.assertFalse(hasattr(x, 'a')) + self.assertFalse(hasattr(x, 'b')) + self.assertFalse(hasattr(x, 'c')) + x.a = 1 + x.b = 2 + x.c = 3 + self.assertEqual(x.a, 1) + self.assertEqual(x.b, 2) + self.assertEqual(x.c, 3) + + class C4(object): + """Validate name mangling""" + __slots__ = ['__a'] + def __init__(self, value): + self.__a = value + def get(self): + return self.__a + x = C4(5) + self.assertFalse(hasattr(x, '__dict__')) + self.assertFalse(hasattr(x, '__a')) + self.assertEqual(x.get(), 5) + try: + x.__a = 6 + except AttributeError: + pass + else: + self.fail("Double underscored names not mangled") + + # Make sure slot names are proper identifiers + try: + class C(object): + __slots__ = [None] + except TypeError: + pass + else: + self.fail("[None] slots not caught") + try: + class C(object): + __slots__ = ["foo bar"] + except TypeError: + pass + else: + self.fail("['foo bar'] slots not caught") + try: + class C(object): + __slots__ = ["foo\0bar"] + except TypeError: + pass + else: + self.fail("['foo\\0bar'] slots not caught") + try: + class C(object): + __slots__ = ["1"] + except TypeError: + pass + else: + self.fail("['1'] slots not caught") + try: + class C(object): + __slots__ = [""] + except TypeError: + pass + else: + self.fail("[''] slots not caught") + class C(object): + __slots__ = ["a", "a_b", "_a", "A0123456789Z"] + # XXX(nnorwitz): was there supposed to be something tested + # from the class above? + + # Test a single string is not expanded as a sequence. + class C(object): + __slots__ = "abc" + c = C() + c.abc = 5 + self.assertEqual(c.abc, 5) + + # Test unicode slot names + try: + unicode + except NameError: + pass + else: + # Test a single unicode string is not expanded as a sequence. + class C(object): + __slots__ = unicode("abc") + c = C() + c.abc = 5 + self.assertEqual(c.abc, 5) + + # _unicode_to_string used to modify slots in certain circumstances + slots = (unicode("foo"), unicode("bar")) + class C(object): + __slots__ = slots + x = C() + x.foo = 5 + self.assertEqual(x.foo, 5) + self.assertEqual(type(slots[0]), unicode) + # this used to leak references + try: + class C(object): + __slots__ = [unichr(128)] + except (TypeError, UnicodeEncodeError): + pass + else: + self.fail("[unichr(128)] slots not caught") + + # Test leaks + class Counted(object): + counter = 0 # counts the number of instances alive + def __init__(self): + Counted.counter += 1 + def __del__(self): + Counted.counter -= 1 + class C(object): + __slots__ = ['a', 'b', 'c'] + x = C() + x.a = Counted() + x.b = Counted() + x.c = Counted() + self.assertEqual(Counted.counter, 3) + del x + self.assertEqual(Counted.counter, 0) + class D(C): + pass + x = D() + x.a = Counted() + x.z = Counted() + self.assertEqual(Counted.counter, 2) + del x + self.assertEqual(Counted.counter, 0) + class E(D): + __slots__ = ['e'] + x = E() + x.a = Counted() + x.z = Counted() + x.e = Counted() + self.assertEqual(Counted.counter, 3) + del x + self.assertEqual(Counted.counter, 0) + + # Test cyclical leaks [SF bug 519621] + class F(object): + __slots__ = ['a', 'b'] + log = [] + s = F() + s.a = [Counted(), s] + self.assertEqual(Counted.counter, 1) + s = None + import gc + gc.collect() + self.assertEqual(Counted.counter, 0) + + # Test lookup leaks [SF bug 572567] + import sys,gc + class G(object): + def __cmp__(self, other): + return 0 + g = G() + orig_objects = len(gc.get_objects()) + for i in xrange(10): + g==g + new_objects = len(gc.get_objects()) + self.assertEqual(orig_objects, new_objects) + class H(object): + __slots__ = ['a', 'b'] + def __init__(self): + self.a = 1 + self.b = 2 + def __del__(self_): + self.assertEqual(self_.a, 1) + self.assertEqual(self_.b, 2) + + save_stderr = sys.stderr + sys.stderr = sys.stdout + h = H() + try: + del h + finally: + sys.stderr = save_stderr + + def test_slots_special(self): + # Testing __dict__ and __weakref__ in __slots__... + class D(object): + __slots__ = ["__dict__"] + a = D() + self.assert_(hasattr(a, "__dict__")) + self.assertFalse(hasattr(a, "__weakref__")) + a.foo = 42 + self.assertEqual(a.__dict__, {"foo": 42}) + + class W(object): + __slots__ = ["__weakref__"] + a = W() + self.assert_(hasattr(a, "__weakref__")) + self.assertFalse(hasattr(a, "__dict__")) + try: + a.foo = 42 + except AttributeError: + pass + else: + self.fail("shouldn't be allowed to set a.foo") + + class C1(W, D): + __slots__ = [] + a = C1() + self.assert_(hasattr(a, "__dict__")) + self.assert_(hasattr(a, "__weakref__")) + a.foo = 42 + self.assertEqual(a.__dict__, {"foo": 42}) + + class C2(D, W): + __slots__ = [] + a = C2() + self.assert_(hasattr(a, "__dict__")) + self.assert_(hasattr(a, "__weakref__")) + a.foo = 42 + self.assertEqual(a.__dict__, {"foo": 42}) + + def test_dynamics(self): + # Testing class attribute propagation... + class D(object): + pass + class E(D): + pass + class F(D): + pass + D.foo = 1 + self.assertEqual(D.foo, 1) + # Test that dynamic attributes are inherited + self.assertEqual(E.foo, 1) + self.assertEqual(F.foo, 1) + # Test dynamic instances + class C(object): + pass + a = C() + self.assertFalse(hasattr(a, "foobar")) + C.foobar = 2 + self.assertEqual(a.foobar, 2) + C.method = lambda self: 42 + self.assertEqual(a.method(), 42) + C.__repr__ = lambda self: "C()" + self.assertEqual(repr(a), "C()") + C.__int__ = lambda self: 100 + self.assertEqual(int(a), 100) + self.assertEqual(a.foobar, 2) + self.assertFalse(hasattr(a, "spam")) + def mygetattr(self, name): + if name == "spam": + return "spam" + raise AttributeError + C.__getattr__ = mygetattr + self.assertEqual(a.spam, "spam") + a.new = 12 + self.assertEqual(a.new, 12) + def mysetattr(self, name, value): + if name == "spam": + raise AttributeError + return object.__setattr__(self, name, value) + C.__setattr__ = mysetattr + try: + a.spam = "not spam" + except AttributeError: + pass + else: + self.fail("expected AttributeError") + self.assertEqual(a.spam, "spam") + class D(C): + pass + d = D() + d.foo = 1 + self.assertEqual(d.foo, 1) + + # Test handling of int*seq and seq*int + class I(int): + pass + self.assertEqual("a"*I(2), "aa") + self.assertEqual(I(2)*"a", "aa") + self.assertEqual(2*I(3), 6) + self.assertEqual(I(3)*2, 6) + self.assertEqual(I(3)*I(2), 6) + + # Test handling of long*seq and seq*long + class L(long): + pass + self.assertEqual("a"*L(2L), "aa") + self.assertEqual(L(2L)*"a", "aa") + self.assertEqual(2*L(3), 6) + self.assertEqual(L(3)*2, 6) + self.assertEqual(L(3)*L(2), 6) + + # Test comparison of classes with dynamic metaclasses + class dynamicmetaclass(type): + pass + class someclass: + __metaclass__ = dynamicmetaclass + self.assertNotEqual(someclass, object) + + def test_errors(self): + # Testing errors... + try: + class C(list, dict): + pass + except TypeError: + pass + else: + self.fail("inheritance from both list and dict should be illegal") + + try: + class C(object, None): + pass + except TypeError: + pass + else: + self.fail("inheritance from non-type should be illegal") + class Classic: + pass + + try: + class C(type(len)): + pass + except TypeError: + pass + else: + self.fail("inheritance from CFunction should be illegal") + + try: + class C(object): + __slots__ = 1 + except TypeError: + pass + else: + self.fail("__slots__ = 1 should be illegal") + + try: + class C(object): + __slots__ = [1] + except TypeError: + pass + else: + self.fail("__slots__ = [1] should be illegal") + + class M1(type): + pass + class M2(type): + pass + class A1(object): + __metaclass__ = M1 + class A2(object): + __metaclass__ = M2 + try: + class B(A1, A2): + pass + except TypeError: + pass + else: + self.fail("finding the most derived metaclass should have failed") + + def test_classmethods(self): + # Testing class methods... + class C(object): + def foo(*a): return a + goo = classmethod(foo) + c = C() + self.assertEqual(C.goo(1), (C, 1)) + self.assertEqual(c.goo(1), (C, 1)) + self.assertEqual(c.foo(1), (c, 1)) + class D(C): + pass + d = D() + self.assertEqual(D.goo(1), (D, 1)) + self.assertEqual(d.goo(1), (D, 1)) + self.assertEqual(d.foo(1), (d, 1)) + self.assertEqual(D.foo(d, 1), (d, 1)) + # Test for a specific crash (SF bug 528132) + def f(cls, arg): return (cls, arg) + ff = classmethod(f) + self.assertEqual(ff.__get__(0, int)(42), (int, 42)) + self.assertEqual(ff.__get__(0)(42), (int, 42)) + + # Test super() with classmethods (SF bug 535444) + self.assertEqual(C.goo.im_self, C) + self.assertEqual(D.goo.im_self, D) + self.assertEqual(super(D,D).goo.im_self, D) + self.assertEqual(super(D,d).goo.im_self, D) + self.assertEqual(super(D,D).goo(), (D,)) + self.assertEqual(super(D,d).goo(), (D,)) + + # Verify that argument is checked for callability (SF bug 753451) + try: + classmethod(1).__get__(1) + except TypeError: + pass + else: + self.fail("classmethod should check for callability") + + # Verify that classmethod() doesn't allow keyword args + try: + classmethod(f, kw=1) + except TypeError: + pass + else: + self.fail("classmethod shouldn't accept keyword args") + + def test_classmethods_in_c(self): + # Testing C-based class methods... + import xxsubtype as spam + a = (1, 2, 3) + d = {'abc': 123} + x, a1, d1 = spam.spamlist.classmeth(*a, **d) + self.assertEqual(x, spam.spamlist) + self.assertEqual(a, a1) + self.assertEqual(d, d1) + x, a1, d1 = spam.spamlist().classmeth(*a, **d) + self.assertEqual(x, spam.spamlist) + self.assertEqual(a, a1) + self.assertEqual(d, d1) + + def test_staticmethods(self): + # Testing static methods... + class C(object): + def foo(*a): return a + goo = staticmethod(foo) + c = C() + self.assertEqual(C.goo(1), (1,)) + self.assertEqual(c.goo(1), (1,)) + self.assertEqual(c.foo(1), (c, 1,)) + class D(C): + pass + d = D() + self.assertEqual(D.goo(1), (1,)) + self.assertEqual(d.goo(1), (1,)) + self.assertEqual(d.foo(1), (d, 1)) + self.assertEqual(D.foo(d, 1), (d, 1)) + + def test_staticmethods_in_c(self): + # Testing C-based static methods... + import xxsubtype as spam + a = (1, 2, 3) + d = {"abc": 123} + x, a1, d1 = spam.spamlist.staticmeth(*a, **d) + self.assertEqual(x, None) + self.assertEqual(a, a1) + self.assertEqual(d, d1) + x, a1, d2 = spam.spamlist().staticmeth(*a, **d) + self.assertEqual(x, None) + self.assertEqual(a, a1) + self.assertEqual(d, d1) + + def test_classic(self): + # Testing classic classes... + class C: + def foo(*a): return a + goo = classmethod(foo) + c = C() + self.assertEqual(C.goo(1), (C, 1)) + self.assertEqual(c.goo(1), (C, 1)) + self.assertEqual(c.foo(1), (c, 1)) + class D(C): + pass + d = D() + self.assertEqual(D.goo(1), (D, 1)) + self.assertEqual(d.goo(1), (D, 1)) + self.assertEqual(d.foo(1), (d, 1)) + self.assertEqual(D.foo(d, 1), (d, 1)) + class E: # *not* subclassing from C + foo = C.foo + self.assertEqual(E().foo, C.foo) # i.e., unbound + self.assert_(repr(C.foo.__get__(C())).startswith("= 0) + self.assertEqual(str(c1), repr(c1)) + self.assert_(-1 not in c1) + for i in range(10): + self.assert_(i in c1) + self.assertFalse(10 in c1) + # Test the default behavior for dynamic classes + class D(object): + def __getitem__(self, i): + if 0 <= i < 10: return i + raise IndexError + d1 = D() + d2 = D() + self.assert_(not not d1) + self.assertNotEqual(id(d1), id(d2)) + hash(d1) + hash(d2) + self.assertEqual(cmp(d1, d2), cmp(id(d1), id(d2))) + self.assertEqual(d1, d1) + self.assertNotEqual(d1, d2) + self.assert_(not d1 != d1) + self.assert_(not d1 == d2) + # Note that the module name appears in str/repr, and that varies + # depending on whether this test is run standalone or from a framework. + self.assert_(str(d1).find('D object at ') >= 0) + self.assertEqual(str(d1), repr(d1)) + self.assert_(-1 not in d1) + for i in range(10): + self.assert_(i in d1) + self.assertFalse(10 in d1) + # Test overridden behavior for static classes + class Proxy(object): + def __init__(self, x): + self.x = x + def __nonzero__(self): + return not not self.x + def __hash__(self): + return hash(self.x) + def __eq__(self, other): + return self.x == other + def __ne__(self, other): + return self.x != other + def __cmp__(self, other): + return cmp(self.x, other.x) + def __str__(self): + return "Proxy:%s" % self.x + def __repr__(self): + return "Proxy(%r)" % self.x + def __contains__(self, value): + return value in self.x + p0 = Proxy(0) + p1 = Proxy(1) + p_1 = Proxy(-1) + self.assertFalse(p0) + self.assert_(not not p1) + self.assertEqual(hash(p0), hash(0)) + self.assertEqual(p0, p0) + self.assertNotEqual(p0, p1) + self.assert_(not p0 != p0) + self.assertEqual(not p0, p1) + self.assertEqual(cmp(p0, p1), -1) + self.assertEqual(cmp(p0, p0), 0) + self.assertEqual(cmp(p0, p_1), 1) + self.assertEqual(str(p0), "Proxy:0") + self.assertEqual(repr(p0), "Proxy(0)") + p10 = Proxy(range(10)) + self.assertFalse(-1 in p10) + for i in range(10): + self.assert_(i in p10) + self.assertFalse(10 in p10) + # Test overridden behavior for dynamic classes + class DProxy(object): + def __init__(self, x): + self.x = x + def __nonzero__(self): + return not not self.x + def __hash__(self): + return hash(self.x) + def __eq__(self, other): + return self.x == other + def __ne__(self, other): + return self.x != other + def __cmp__(self, other): + return cmp(self.x, other.x) + def __str__(self): + return "DProxy:%s" % self.x + def __repr__(self): + return "DProxy(%r)" % self.x + def __contains__(self, value): + return value in self.x + p0 = DProxy(0) + p1 = DProxy(1) + p_1 = DProxy(-1) + self.assertFalse(p0) + self.assert_(not not p1) + self.assertEqual(hash(p0), hash(0)) + self.assertEqual(p0, p0) + self.assertNotEqual(p0, p1) + self.assertNotEqual(not p0, p0) + self.assertEqual(not p0, p1) + self.assertEqual(cmp(p0, p1), -1) + self.assertEqual(cmp(p0, p0), 0) + self.assertEqual(cmp(p0, p_1), 1) + self.assertEqual(str(p0), "DProxy:0") + self.assertEqual(repr(p0), "DProxy(0)") + p10 = DProxy(range(10)) + self.assertFalse(-1 in p10) + for i in range(10): + self.assert_(i in p10) + self.assertFalse(10 in p10) -# XXX Please, please, please, someone convert this to unittest style! + # Safety test for __cmp__ + def unsafecmp(a, b): + try: + a.__class__.__cmp__(a, b) + except TypeError: + pass + else: + self.fail("shouldn't allow %s.__cmp__(%r, %r)" % ( + a.__class__, a, b)) -from test.test_support import verify, vereq, verbose, TestFailed, TESTFN, get_original_stdout -from copy import deepcopy -import warnings -import types + unsafecmp(u"123", "123") + unsafecmp("123", u"123") + unsafecmp(1, 1.0) + unsafecmp(1.0, 1) + unsafecmp(1, 1L) + unsafecmp(1L, 1) + + def test_recursions(self): + # Testing recursion checks ... + class Letter(str): + def __new__(cls, letter): + if letter == 'EPS': + return str.__new__(cls) + return str.__new__(cls, letter) + def __str__(self): + if not self: + return 'EPS' + return self + # sys.stdout needs to be the original to trigger the recursion bug + import sys + test_stdout = sys.stdout + sys.stdout = test_support.get_original_stdout() + try: + # nothing should actually be printed, this should raise an exception + print Letter('w') + except RuntimeError: + pass + else: + self.fail("expected a RuntimeError for print recursion") + finally: + sys.stdout = test_stdout + + # Bug #1202533. + class A(object): + pass + A.__mul__ = types.MethodType(lambda self, x: self * x, None, A) + try: + A()*2 + except RuntimeError: + pass + else: + self.fail("expected a RuntimeError") + + def test_weakrefs(self): + # Testing weak references... + import weakref + class C(object): + pass + c = C() + r = weakref.ref(c) + self.assertEqual(r(), c) + del c + self.assertEqual(r(), None) + del r + class NoWeak(object): + __slots__ = ['foo'] + no = NoWeak() + try: + weakref.ref(no) + except TypeError, msg: + self.assert_(str(msg).find("weak reference") >= 0) + else: + self.fail("weakref.ref(no) should be illegal") + class Weak(object): + __slots__ = ['foo', '__weakref__'] + yes = Weak() + r = weakref.ref(yes) + self.assertEqual(r(), yes) + del yes + self.assertEqual(r(), None) + del r + + def test_properties(self): + # Testing property... + class C(object): + def getx(self): + return self.__x + def setx(self, value): + self.__x = value + def delx(self): + del self.__x + x = property(getx, setx, delx, doc="I'm the x property.") + a = C() + self.assertFalse(hasattr(a, "x")) + a.x = 42 + self.assertEqual(a._C__x, 42) + self.assertEqual(a.x, 42) + del a.x + self.assertFalse(hasattr(a, "x")) + self.assertFalse(hasattr(a, "_C__x")) + C.x.__set__(a, 100) + self.assertEqual(C.x.__get__(a), 100) + C.x.__delete__(a) + self.assertFalse(hasattr(a, "x")) + + raw = C.__dict__['x'] + self.assert_(isinstance(raw, property)) + + attrs = dir(raw) + self.assert_("__doc__" in attrs) + self.assert_("fget" in attrs) + self.assert_("fset" in attrs) + self.assert_("fdel" in attrs) + + self.assertEqual(raw.__doc__, "I'm the x property.") + self.assert_(raw.fget is C.__dict__['getx']) + self.assert_(raw.fset is C.__dict__['setx']) + self.assert_(raw.fdel is C.__dict__['delx']) + + for attr in "__doc__", "fget", "fset", "fdel": + try: + setattr(raw, attr, 42) + except TypeError, msg: + if str(msg).find('readonly') < 0: + self.fail("when setting readonly attr %r on a property, " + "got unexpected TypeError msg %r" % (attr, str(msg))) + else: + self.fail("expected TypeError from trying to set readonly %r " + "attr on a property" % attr) + + class D(object): + __getitem__ = property(lambda s: 1/0) + + d = D() + try: + for i in d: + str(i) + except ZeroDivisionError: + pass + else: + self.fail("expected ZeroDivisionError from bad property") + + class E(object): + def getter(self): + "getter method" + return 0 + def setter(self_, value): + "setter method" + pass + prop = property(getter) + self.assertEqual(prop.__doc__, "getter method") + prop2 = property(fset=setter) + self.assertEqual(prop2.__doc__, None) + + # this segfaulted in 2.5b2 + try: + import _testcapi + except ImportError: + pass + else: + class X(object): + p = property(_testcapi.test_with_docstring) + + def test_properties_plus(self): + class C(object): + foo = property(doc="hello") + @foo.getter + def foo(self): + return self._foo + @foo.setter + def foo(self, value): + self._foo = abs(value) + @foo.deleter + def foo(self): + del self._foo + c = C() + self.assertEqual(C.foo.__doc__, "hello") + self.assertFalse(hasattr(c, "foo")) + c.foo = -42 + self.assert_(hasattr(c, '_foo')) + self.assertEqual(c._foo, 42) + self.assertEqual(c.foo, 42) + del c.foo + self.assertFalse(hasattr(c, '_foo')) + self.assertFalse(hasattr(c, "foo")) + + class D(C): + @C.foo.deleter + def foo(self): + try: + del self._foo + except AttributeError: + pass + d = D() + d.foo = 24 + self.assertEqual(d.foo, 24) + del d.foo + del d.foo + + class E(object): + @property + def foo(self): + return self._foo + @foo.setter + def foo(self, value): + raise RuntimeError + @foo.setter + def foo(self, value): + self._foo = abs(value) + @foo.deleter + def foo(self, value=None): + del self._foo + + e = E() + e.foo = -42 + self.assertEqual(e.foo, 42) + del e.foo + + class F(E): + @E.foo.deleter + def foo(self): + del self._foo + @foo.setter + def foo(self, value): + self._foo = max(0, value) + f = F() + f.foo = -10 + self.assertEqual(f.foo, 0) + del f.foo + + def test_dict_constructors(self): + # Testing dict constructor ... + d = dict() + self.assertEqual(d, {}) + d = dict({}) + self.assertEqual(d, {}) + d = dict({1: 2, 'a': 'b'}) + self.assertEqual(d, {1: 2, 'a': 'b'}) + self.assertEqual(d, dict(d.items())) + self.assertEqual(d, dict(d.iteritems())) + d = dict({'one':1, 'two':2}) + self.assertEqual(d, dict(one=1, two=2)) + self.assertEqual(d, dict(**d)) + self.assertEqual(d, dict({"one": 1}, two=2)) + self.assertEqual(d, dict([("two", 2)], one=1)) + self.assertEqual(d, dict([("one", 100), ("two", 200)], **d)) + self.assertEqual(d, dict(**d)) -warnings.filterwarnings("ignore", - r'complex divmod\(\), // and % are deprecated$', - DeprecationWarning, r'(|%s)$' % __name__) - -def veris(a, b): - if a is not b: - raise TestFailed, "%r is %r" % (a, b) - -def testunop(a, res, expr="len(a)", meth="__len__"): - if verbose: print "checking", expr - dict = {'a': a} - vereq(eval(expr, dict), res) - t = type(a) - m = getattr(t, meth) - while meth not in t.__dict__: - t = t.__bases__[0] - vereq(m, t.__dict__[meth]) - vereq(m(a), res) - bm = getattr(a, meth) - vereq(bm(), res) - -def testbinop(a, b, res, expr="a+b", meth="__add__"): - if verbose: print "checking", expr - dict = {'a': a, 'b': b} - - # XXX Hack so this passes before 2.3 when -Qnew is specified. - if meth == "__div__" and 1/2 == 0.5: - meth = "__truediv__" - - vereq(eval(expr, dict), res) - t = type(a) - m = getattr(t, meth) - while meth not in t.__dict__: - t = t.__bases__[0] - vereq(m, t.__dict__[meth]) - vereq(m(a, b), res) - bm = getattr(a, meth) - vereq(bm(b), res) - -def testternop(a, b, c, res, expr="a[b:c]", meth="__getslice__"): - if verbose: print "checking", expr - dict = {'a': a, 'b': b, 'c': c} - vereq(eval(expr, dict), res) - t = type(a) - m = getattr(t, meth) - while meth not in t.__dict__: - t = t.__bases__[0] - vereq(m, t.__dict__[meth]) - vereq(m(a, b, c), res) - bm = getattr(a, meth) - vereq(bm(b, c), res) - -def testsetop(a, b, res, stmt="a+=b", meth="__iadd__"): - if verbose: print "checking", stmt - dict = {'a': deepcopy(a), 'b': b} - exec stmt in dict - vereq(dict['a'], res) - t = type(a) - m = getattr(t, meth) - while meth not in t.__dict__: - t = t.__bases__[0] - vereq(m, t.__dict__[meth]) - dict['a'] = deepcopy(a) - m(dict['a'], b) - vereq(dict['a'], res) - dict['a'] = deepcopy(a) - bm = getattr(dict['a'], meth) - bm(b) - vereq(dict['a'], res) - -def testset2op(a, b, c, res, stmt="a[b]=c", meth="__setitem__"): - if verbose: print "checking", stmt - dict = {'a': deepcopy(a), 'b': b, 'c': c} - exec stmt in dict - vereq(dict['a'], res) - t = type(a) - m = getattr(t, meth) - while meth not in t.__dict__: - t = t.__bases__[0] - vereq(m, t.__dict__[meth]) - dict['a'] = deepcopy(a) - m(dict['a'], b, c) - vereq(dict['a'], res) - dict['a'] = deepcopy(a) - bm = getattr(dict['a'], meth) - bm(b, c) - vereq(dict['a'], res) - -def testset3op(a, b, c, d, res, stmt="a[b:c]=d", meth="__setslice__"): - if verbose: print "checking", stmt - dict = {'a': deepcopy(a), 'b': b, 'c': c, 'd': d} - exec stmt in dict - vereq(dict['a'], res) - t = type(a) - while meth not in t.__dict__: - t = t.__bases__[0] - m = getattr(t, meth) - vereq(m, t.__dict__[meth]) - dict['a'] = deepcopy(a) - m(dict['a'], b, c, d) - vereq(dict['a'], res) - dict['a'] = deepcopy(a) - bm = getattr(dict['a'], meth) - bm(b, c, d) - vereq(dict['a'], res) - -def class_docstrings(): - class Classic: - "A classic docstring." - vereq(Classic.__doc__, "A classic docstring.") - vereq(Classic.__dict__['__doc__'], "A classic docstring.") - - class Classic2: - pass - verify(Classic2.__doc__ is None) - - class NewStatic(object): - "Another docstring." - vereq(NewStatic.__doc__, "Another docstring.") - vereq(NewStatic.__dict__['__doc__'], "Another docstring.") - - class NewStatic2(object): - pass - verify(NewStatic2.__doc__ is None) - - class NewDynamic(object): - "Another docstring." - vereq(NewDynamic.__doc__, "Another docstring.") - vereq(NewDynamic.__dict__['__doc__'], "Another docstring.") - - class NewDynamic2(object): - pass - verify(NewDynamic2.__doc__ is None) - -def lists(): - if verbose: print "Testing list operations..." - testbinop([1], [2], [1,2], "a+b", "__add__") - testbinop([1,2,3], 2, 1, "b in a", "__contains__") - testbinop([1,2,3], 4, 0, "b in a", "__contains__") - testbinop([1,2,3], 1, 2, "a[b]", "__getitem__") - testternop([1,2,3], 0, 2, [1,2], "a[b:c]", "__getslice__") - testsetop([1], [2], [1,2], "a+=b", "__iadd__") - testsetop([1,2], 3, [1,2,1,2,1,2], "a*=b", "__imul__") - testunop([1,2,3], 3, "len(a)", "__len__") - testbinop([1,2], 3, [1,2,1,2,1,2], "a*b", "__mul__") - testbinop([1,2], 3, [1,2,1,2,1,2], "b*a", "__rmul__") - testset2op([1,2], 1, 3, [1,3], "a[b]=c", "__setitem__") - testset3op([1,2,3,4], 1, 3, [5,6], [1,5,6,4], "a[b:c]=d", "__setslice__") - -def dicts(): - if verbose: print "Testing dict operations..." - testbinop({1:2}, {2:1}, -1, "cmp(a,b)", "__cmp__") - testbinop({1:2,3:4}, 1, 1, "b in a", "__contains__") - testbinop({1:2,3:4}, 2, 0, "b in a", "__contains__") - testbinop({1:2,3:4}, 1, 2, "a[b]", "__getitem__") - d = {1:2,3:4} - l1 = [] - for i in d.keys(): l1.append(i) - l = [] - for i in iter(d): l.append(i) - vereq(l, l1) - l = [] - for i in d.__iter__(): l.append(i) - vereq(l, l1) - l = [] - for i in dict.__iter__(d): l.append(i) - vereq(l, l1) - d = {1:2, 3:4} - testunop(d, 2, "len(a)", "__len__") - vereq(eval(repr(d), {}), d) - vereq(eval(d.__repr__(), {}), d) - testset2op({1:2,3:4}, 2, 3, {1:2,2:3,3:4}, "a[b]=c", "__setitem__") - -def dict_constructor(): - if verbose: - print "Testing dict constructor ..." - d = dict() - vereq(d, {}) - d = dict({}) - vereq(d, {}) - d = dict({1: 2, 'a': 'b'}) - vereq(d, {1: 2, 'a': 'b'}) - vereq(d, dict(d.items())) - vereq(d, dict(d.iteritems())) - d = dict({'one':1, 'two':2}) - vereq(d, dict(one=1, two=2)) - vereq(d, dict(**d)) - vereq(d, dict({"one": 1}, two=2)) - vereq(d, dict([("two", 2)], one=1)) - vereq(d, dict([("one", 100), ("two", 200)], **d)) - verify(d is not dict(**d)) - for badarg in 0, 0L, 0j, "0", [0], (0,): - try: - dict(badarg) - except TypeError: - pass - except ValueError: - if badarg == "0": - # It's a sequence, and its elements are also sequences (gotta - # love strings ), but they aren't of length 2, so this - # one seemed better as a ValueError than a TypeError. + for badarg in 0, 0L, 0j, "0", [0], (0,): + try: + dict(badarg) + except TypeError: pass + except ValueError: + if badarg == "0": + # It's a sequence, and its elements are also sequences (gotta + # love strings ), but they aren't of length 2, so this + # one seemed better as a ValueError than a TypeError. + pass + else: + self.fail("no TypeError from dict(%r)" % badarg) else: - raise TestFailed("no TypeError from dict(%r)" % badarg) + self.fail("no TypeError from dict(%r)" % badarg) + + try: + dict({}, {}) + except TypeError: + pass else: - raise TestFailed("no TypeError from dict(%r)" % badarg) + self.fail("no TypeError from dict({}, {})") - try: - dict({}, {}) - except TypeError: - pass - else: - raise TestFailed("no TypeError from dict({}, {})") - - class Mapping: - # Lacks a .keys() method; will be added later. - dict = {1:2, 3:4, 'a':1j} - - try: - dict(Mapping()) - except TypeError: - pass - else: - raise TestFailed("no TypeError from dict(incomplete mapping)") - - Mapping.keys = lambda self: self.dict.keys() - Mapping.__getitem__ = lambda self, i: self.dict[i] - d = dict(Mapping()) - vereq(d, Mapping.dict) - - # Init from sequence of iterable objects, each producing a 2-sequence. - class AddressBookEntry: - def __init__(self, first, last): - self.first = first - self.last = last - def __iter__(self): - return iter([self.first, self.last]) - - d = dict([AddressBookEntry('Tim', 'Warsaw'), - AddressBookEntry('Barry', 'Peters'), - AddressBookEntry('Tim', 'Peters'), - AddressBookEntry('Barry', 'Warsaw')]) - vereq(d, {'Barry': 'Warsaw', 'Tim': 'Peters'}) - - d = dict(zip(range(4), range(1, 5))) - vereq(d, dict([(i, i+1) for i in range(4)])) - - # Bad sequence lengths. - for bad in [('tooshort',)], [('too', 'long', 'by 1')]: - try: - dict(bad) - except ValueError: - pass - else: - raise TestFailed("no ValueError from dict(%r)" % bad) - -def test_dir(): - if verbose: - print "Testing dir() ..." - junk = 12 - vereq(dir(), ['junk']) - del junk - - # Just make sure these don't blow up! - for arg in 2, 2L, 2j, 2e0, [2], "2", u"2", (2,), {2:2}, type, test_dir: - dir(arg) - - # Try classic classes. - class C: - Cdata = 1 - def Cmethod(self): pass - - cstuff = ['Cdata', 'Cmethod', '__doc__', '__module__'] - vereq(dir(C), cstuff) - verify('im_self' in dir(C.Cmethod)) - - c = C() # c.__doc__ is an odd thing to see here; ditto c.__module__. - vereq(dir(c), cstuff) - - c.cdata = 2 - c.cmethod = lambda self: 0 - vereq(dir(c), cstuff + ['cdata', 'cmethod']) - verify('im_self' in dir(c.Cmethod)) - - class A(C): - Adata = 1 - def Amethod(self): pass - - astuff = ['Adata', 'Amethod'] + cstuff - vereq(dir(A), astuff) - verify('im_self' in dir(A.Amethod)) - a = A() - vereq(dir(a), astuff) - verify('im_self' in dir(a.Amethod)) - a.adata = 42 - a.amethod = lambda self: 3 - vereq(dir(a), astuff + ['adata', 'amethod']) - - # The same, but with new-style classes. Since these have object as a - # base class, a lot more gets sucked in. - def interesting(strings): - return [s for s in strings if not s.startswith('_')] - - class C(object): - Cdata = 1 - def Cmethod(self): pass - - cstuff = ['Cdata', 'Cmethod'] - vereq(interesting(dir(C)), cstuff) - - c = C() - vereq(interesting(dir(c)), cstuff) - verify('im_self' in dir(C.Cmethod)) - - c.cdata = 2 - c.cmethod = lambda self: 0 - vereq(interesting(dir(c)), cstuff + ['cdata', 'cmethod']) - verify('im_self' in dir(c.Cmethod)) - - class A(C): - Adata = 1 - def Amethod(self): pass - - astuff = ['Adata', 'Amethod'] + cstuff - vereq(interesting(dir(A)), astuff) - verify('im_self' in dir(A.Amethod)) - a = A() - vereq(interesting(dir(a)), astuff) - a.adata = 42 - a.amethod = lambda self: 3 - vereq(interesting(dir(a)), astuff + ['adata', 'amethod']) - verify('im_self' in dir(a.Amethod)) - - # Try a module subclass. - import sys - class M(type(sys)): - pass - minstance = M("m") - minstance.b = 2 - minstance.a = 1 - names = [x for x in dir(minstance) if x not in ["__name__", "__doc__"]] - vereq(names, ['a', 'b']) - - class M2(M): - def getdict(self): - return "Not a dict!" - __dict__ = property(getdict) - - m2instance = M2("m2") - m2instance.b = 2 - m2instance.a = 1 - vereq(m2instance.__dict__, "Not a dict!") - try: - dir(m2instance) - except TypeError: - pass - - # Two essentially featureless objects, just inheriting stuff from - # object. - vereq(dir(None), dir(Ellipsis)) - - # Nasty test case for proxied objects - class Wrapper(object): - def __init__(self, obj): - self.__obj = obj - def __repr__(self): - return "Wrapper(%s)" % repr(self.__obj) - def __getitem__(self, key): - return Wrapper(self.__obj[key]) - def __len__(self): - return len(self.__obj) - def __getattr__(self, name): - return Wrapper(getattr(self.__obj, name)) + class Mapping: + # Lacks a .keys() method; will be added later. + dict = {1:2, 3:4, 'a':1j} - class C(object): - def __getclass(self): - return Wrapper(type(self)) - __class__ = property(__getclass) - - dir(C()) # This used to segfault - -binops = { - 'add': '+', - 'sub': '-', - 'mul': '*', - 'div': '/', - 'mod': '%', - 'divmod': 'divmod', - 'pow': '**', - 'lshift': '<<', - 'rshift': '>>', - 'and': '&', - 'xor': '^', - 'or': '|', - 'cmp': 'cmp', - 'lt': '<', - 'le': '<=', - 'eq': '==', - 'ne': '!=', - 'gt': '>', - 'ge': '>=', - } - -for name, expr in binops.items(): - if expr.islower(): - expr = expr + "(a, b)" - else: - expr = 'a %s b' % expr - binops[name] = expr - -unops = { - 'pos': '+', - 'neg': '-', - 'abs': 'abs', - 'invert': '~', - 'int': 'int', - 'long': 'long', - 'float': 'float', - 'oct': 'oct', - 'hex': 'hex', - } - -for name, expr in unops.items(): - if expr.islower(): - expr = expr + "(a)" - else: - expr = '%s a' % expr - unops[name] = expr - -def numops(a, b, skip=[]): - dict = {'a': a, 'b': b} - for name, expr in binops.items(): - if name not in skip: - name = "__%s__" % name - if hasattr(a, name): - res = eval(expr, dict) - testbinop(a, b, res, expr, name) - for name, expr in unops.items(): - if name not in skip: - name = "__%s__" % name - if hasattr(a, name): - res = eval(expr, dict) - testunop(a, res, expr, name) - -def ints(): - if verbose: print "Testing int operations..." - numops(100, 3) - # The following crashes in Python 2.2 - vereq((1).__nonzero__(), 1) - vereq((0).__nonzero__(), 0) - # This returns 'NotImplemented' in Python 2.2 - class C(int): - def __add__(self, other): - return NotImplemented - vereq(C(5L), 5) - try: - C() + "" - except TypeError: - pass - else: - raise TestFailed, "NotImplemented should have caused TypeError" - import sys - try: - C(sys.maxint+1) - except OverflowError: - pass - else: - raise TestFailed, "should have raised OverflowError" - -def longs(): - if verbose: print "Testing long operations..." - numops(100L, 3L) - -def floats(): - if verbose: print "Testing float operations..." - numops(100.0, 3.0) - -def complexes(): - if verbose: print "Testing complex operations..." - numops(100.0j, 3.0j, skip=['lt', 'le', 'gt', 'ge', 'int', 'long', 'float']) - class Number(complex): - __slots__ = ['prec'] - def __new__(cls, *args, **kwds): - result = complex.__new__(cls, *args) - result.prec = kwds.get('prec', 12) - return result - def __repr__(self): - prec = self.prec - if self.imag == 0.0: - return "%.*g" % (prec, self.real) - if self.real == 0.0: - return "%.*gj" % (prec, self.imag) - return "(%.*g+%.*gj)" % (prec, self.real, prec, self.imag) - __str__ = __repr__ - - a = Number(3.14, prec=6) - vereq(repr(a), "3.14") - vereq(a.prec, 6) - - a = Number(a, prec=2) - vereq(repr(a), "3.1") - vereq(a.prec, 2) - - a = Number(234.5) - vereq(repr(a), "234.5") - vereq(a.prec, 12) - -def spamlists(): - if verbose: print "Testing spamlist operations..." - import copy, xxsubtype as spam - def spamlist(l, memo=None): - import xxsubtype as spam - return spam.spamlist(l) - # This is an ugly hack: - copy._deepcopy_dispatch[spam.spamlist] = spamlist - - testbinop(spamlist([1]), spamlist([2]), spamlist([1,2]), "a+b", "__add__") - testbinop(spamlist([1,2,3]), 2, 1, "b in a", "__contains__") - testbinop(spamlist([1,2,3]), 4, 0, "b in a", "__contains__") - testbinop(spamlist([1,2,3]), 1, 2, "a[b]", "__getitem__") - testternop(spamlist([1,2,3]), 0, 2, spamlist([1,2]), - "a[b:c]", "__getslice__") - testsetop(spamlist([1]), spamlist([2]), spamlist([1,2]), - "a+=b", "__iadd__") - testsetop(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*=b", "__imul__") - testunop(spamlist([1,2,3]), 3, "len(a)", "__len__") - testbinop(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*b", "__mul__") - testbinop(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "b*a", "__rmul__") - testset2op(spamlist([1,2]), 1, 3, spamlist([1,3]), "a[b]=c", "__setitem__") - testset3op(spamlist([1,2,3,4]), 1, 3, spamlist([5,6]), - spamlist([1,5,6,4]), "a[b:c]=d", "__setslice__") - # Test subclassing - class C(spam.spamlist): - def foo(self): return 1 - a = C() - vereq(a, []) - vereq(a.foo(), 1) - a.append(100) - vereq(a, [100]) - vereq(a.getstate(), 0) - a.setstate(42) - vereq(a.getstate(), 42) - -def spamdicts(): - if verbose: print "Testing spamdict operations..." - import copy, xxsubtype as spam - def spamdict(d, memo=None): - import xxsubtype as spam - sd = spam.spamdict() - for k, v in d.items(): sd[k] = v - return sd - # This is an ugly hack: - copy._deepcopy_dispatch[spam.spamdict] = spamdict - - testbinop(spamdict({1:2}), spamdict({2:1}), -1, "cmp(a,b)", "__cmp__") - testbinop(spamdict({1:2,3:4}), 1, 1, "b in a", "__contains__") - testbinop(spamdict({1:2,3:4}), 2, 0, "b in a", "__contains__") - testbinop(spamdict({1:2,3:4}), 1, 2, "a[b]", "__getitem__") - d = spamdict({1:2,3:4}) - l1 = [] - for i in d.keys(): l1.append(i) - l = [] - for i in iter(d): l.append(i) - vereq(l, l1) - l = [] - for i in d.__iter__(): l.append(i) - vereq(l, l1) - l = [] - for i in type(spamdict({})).__iter__(d): l.append(i) - vereq(l, l1) - straightd = {1:2, 3:4} - spamd = spamdict(straightd) - testunop(spamd, 2, "len(a)", "__len__") - testunop(spamd, repr(straightd), "repr(a)", "__repr__") - testset2op(spamdict({1:2,3:4}), 2, 3, spamdict({1:2,2:3,3:4}), - "a[b]=c", "__setitem__") - # Test subclassing - class C(spam.spamdict): - def foo(self): return 1 - a = C() - vereq(a.items(), []) - vereq(a.foo(), 1) - a['foo'] = 'bar' - vereq(a.items(), [('foo', 'bar')]) - vereq(a.getstate(), 0) - a.setstate(100) - vereq(a.getstate(), 100) - -def pydicts(): - if verbose: print "Testing Python subclass of dict..." - verify(issubclass(dict, dict)) - verify(isinstance({}, dict)) - d = dict() - vereq(d, {}) - verify(d.__class__ is dict) - verify(isinstance(d, dict)) - class C(dict): - state = -1 - def __init__(self, *a, **kw): - if a: - vereq(len(a), 1) - self.state = a[0] - if kw: - for k, v in kw.items(): self[v] = k - def __getitem__(self, key): - return self.get(key, 0) - def __setitem__(self, key, value): - verify(isinstance(key, type(0))) - dict.__setitem__(self, key, value) - def setstate(self, state): - self.state = state - def getstate(self): - return self.state - verify(issubclass(C, dict)) - a1 = C(12) - vereq(a1.state, 12) - a2 = C(foo=1, bar=2) - vereq(a2[1] == 'foo' and a2[2], 'bar') - a = C() - vereq(a.state, -1) - vereq(a.getstate(), -1) - a.setstate(0) - vereq(a.state, 0) - vereq(a.getstate(), 0) - a.setstate(10) - vereq(a.state, 10) - vereq(a.getstate(), 10) - vereq(a[42], 0) - a[42] = 24 - vereq(a[42], 24) - if verbose: print "pydict stress test ..." - N = 50 - for i in range(N): - a[i] = C() - for j in range(N): - a[i][j] = i*j - for i in range(N): - for j in range(N): - vereq(a[i][j], i*j) - -def pylists(): - if verbose: print "Testing Python subclass of list..." - class C(list): - def __getitem__(self, i): - return list.__getitem__(self, i) + 100 - def __getslice__(self, i, j): - return (i, j) - a = C() - a.extend([0,1,2]) - vereq(a[0], 100) - vereq(a[1], 101) - vereq(a[2], 102) - vereq(a[100:200], (100,200)) - -def metaclass(): - if verbose: print "Testing __metaclass__..." - class C: - __metaclass__ = type - def __init__(self): - self.__state = 0 - def getstate(self): - return self.__state - def setstate(self, state): - self.__state = state - a = C() - vereq(a.getstate(), 0) - a.setstate(10) - vereq(a.getstate(), 10) - class D: - class __metaclass__(type): - def myself(cls): return cls - vereq(D.myself(), D) - d = D() - verify(d.__class__ is D) - class M1(type): - def __new__(cls, name, bases, dict): - dict['__spam__'] = 1 - return type.__new__(cls, name, bases, dict) - class C: - __metaclass__ = M1 - vereq(C.__spam__, 1) - c = C() - vereq(c.__spam__, 1) - - class _instance(object): - pass - class M2(object): - @staticmethod - def __new__(cls, name, bases, dict): - self = object.__new__(cls) - self.name = name - self.bases = bases - self.dict = dict - return self - def __call__(self): - it = _instance() - # Early binding of methods - for key in self.dict: - if key.startswith("__"): + try: + dict(Mapping()) + except TypeError: + pass + else: + self.fail("no TypeError from dict(incomplete mapping)") + + Mapping.keys = lambda self: self.dict.keys() + Mapping.__getitem__ = lambda self, i: self.dict[i] + d = dict(Mapping()) + self.assertEqual(d, Mapping.dict) + + # Init from sequence of iterable objects, each producing a 2-sequence. + class AddressBookEntry: + def __init__(self, first, last): + self.first = first + self.last = last + def __iter__(self): + return iter([self.first, self.last]) + + d = dict([AddressBookEntry('Tim', 'Warsaw'), + AddressBookEntry('Barry', 'Peters'), + AddressBookEntry('Tim', 'Peters'), + AddressBookEntry('Barry', 'Warsaw')]) + self.assertEqual(d, {'Barry': 'Warsaw', 'Tim': 'Peters'}) + + d = dict(zip(range(4), range(1, 5))) + self.assertEqual(d, dict([(i, i+1) for i in range(4)])) + + # Bad sequence lengths. + for bad in [('tooshort',)], [('too', 'long', 'by 1')]: + try: + dict(bad) + except ValueError: + pass + else: + self.fail("no ValueError from dict(%r)" % bad) + + def test_dir(self): + # Testing dir() ... + junk = 12 + self.assertEqual(dir(), ['junk', 'self']) + del junk + + # Just make sure these don't blow up! + for arg in 2, 2L, 2j, 2e0, [2], "2", u"2", (2,), {2:2}, type, self.test_dir: + dir(arg) + + # Try classic classes. + class C: + Cdata = 1 + def Cmethod(self): pass + + cstuff = ['Cdata', 'Cmethod', '__doc__', '__module__'] + self.assertEqual(dir(C), cstuff) + self.assert_('im_self' in dir(C.Cmethod)) + + c = C() # c.__doc__ is an odd thing to see here; ditto c.__module__. + self.assertEqual(dir(c), cstuff) + + c.cdata = 2 + c.cmethod = lambda self: 0 + self.assertEqual(dir(c), cstuff + ['cdata', 'cmethod']) + self.assert_('im_self' in dir(c.Cmethod)) + + class A(C): + Adata = 1 + def Amethod(self): pass + + astuff = ['Adata', 'Amethod'] + cstuff + self.assertEqual(dir(A), astuff) + self.assert_('im_self' in dir(A.Amethod)) + a = A() + self.assertEqual(dir(a), astuff) + self.assert_('im_self' in dir(a.Amethod)) + a.adata = 42 + a.amethod = lambda self: 3 + self.assertEqual(dir(a), astuff + ['adata', 'amethod']) + + # The same, but with new-style classes. Since these have object as a + # base class, a lot more gets sucked in. + def interesting(strings): + return [s for s in strings if not s.startswith('_')] + + class C(object): + Cdata = 1 + def Cmethod(self): pass + + cstuff = ['Cdata', 'Cmethod'] + self.assertEqual(interesting(dir(C)), cstuff) + + c = C() + self.assertEqual(interesting(dir(c)), cstuff) + self.assert_('im_self' in dir(C.Cmethod)) + + c.cdata = 2 + c.cmethod = lambda self: 0 + self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod']) + self.assert_('im_self' in dir(c.Cmethod)) + + class A(C): + Adata = 1 + def Amethod(self): pass + + astuff = ['Adata', 'Amethod'] + cstuff + self.assertEqual(interesting(dir(A)), astuff) + self.assert_('im_self' in dir(A.Amethod)) + a = A() + self.assertEqual(interesting(dir(a)), astuff) + a.adata = 42 + a.amethod = lambda self: 3 + self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod']) + self.assert_('im_self' in dir(a.Amethod)) + + # Try a module subclass. + import sys + class M(type(sys)): + pass + minstance = M("m") + minstance.b = 2 + minstance.a = 1 + names = [x for x in dir(minstance) if x not in ["__name__", "__doc__"]] + self.assertEqual(names, ['a', 'b']) + + class M2(M): + def getdict(self): + return "Not a dict!" + __dict__ = property(getdict) + + m2instance = M2("m2") + m2instance.b = 2 + m2instance.a = 1 + self.assertEqual(m2instance.__dict__, "Not a dict!") + try: + dir(m2instance) + except TypeError: + pass + + # Two essentially featureless objects, just inheriting stuff from + # object. + self.assertEqual(dir(None), dir(Ellipsis)) + + # Nasty test case for proxied objects + class Wrapper(object): + def __init__(self, obj): + self.__obj = obj + def __repr__(self): + return "Wrapper(%s)" % repr(self.__obj) + def __getitem__(self, key): + return Wrapper(self.__obj[key]) + def __len__(self): + return len(self.__obj) + def __getattr__(self, name): + return Wrapper(getattr(self.__obj, name)) + + class C(object): + def __getclass(self): + return Wrapper(type(self)) + __class__ = property(__getclass) + + dir(C()) # This used to segfault + + def test_supers(self): + # Testing super... + + class A(object): + def meth(self, a): + return "A(%r)" % a + + self.assertEqual(A().meth(1), "A(1)") + + class B(A): + def __init__(self): + self.__super = super(B, self) + def meth(self, a): + return "B(%r)" % a + self.__super.meth(a) + + self.assertEqual(B().meth(2), "B(2)A(2)") + + class C(A): + def meth(self, a): + return "C(%r)" % a + self.__super.meth(a) + C._C__super = super(C) + + self.assertEqual(C().meth(3), "C(3)A(3)") + + class D(C, B): + def meth(self, a): + return "D(%r)" % a + super(D, self).meth(a) + + self.assertEqual(D().meth(4), "D(4)C(4)B(4)A(4)") + + # Test for subclassing super + + class mysuper(super): + def __init__(self, *args): + return super(mysuper, self).__init__(*args) + + class E(D): + def meth(self, a): + return "E(%r)" % a + mysuper(E, self).meth(a) + + self.assertEqual(E().meth(5), "E(5)D(5)C(5)B(5)A(5)") + + class F(E): + def meth(self, a): + s = self.__super # == mysuper(F, self) + return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a) + F._F__super = mysuper(F) + + self.assertEqual(F().meth(6), "F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)") + + # Make sure certain errors are raised + + try: + super(D, 42) + except TypeError: + pass + else: + self.fail("shouldn't allow super(D, 42)") + + try: + super(D, C()) + except TypeError: + pass + else: + self.fail("shouldn't allow super(D, C())") + + try: + super(D).__get__(12) + except TypeError: + pass + else: + self.fail("shouldn't allow super(D).__get__(12)") + + try: + super(D).__get__(C()) + except TypeError: + pass + else: + self.fail("shouldn't allow super(D).__get__(C())") + + # Make sure data descriptors can be overridden and accessed via super + # (new feature in Python 2.3) + + class DDbase(object): + def getx(self): return 42 + x = property(getx) + + class DDsub(DDbase): + def getx(self): return "hello" + x = property(getx) + + dd = DDsub() + self.assertEqual(dd.x, "hello") + self.assertEqual(super(DDsub, dd).x, 42) + + # Ensure that super() lookup of descriptor from classmethod + # works (SF ID# 743627) + + class Base(object): + aProp = property(lambda self: "foo") + + class Sub(Base): + @classmethod + def test(klass): + return super(Sub,klass).aProp + + self.assertEqual(Sub.test(), Base.aProp) + + # Verify that super() doesn't allow keyword args + try: + super(Base, kw=1) + except TypeError: + pass + else: + self.assertEqual("super shouldn't accept keyword args") + + def test_basic_inheritance(self): + # Testing inheritance from basic types... + + class hexint(int): + def __repr__(self): + return hex(self) + def __add__(self, other): + return hexint(int.__add__(self, other)) + # (Note that overriding __radd__ doesn't work, + # because the int type gets first dibs.) + self.assertEqual(repr(hexint(7) + 9), "0x10") + self.assertEqual(repr(hexint(1000) + 7), "0x3ef") + a = hexint(12345) + self.assertEqual(a, 12345) + self.assertEqual(int(a), 12345) + self.assert_(int(a).__class__ is int) + self.assertEqual(hash(a), hash(12345)) + self.assert_((+a).__class__ is int) + self.assert_((a >> 0).__class__ is int) + self.assert_((a << 0).__class__ is int) + self.assert_((hexint(0) << 12).__class__ is int) + self.assert_((hexint(0) >> 12).__class__ is int) + + class octlong(long): + __slots__ = [] + def __str__(self): + s = oct(self) + if s[-1] == 'L': + s = s[:-1] + return s + def __add__(self, other): + return self.__class__(super(octlong, self).__add__(other)) + __radd__ = __add__ + self.assertEqual(str(octlong(3) + 5), "010") + # (Note that overriding __radd__ here only seems to work + # because the example uses a short int left argument.) + self.assertEqual(str(5 + octlong(3000)), "05675") + a = octlong(12345) + self.assertEqual(a, 12345L) + self.assertEqual(long(a), 12345L) + self.assertEqual(hash(a), hash(12345L)) + self.assert_(long(a).__class__ is long) + self.assert_((+a).__class__ is long) + self.assert_((-a).__class__ is long) + self.assert_((-octlong(0)).__class__ is long) + self.assert_((a >> 0).__class__ is long) + self.assert_((a << 0).__class__ is long) + self.assert_((a - 0).__class__ is long) + self.assert_((a * 1).__class__ is long) + self.assert_((a ** 1).__class__ is long) + self.assert_((a // 1).__class__ is long) + self.assert_((1 * a).__class__ is long) + self.assert_((a | 0).__class__ is long) + self.assert_((a ^ 0).__class__ is long) + self.assert_((a & -1L).__class__ is long) + self.assert_((octlong(0) << 12).__class__ is long) + self.assert_((octlong(0) >> 12).__class__ is long) + self.assert_(abs(octlong(0)).__class__ is long) + + # Because octlong overrides __add__, we can't check the absence of +0 + # optimizations using octlong. + class longclone(long): + pass + a = longclone(1) + self.assert_((a + 0).__class__ is long) + self.assert_((0 + a).__class__ is long) + + # Check that negative clones don't segfault + a = longclone(-1) + self.assertEqual(a.__dict__, {}) + self.assertEqual(long(a), -1) # self.assert_ PyNumber_Long() copies the sign bit + + class precfloat(float): + __slots__ = ['prec'] + def __init__(self, value=0.0, prec=12): + self.prec = int(prec) + def __repr__(self): + return "%.*g" % (self.prec, self) + self.assertEqual(repr(precfloat(1.1)), "1.1") + a = precfloat(12345) + self.assertEqual(a, 12345.0) + self.assertEqual(float(a), 12345.0) + self.assert_(float(a).__class__ is float) + self.assertEqual(hash(a), hash(12345.0)) + self.assert_((+a).__class__ is float) + + class madcomplex(complex): + def __repr__(self): + return "%.17gj%+.17g" % (self.imag, self.real) + a = madcomplex(-3, 4) + self.assertEqual(repr(a), "4j-3") + base = complex(-3, 4) + self.assertEqual(base.__class__, complex) + self.assertEqual(a, base) + self.assertEqual(complex(a), base) + self.assertEqual(complex(a).__class__, complex) + a = madcomplex(a) # just trying another form of the constructor + self.assertEqual(repr(a), "4j-3") + self.assertEqual(a, base) + self.assertEqual(complex(a), base) + self.assertEqual(complex(a).__class__, complex) + self.assertEqual(hash(a), hash(base)) + self.assertEqual((+a).__class__, complex) + self.assertEqual((a + 0).__class__, complex) + self.assertEqual(a + 0, base) + self.assertEqual((a - 0).__class__, complex) + self.assertEqual(a - 0, base) + self.assertEqual((a * 1).__class__, complex) + self.assertEqual(a * 1, base) + self.assertEqual((a / 1).__class__, complex) + self.assertEqual(a / 1, base) + + class madtuple(tuple): + _rev = None + def rev(self): + if self._rev is not None: + return self._rev + L = list(self) + L.reverse() + self._rev = self.__class__(L) + return self._rev + a = madtuple((1,2,3,4,5,6,7,8,9,0)) + self.assertEqual(a, (1,2,3,4,5,6,7,8,9,0)) + self.assertEqual(a.rev(), madtuple((0,9,8,7,6,5,4,3,2,1))) + self.assertEqual(a.rev().rev(), madtuple((1,2,3,4,5,6,7,8,9,0))) + for i in range(512): + t = madtuple(range(i)) + u = t.rev() + v = u.rev() + self.assertEqual(v, t) + a = madtuple((1,2,3,4,5)) + self.assertEqual(tuple(a), (1,2,3,4,5)) + self.assert_(tuple(a).__class__ is tuple) + self.assertEqual(hash(a), hash((1,2,3,4,5))) + self.assert_(a[:].__class__ is tuple) + self.assert_((a * 1).__class__ is tuple) + self.assert_((a * 0).__class__ is tuple) + self.assert_((a + ()).__class__ is tuple) + a = madtuple(()) + self.assertEqual(tuple(a), ()) + self.assert_(tuple(a).__class__ is tuple) + self.assert_((a + a).__class__ is tuple) + self.assert_((a * 0).__class__ is tuple) + self.assert_((a * 1).__class__ is tuple) + self.assert_((a * 2).__class__ is tuple) + self.assert_(a[:].__class__ is tuple) + + class madstring(str): + _rev = None + def rev(self): + if self._rev is not None: + return self._rev + L = list(self) + L.reverse() + self._rev = self.__class__("".join(L)) + return self._rev + s = madstring("abcdefghijklmnopqrstuvwxyz") + self.assertEqual(s, "abcdefghijklmnopqrstuvwxyz") + self.assertEqual(s.rev(), madstring("zyxwvutsrqponmlkjihgfedcba")) + self.assertEqual(s.rev().rev(), madstring("abcdefghijklmnopqrstuvwxyz")) + for i in range(256): + s = madstring("".join(map(chr, range(i)))) + t = s.rev() + u = t.rev() + self.assertEqual(u, s) + s = madstring("12345") + self.assertEqual(str(s), "12345") + self.assert_(str(s).__class__ is str) + + base = "\x00" * 5 + s = madstring(base) + self.assertEqual(s, base) + self.assertEqual(str(s), base) + self.assert_(str(s).__class__ is str) + self.assertEqual(hash(s), hash(base)) + self.assertEqual({s: 1}[base], 1) + self.assertEqual({base: 1}[s], 1) + self.assert_((s + "").__class__ is str) + self.assertEqual(s + "", base) + self.assert_(("" + s).__class__ is str) + self.assertEqual("" + s, base) + self.assert_((s * 0).__class__ is str) + self.assertEqual(s * 0, "") + self.assert_((s * 1).__class__ is str) + self.assertEqual(s * 1, base) + self.assert_((s * 2).__class__ is str) + self.assertEqual(s * 2, base + base) + self.assert_(s[:].__class__ is str) + self.assertEqual(s[:], base) + self.assert_(s[0:0].__class__ is str) + self.assertEqual(s[0:0], "") + self.assert_(s.strip().__class__ is str) + self.assertEqual(s.strip(), base) + self.assert_(s.lstrip().__class__ is str) + self.assertEqual(s.lstrip(), base) + self.assert_(s.rstrip().__class__ is str) + self.assertEqual(s.rstrip(), base) + identitytab = ''.join([chr(i) for i in range(256)]) + self.assert_(s.translate(identitytab).__class__ is str) + self.assertEqual(s.translate(identitytab), base) + self.assert_(s.translate(identitytab, "x").__class__ is str) + self.assertEqual(s.translate(identitytab, "x"), base) + self.assertEqual(s.translate(identitytab, "\x00"), "") + self.assert_(s.replace("x", "x").__class__ is str) + self.assertEqual(s.replace("x", "x"), base) + self.assert_(s.ljust(len(s)).__class__ is str) + self.assertEqual(s.ljust(len(s)), base) + self.assert_(s.rjust(len(s)).__class__ is str) + self.assertEqual(s.rjust(len(s)), base) + self.assert_(s.center(len(s)).__class__ is str) + self.assertEqual(s.center(len(s)), base) + self.assert_(s.lower().__class__ is str) + self.assertEqual(s.lower(), base) + + class madunicode(unicode): + _rev = None + def rev(self): + if self._rev is not None: + return self._rev + L = list(self) + L.reverse() + self._rev = self.__class__(u"".join(L)) + return self._rev + u = madunicode("ABCDEF") + self.assertEqual(u, u"ABCDEF") + self.assertEqual(u.rev(), madunicode(u"FEDCBA")) + self.assertEqual(u.rev().rev(), madunicode(u"ABCDEF")) + base = u"12345" + u = madunicode(base) + self.assertEqual(unicode(u), base) + self.assert_(unicode(u).__class__ is unicode) + self.assertEqual(hash(u), hash(base)) + self.assertEqual({u: 1}[base], 1) + self.assertEqual({base: 1}[u], 1) + self.assert_(u.strip().__class__ is unicode) + self.assertEqual(u.strip(), base) + self.assert_(u.lstrip().__class__ is unicode) + self.assertEqual(u.lstrip(), base) + self.assert_(u.rstrip().__class__ is unicode) + self.assertEqual(u.rstrip(), base) + self.assert_(u.replace(u"x", u"x").__class__ is unicode) + self.assertEqual(u.replace(u"x", u"x"), base) + self.assert_(u.replace(u"xy", u"xy").__class__ is unicode) + self.assertEqual(u.replace(u"xy", u"xy"), base) + self.assert_(u.center(len(u)).__class__ is unicode) + self.assertEqual(u.center(len(u)), base) + self.assert_(u.ljust(len(u)).__class__ is unicode) + self.assertEqual(u.ljust(len(u)), base) + self.assert_(u.rjust(len(u)).__class__ is unicode) + self.assertEqual(u.rjust(len(u)), base) + self.assert_(u.lower().__class__ is unicode) + self.assertEqual(u.lower(), base) + self.assert_(u.upper().__class__ is unicode) + self.assertEqual(u.upper(), base) + self.assert_(u.capitalize().__class__ is unicode) + self.assertEqual(u.capitalize(), base) + self.assert_(u.title().__class__ is unicode) + self.assertEqual(u.title(), base) + self.assert_((u + u"").__class__ is unicode) + self.assertEqual(u + u"", base) + self.assert_((u"" + u).__class__ is unicode) + self.assertEqual(u"" + u, base) + self.assert_((u * 0).__class__ is unicode) + self.assertEqual(u * 0, u"") + self.assert_((u * 1).__class__ is unicode) + self.assertEqual(u * 1, base) + self.assert_((u * 2).__class__ is unicode) + self.assertEqual(u * 2, base + base) + self.assert_(u[:].__class__ is unicode) + self.assertEqual(u[:], base) + self.assert_(u[0:0].__class__ is unicode) + self.assertEqual(u[0:0], u"") + + class sublist(list): + pass + a = sublist(range(5)) + self.assertEqual(a, range(5)) + a.append("hello") + self.assertEqual(a, range(5) + ["hello"]) + a[5] = 5 + self.assertEqual(a, range(6)) + a.extend(range(6, 20)) + self.assertEqual(a, range(20)) + a[-5:] = [] + self.assertEqual(a, range(15)) + del a[10:15] + self.assertEqual(len(a), 10) + self.assertEqual(a, range(10)) + self.assertEqual(list(a), range(10)) + self.assertEqual(a[0], 0) + self.assertEqual(a[9], 9) + self.assertEqual(a[-10], 0) + self.assertEqual(a[-1], 9) + self.assertEqual(a[:5], range(5)) + + class CountedInput(file): + """Counts lines read by self.readline(). + + self.lineno is the 0-based ordinal of the last line read, up to + a maximum of one greater than the number of lines in the file. + + self.ateof is true if and only if the final "" line has been read, + at which point self.lineno stops incrementing, and further calls + to readline() continue to return "". + """ + + lineno = 0 + ateof = 0 + def readline(self): + if self.ateof: + return "" + s = file.readline(self) + # Next line works too. + # s = super(CountedInput, self).readline() + self.lineno += 1 + if s == "": + self.ateof = 1 + return s + + f = file(name=test_support.TESTFN, mode='w') + lines = ['a\n', 'b\n', 'c\n'] + try: + f.writelines(lines) + f.close() + f = CountedInput(test_support.TESTFN) + for (i, expected) in zip(range(1, 5) + [4], lines + 2 * [""]): + got = f.readline() + self.assertEqual(expected, got) + self.assertEqual(f.lineno, i) + self.assertEqual(f.ateof, (i > len(lines))) + f.close() + finally: + try: + f.close() + except: + pass + test_support.unlink(test_support.TESTFN) + + def test_keywords(self): + # Testing keyword args to basic type constructors ... + self.assertEqual(int(x=1), 1) + self.assertEqual(float(x=2), 2.0) + self.assertEqual(long(x=3), 3L) + self.assertEqual(complex(imag=42, real=666), complex(666, 42)) + self.assertEqual(str(object=500), '500') + self.assertEqual(unicode(string='abc', errors='strict'), u'abc') + self.assertEqual(tuple(sequence=range(3)), (0, 1, 2)) + self.assertEqual(list(sequence=(0, 1, 2)), range(3)) + # note: as of Python 2.3, dict() no longer has an "items" keyword arg + + for constructor in (int, float, long, complex, str, unicode, + tuple, list, file): + try: + constructor(bogus_keyword_arg=1) + except TypeError: + pass + else: + self.fail("expected TypeError from bogus keyword argument to %r" + % constructor) + + def test_str_subclass_as_dict_key(self): + # Testing a str subclass used as dict key .. + + class cistr(str): + """Sublcass of str that computes __eq__ case-insensitively. + + Also computes a hash code of the string in canonical form. + """ + + def __init__(self, value): + self.canonical = value.lower() + self.hashcode = hash(self.canonical) + + def __eq__(self, other): + if not isinstance(other, cistr): + other = cistr(other) + return self.canonical == other.canonical + + def __hash__(self): + return self.hashcode + + self.assertEqual(cistr('ABC'), 'abc') + self.assertEqual('aBc', cistr('ABC')) + self.assertEqual(str(cistr('ABC')), 'ABC') + + d = {cistr('one'): 1, cistr('two'): 2, cistr('tHree'): 3} + self.assertEqual(d[cistr('one')], 1) + self.assertEqual(d[cistr('tWo')], 2) + self.assertEqual(d[cistr('THrEE')], 3) + self.assert_(cistr('ONe') in d) + self.assertEqual(d.get(cistr('thrEE')), 3) + + def test_classic_comparisons(self): + # Testing classic comparisons... + class classic: + pass + + for base in (classic, int, object): + class C(base): + def __init__(self, value): + self.value = int(value) + def __cmp__(self, other): + if isinstance(other, C): + return cmp(self.value, other.value) + if isinstance(other, int) or isinstance(other, long): + return cmp(self.value, other) + return NotImplemented + + c1 = C(1) + c2 = C(2) + c3 = C(3) + self.assertEqual(c1, 1) + c = {1: c1, 2: c2, 3: c3} + for x in 1, 2, 3: + for y in 1, 2, 3: + self.assert_(cmp(c[x], c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y)) + for op in "<", "<=", "==", "!=", ">", ">=": + self.assert_(eval("c[x] %s c[y]" % op) == eval("x %s y" % op), + "x=%d, y=%d" % (x, y)) + self.assert_(cmp(c[x], y) == cmp(x, y), "x=%d, y=%d" % (x, y)) + self.assert_(cmp(x, c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y)) + + def test_rich_comparisons(self): + # Testing rich comparisons... + class Z(complex): + pass + z = Z(1) + self.assertEqual(z, 1+0j) + self.assertEqual(1+0j, z) + class ZZ(complex): + def __eq__(self, other): + try: + return abs(self - other) <= 1e-6 + except: + return NotImplemented + zz = ZZ(1.0000003) + self.assertEqual(zz, 1+0j) + self.assertEqual(1+0j, zz) + + class classic: + pass + for base in (classic, int, object, list): + class C(base): + def __init__(self, value): + self.value = int(value) + def __cmp__(self_, other): + self.fail("shouldn't call __cmp__") + def __eq__(self, other): + if isinstance(other, C): + return self.value == other.value + if isinstance(other, int) or isinstance(other, long): + return self.value == other + return NotImplemented + def __ne__(self, other): + if isinstance(other, C): + return self.value != other.value + if isinstance(other, int) or isinstance(other, long): + return self.value != other + return NotImplemented + def __lt__(self, other): + if isinstance(other, C): + return self.value < other.value + if isinstance(other, int) or isinstance(other, long): + return self.value < other + return NotImplemented + def __le__(self, other): + if isinstance(other, C): + return self.value <= other.value + if isinstance(other, int) or isinstance(other, long): + return self.value <= other + return NotImplemented + def __gt__(self, other): + if isinstance(other, C): + return self.value > other.value + if isinstance(other, int) or isinstance(other, long): + return self.value > other + return NotImplemented + def __ge__(self, other): + if isinstance(other, C): + return self.value >= other.value + if isinstance(other, int) or isinstance(other, long): + return self.value >= other + return NotImplemented + c1 = C(1) + c2 = C(2) + c3 = C(3) + self.assertEqual(c1, 1) + c = {1: c1, 2: c2, 3: c3} + for x in 1, 2, 3: + for y in 1, 2, 3: + for op in "<", "<=", "==", "!=", ">", ">=": + self.assert_(eval("c[x] %s c[y]" % op) == eval("x %s y" % op), + "x=%d, y=%d" % (x, y)) + self.assert_(eval("c[x] %s y" % op) == eval("x %s y" % op), + "x=%d, y=%d" % (x, y)) + self.assert_(eval("x %s c[y]" % op) == eval("x %s y" % op), + "x=%d, y=%d" % (x, y)) + + def test_coercions(self): + # Testing coercions... + class I(int): pass + coerce(I(0), 0) + coerce(0, I(0)) + class L(long): pass + coerce(L(0), 0) + coerce(L(0), 0L) + coerce(0, L(0)) + coerce(0L, L(0)) + class F(float): pass + coerce(F(0), 0) + coerce(F(0), 0L) + coerce(F(0), 0.) + coerce(0, F(0)) + coerce(0L, F(0)) + coerce(0., F(0)) + class C(complex): pass + coerce(C(0), 0) + coerce(C(0), 0L) + coerce(C(0), 0.) + coerce(C(0), 0j) + coerce(0, C(0)) + coerce(0L, C(0)) + coerce(0., C(0)) + coerce(0j, C(0)) + + def test_descrdoc(self): + # Testing descriptor doc strings... + def check(descr, what): + self.assertEqual(descr.__doc__, what) + check(file.closed, "True if the file is closed") # getset descriptor + check(file.name, "file name") # member descriptor + + def test_doc_descriptor(self): + # Testing __doc__ descriptor... + # SF bug 542984 + class DocDescr(object): + def __get__(self, object, otype): + if object: + object = object.__class__.__name__ + ' instance' + if otype: + otype = otype.__name__ + return 'object=%s; type=%s' % (object, otype) + class OldClass: + __doc__ = DocDescr() + class NewClass(object): + __doc__ = DocDescr() + self.assertEqual(OldClass.__doc__, 'object=None; type=OldClass') + self.assertEqual(OldClass().__doc__, 'object=OldClass instance; type=OldClass') + self.assertEqual(NewClass.__doc__, 'object=None; type=NewClass') + self.assertEqual(NewClass().__doc__, 'object=NewClass instance; type=NewClass') + + def test_set_class(self): + # Testing __class__ assignment... + class C(object): pass + class D(object): pass + class E(object): pass + class F(D, E): pass + for cls in C, D, E, F: + for cls2 in C, D, E, F: + x = cls() + x.__class__ = cls2 + self.assert_(x.__class__ is cls2) + x.__class__ = cls + self.assert_(x.__class__ is cls) + def cant(x, C): + try: + x.__class__ = C + except TypeError: + pass + else: + self.fail("shouldn't allow %r.__class__ = %r" % (x, C)) + try: + delattr(x, "__class__") + except TypeError: + pass + else: + self.fail("shouldn't allow del %r.__class__" % x) + cant(C(), list) + cant(list(), C) + cant(C(), 1) + cant(C(), object) + cant(object(), list) + cant(list(), object) + class Int(int): __slots__ = [] + cant(2, Int) + cant(Int(), int) + cant(True, int) + cant(2, bool) + o = object() + cant(o, type(1)) + cant(o, type(None)) + del o + class G(object): + __slots__ = ["a", "b"] + class H(object): + __slots__ = ["b", "a"] + try: + unicode + except NameError: + class I(object): + __slots__ = ["a", "b"] + else: + class I(object): + __slots__ = [unicode("a"), unicode("b")] + class J(object): + __slots__ = ["c", "b"] + class K(object): + __slots__ = ["a", "b", "d"] + class L(H): + __slots__ = ["e"] + class M(I): + __slots__ = ["e"] + class N(J): + __slots__ = ["__weakref__"] + class P(J): + __slots__ = ["__dict__"] + class Q(J): + pass + class R(J): + __slots__ = ["__dict__", "__weakref__"] + + for cls, cls2 in ((G, H), (G, I), (I, H), (Q, R), (R, Q)): + x = cls() + x.a = 1 + x.__class__ = cls2 + self.assert_(x.__class__ is cls2, + "assigning %r as __class__ for %r silently failed" % (cls2, x)) + self.assertEqual(x.a, 1) + x.__class__ = cls + self.assert_(x.__class__ is cls, + "assigning %r as __class__ for %r silently failed" % (cls, x)) + self.assertEqual(x.a, 1) + for cls in G, J, K, L, M, N, P, R, list, Int: + for cls2 in G, J, K, L, M, N, P, R, list, Int: + if cls is cls2: continue - setattr(it, key, self.dict[key].__get__(it, self)) - return it - class C: - __metaclass__ = M2 - def spam(self): - return 42 - vereq(C.name, 'C') - vereq(C.bases, ()) - verify('spam' in C.dict) - c = C() - vereq(c.spam(), 42) - - # More metaclass examples - - class autosuper(type): - # Automatically add __super to the class - # This trick only works for dynamic classes - def __new__(metaclass, name, bases, dict): - cls = super(autosuper, metaclass).__new__(metaclass, - name, bases, dict) - # Name mangling for __super removes leading underscores - while name[:1] == "_": - name = name[1:] - if name: - name = "_%s__super" % name + cant(cls(), cls2) + + def test_set_dict(self): + # Testing __dict__ assignment... + class C(object): pass + a = C() + a.__dict__ = {'b': 1} + self.assertEqual(a.b, 1) + def cant(x, dict): + try: + x.__dict__ = dict + except (AttributeError, TypeError): + pass + else: + self.fail("shouldn't allow %r.__dict__ = %r" % (x, dict)) + cant(a, None) + cant(a, []) + cant(a, 1) + del a.__dict__ # Deleting __dict__ is allowed + + class Base(object): + pass + def verify_dict_readonly(x): + """ + x has to be an instance of a class inheriting from Base. + """ + cant(x, {}) + try: + del x.__dict__ + except (AttributeError, TypeError): + pass + else: + self.fail("shouldn't allow del %r.__dict__" % x) + dict_descr = Base.__dict__["__dict__"] + try: + dict_descr.__set__(x, {}) + except (AttributeError, TypeError): + pass else: - name = "__super" - setattr(cls, name, super(cls)) - return cls - class A: - __metaclass__ = autosuper - def meth(self): - return "A" - class B(A): - def meth(self): - return "B" + self.__super.meth() - class C(A): - def meth(self): - return "C" + self.__super.meth() - class D(C, B): - def meth(self): - return "D" + self.__super.meth() - vereq(D().meth(), "DCBA") - class E(B, C): - def meth(self): - return "E" + self.__super.meth() - vereq(E().meth(), "EBCA") - - class autoproperty(type): - # Automatically create property attributes when methods - # named _get_x and/or _set_x are found - def __new__(metaclass, name, bases, dict): - hits = {} - for key, val in dict.iteritems(): - if key.startswith("_get_"): - key = key[5:] - get, set = hits.get(key, (None, None)) - get = val - hits[key] = get, set - elif key.startswith("_set_"): - key = key[5:] - get, set = hits.get(key, (None, None)) - set = val - hits[key] = get, set - for key, (get, set) in hits.iteritems(): - dict[key] = property(get, set) - return super(autoproperty, metaclass).__new__(metaclass, - name, bases, dict) - class A: - __metaclass__ = autoproperty - def _get_x(self): - return -self.__x - def _set_x(self, x): - self.__x = -x - a = A() - verify(not hasattr(a, "x")) - a.x = 12 - vereq(a.x, 12) - vereq(a._A__x, -12) - - class multimetaclass(autoproperty, autosuper): - # Merge of multiple cooperating metaclasses - pass - class A: - __metaclass__ = multimetaclass - def _get_x(self): - return "A" - class B(A): - def _get_x(self): - return "B" + self.__super._get_x() - class C(A): - def _get_x(self): - return "C" + self.__super._get_x() - class D(C, B): - def _get_x(self): - return "D" + self.__super._get_x() - vereq(D().x, "DCBA") - - # Make sure type(x) doesn't call x.__class__.__init__ - class T(type): - counter = 0 - def __init__(self, *args): - T.counter += 1 - class C: - __metaclass__ = T - vereq(T.counter, 1) - a = C() - vereq(type(a), C) - vereq(T.counter, 1) - - class C(object): pass - c = C() - try: c() - except TypeError: pass - else: raise TestFailed, "calling object w/o call method should raise TypeError" - - # Testing code to find most derived baseclass - class A(type): - def __new__(*args, **kwargs): - return type.__new__(*args, **kwargs) - - class B(object): - pass - - class C(object): - __metaclass__ = A - - # The most derived metaclass of D is A rather than type. - class D(B, C): - pass - - -def pymods(): - if verbose: print "Testing Python subclass of module..." - log = [] - import sys - MT = type(sys) - class MM(MT): - def __init__(self, name): - MT.__init__(self, name) + self.fail("dict_descr allowed access to %r's dict" % x) + + # Classes don't allow __dict__ assignment and have readonly dicts + class Meta1(type, Base): + pass + class Meta2(Base, type): + pass + class D(object): + __metaclass__ = Meta1 + class E(object): + __metaclass__ = Meta2 + for cls in C, D, E: + verify_dict_readonly(cls) + class_dict = cls.__dict__ + try: + class_dict["spam"] = "eggs" + except TypeError: + pass + else: + self.fail("%r's __dict__ can be modified" % cls) + + # Modules also disallow __dict__ assignment + class Module1(types.ModuleType, Base): + pass + class Module2(Base, types.ModuleType): + pass + for ModuleType in Module1, Module2: + mod = ModuleType("spam") + verify_dict_readonly(mod) + mod.__dict__["spam"] = "eggs" + + # Exception's __dict__ can be replaced, but not deleted + class Exception1(Exception, Base): + pass + class Exception2(Base, Exception): + pass + for ExceptionType in Exception, Exception1, Exception2: + e = ExceptionType() + e.__dict__ = {"a": 1} + self.assertEqual(e.a, 1) + try: + del e.__dict__ + except (TypeError, AttributeError): + pass + else: + self.fail("%r's __dict__ can be deleted" % e) + + def test_pickles(self): + # Testing pickling and copying new-style classes and objects... + import pickle, cPickle + + def sorteditems(d): + L = d.items() + L.sort() + return L + + global C + class C(object): + def __init__(self, a, b): + super(C, self).__init__() + self.a = a + self.b = b + def __repr__(self): + return "C(%r, %r)" % (self.a, self.b) + + global C1 + class C1(list): + def __new__(cls, a, b): + return super(C1, cls).__new__(cls) + def __getnewargs__(self): + return (self.a, self.b) + def __init__(self, a, b): + self.a = a + self.b = b + def __repr__(self): + return "C1(%r, %r)<%r>" % (self.a, self.b, list(self)) + + global C2 + class C2(int): + def __new__(cls, a, b, val=0): + return super(C2, cls).__new__(cls, val) + def __getnewargs__(self): + return (self.a, self.b, int(self)) + def __init__(self, a, b, val=0): + self.a = a + self.b = b + def __repr__(self): + return "C2(%r, %r)<%r>" % (self.a, self.b, int(self)) + + global C3 + class C3(object): + def __init__(self, foo): + self.foo = foo + def __getstate__(self): + return self.foo + def __setstate__(self, foo): + self.foo = foo + + global C4classic, C4 + class C4classic: # classic + pass + class C4(C4classic, object): # mixed inheritance + pass + + for p in pickle, cPickle: + for bin in 0, 1: + for cls in C, C1, C2: + s = p.dumps(cls, bin) + cls2 = p.loads(s) + self.assert_(cls2 is cls) + + a = C1(1, 2); a.append(42); a.append(24) + b = C2("hello", "world", 42) + s = p.dumps((a, b), bin) + x, y = p.loads(s) + self.assertEqual(x.__class__, a.__class__) + self.assertEqual(sorteditems(x.__dict__), sorteditems(a.__dict__)) + self.assertEqual(y.__class__, b.__class__) + self.assertEqual(sorteditems(y.__dict__), sorteditems(b.__dict__)) + self.assertEqual(repr(x), repr(a)) + self.assertEqual(repr(y), repr(b)) + # Test for __getstate__ and __setstate__ on new style class + u = C3(42) + s = p.dumps(u, bin) + v = p.loads(s) + self.assertEqual(u.__class__, v.__class__) + self.assertEqual(u.foo, v.foo) + # Test for picklability of hybrid class + u = C4() + u.foo = 42 + s = p.dumps(u, bin) + v = p.loads(s) + self.assertEqual(u.__class__, v.__class__) + self.assertEqual(u.foo, v.foo) + + # Testing copy.deepcopy() + import copy + for cls in C, C1, C2: + cls2 = copy.deepcopy(cls) + self.assert_(cls2 is cls) + + a = C1(1, 2); a.append(42); a.append(24) + b = C2("hello", "world", 42) + x, y = copy.deepcopy((a, b)) + self.assertEqual(x.__class__, a.__class__) + self.assertEqual(sorteditems(x.__dict__), sorteditems(a.__dict__)) + self.assertEqual(y.__class__, b.__class__) + self.assertEqual(sorteditems(y.__dict__), sorteditems(b.__dict__)) + self.assertEqual(repr(x), repr(a)) + self.assertEqual(repr(y), repr(b)) + + def test_pickle_slots(self): + # Testing pickling of classes with __slots__ ... + import pickle, cPickle + # Pickling of classes with __slots__ but without __getstate__ should fail + global B, C, D, E + class B(object): + pass + for base in [object, B]: + class C(base): + __slots__ = ['a'] + class D(C): + pass + try: + pickle.dumps(C()) + except TypeError: + pass + else: + self.fail("should fail: pickle C instance - %s" % base) + try: + cPickle.dumps(C()) + except TypeError: + pass + else: + self.fail("should fail: cPickle C instance - %s" % base) + try: + pickle.dumps(C()) + except TypeError: + pass + else: + self.fail("should fail: pickle D instance - %s" % base) + try: + cPickle.dumps(D()) + except TypeError: + pass + else: + self.fail("should fail: cPickle D instance - %s" % base) + # Give C a nice generic __getstate__ and __setstate__ + class C(base): + __slots__ = ['a'] + def __getstate__(self): + try: + d = self.__dict__.copy() + except AttributeError: + d = {} + for cls in self.__class__.__mro__: + for sn in cls.__dict__.get('__slots__', ()): + try: + d[sn] = getattr(self, sn) + except AttributeError: + pass + return d + def __setstate__(self, d): + for k, v in d.items(): + setattr(self, k, v) + class D(C): + pass + # Now it should work + x = C() + y = pickle.loads(pickle.dumps(x)) + self.assertEqual(hasattr(y, 'a'), 0) + y = cPickle.loads(cPickle.dumps(x)) + self.assertEqual(hasattr(y, 'a'), 0) + x.a = 42 + y = pickle.loads(pickle.dumps(x)) + self.assertEqual(y.a, 42) + y = cPickle.loads(cPickle.dumps(x)) + self.assertEqual(y.a, 42) + x = D() + x.a = 42 + x.b = 100 + y = pickle.loads(pickle.dumps(x)) + self.assertEqual(y.a + y.b, 142) + y = cPickle.loads(cPickle.dumps(x)) + self.assertEqual(y.a + y.b, 142) + # A subclass that adds a slot should also work + class E(C): + __slots__ = ['b'] + x = E() + x.a = 42 + x.b = "foo" + y = pickle.loads(pickle.dumps(x)) + self.assertEqual(y.a, x.a) + self.assertEqual(y.b, x.b) + y = cPickle.loads(cPickle.dumps(x)) + self.assertEqual(y.a, x.a) + self.assertEqual(y.b, x.b) + + def test_binary_operator_override(self): + # Testing overrides of binary operations... + class I(int): + def __repr__(self): + return "I(%r)" % int(self) + def __add__(self, other): + return I(int(self) + int(other)) + __radd__ = __add__ + def __pow__(self, other, mod=None): + if mod is None: + return I(pow(int(self), int(other))) + else: + return I(pow(int(self), int(other), int(mod))) + def __rpow__(self, other, mod=None): + if mod is None: + return I(pow(int(other), int(self), mod)) + else: + return I(pow(int(other), int(self), int(mod))) + + self.assertEqual(repr(I(1) + I(2)), "I(3)") + self.assertEqual(repr(I(1) + 2), "I(3)") + self.assertEqual(repr(1 + I(2)), "I(3)") + self.assertEqual(repr(I(2) ** I(3)), "I(8)") + self.assertEqual(repr(2 ** I(3)), "I(8)") + self.assertEqual(repr(I(2) ** 3), "I(8)") + self.assertEqual(repr(pow(I(2), I(3), I(5))), "I(3)") + class S(str): + def __eq__(self, other): + return self.lower() == other.lower() + + def test_subclass_propagation(self): + # Testing propagation of slot functions to subclasses... + class A(object): + pass + class B(A): + pass + class C(A): + pass + class D(B, C): + pass + d = D() + orig_hash = hash(d) # related to id(d) in platform-dependent ways + A.__hash__ = lambda self: 42 + self.assertEqual(hash(d), 42) + C.__hash__ = lambda self: 314 + self.assertEqual(hash(d), 314) + B.__hash__ = lambda self: 144 + self.assertEqual(hash(d), 144) + D.__hash__ = lambda self: 100 + self.assertEqual(hash(d), 100) + del D.__hash__ + self.assertEqual(hash(d), 144) + del B.__hash__ + self.assertEqual(hash(d), 314) + del C.__hash__ + self.assertEqual(hash(d), 42) + del A.__hash__ + self.assertEqual(hash(d), orig_hash) + d.foo = 42 + d.bar = 42 + self.assertEqual(d.foo, 42) + self.assertEqual(d.bar, 42) def __getattribute__(self, name): - log.append(("getattr", name)) - return MT.__getattribute__(self, name) - def __setattr__(self, name, value): - log.append(("setattr", name, value)) - MT.__setattr__(self, name, value) - def __delattr__(self, name): - log.append(("delattr", name)) - MT.__delattr__(self, name) - a = MM("a") - a.foo = 12 - x = a.foo - del a.foo - vereq(log, [("setattr", "foo", 12), - ("getattr", "foo"), - ("delattr", "foo")]) - - # http://python.org/sf/1174712 - try: - class Module(types.ModuleType, str): - pass - except TypeError: - pass - else: - raise TestFailed("inheriting from ModuleType and str at the " - "same time should fail") - -def multi(): - if verbose: print "Testing multiple inheritance..." - class C(object): - def __init__(self): - self.__state = 0 - def getstate(self): - return self.__state - def setstate(self, state): - self.__state = state - a = C() - vereq(a.getstate(), 0) - a.setstate(10) - vereq(a.getstate(), 10) - class D(dict, C): - def __init__(self): - type({}).__init__(self) - C.__init__(self) - d = D() - vereq(d.keys(), []) - d["hello"] = "world" - vereq(d.items(), [("hello", "world")]) - vereq(d["hello"], "world") - vereq(d.getstate(), 0) - d.setstate(10) - vereq(d.getstate(), 10) - vereq(D.__mro__, (D, dict, C, object)) - - # SF bug #442833 - class Node(object): - def __int__(self): - return int(self.foo()) - def foo(self): - return "23" - class Frag(Node, list): - def foo(self): - return "42" - vereq(Node().__int__(), 23) - vereq(int(Node()), 23) - vereq(Frag().__int__(), 42) - vereq(int(Frag()), 42) - - # MI mixing classic and new-style classes. - - class A: - x = 1 - - class B(A): - pass - - class C(A): - x = 2 - - class D(B, C): - pass - vereq(D.x, 1) - - # Classic MRO is preserved for a classic base class. - class E(D, object): - pass - vereq(E.__mro__, (E, D, B, A, C, object)) - vereq(E.x, 1) - - # But with a mix of classic bases, their MROs are combined using - # new-style MRO. - class F(B, C, object): - pass - vereq(F.__mro__, (F, B, C, A, object)) - vereq(F.x, 2) - - # Try something else. - class C: - def cmethod(self): - return "C a" - def all_method(self): - return "C b" - - class M1(C, object): - def m1method(self): - return "M1 a" - def all_method(self): - return "M1 b" - - vereq(M1.__mro__, (M1, C, object)) - m = M1() - vereq(m.cmethod(), "C a") - vereq(m.m1method(), "M1 a") - vereq(m.all_method(), "M1 b") - - class D(C): - def dmethod(self): - return "D a" - def all_method(self): - return "D b" - - class M2(D, object): - def m2method(self): - return "M2 a" - def all_method(self): - return "M2 b" - - vereq(M2.__mro__, (M2, D, C, object)) - m = M2() - vereq(m.cmethod(), "C a") - vereq(m.dmethod(), "D a") - vereq(m.m2method(), "M2 a") - vereq(m.all_method(), "M2 b") - - class M3(M1, M2, object): - def m3method(self): - return "M3 a" - def all_method(self): - return "M3 b" - vereq(M3.__mro__, (M3, M1, M2, D, C, object)) - m = M3() - vereq(m.cmethod(), "C a") - vereq(m.dmethod(), "D a") - vereq(m.m1method(), "M1 a") - vereq(m.m2method(), "M2 a") - vereq(m.m3method(), "M3 a") - vereq(m.all_method(), "M3 b") - - class Classic: - pass - try: - class New(Classic): - __metaclass__ = type - except TypeError: - pass - else: - raise TestFailed, "new class with only classic bases - shouldn't be" - -def diamond(): - if verbose: print "Testing multiple inheritance special cases..." - class A(object): - def spam(self): return "A" - vereq(A().spam(), "A") - class B(A): - def boo(self): return "B" - def spam(self): return "B" - vereq(B().spam(), "B") - vereq(B().boo(), "B") - class C(A): - def boo(self): return "C" - vereq(C().spam(), "A") - vereq(C().boo(), "C") - class D(B, C): pass - vereq(D().spam(), "B") - vereq(D().boo(), "B") - vereq(D.__mro__, (D, B, C, A, object)) - class E(C, B): pass - vereq(E().spam(), "B") - vereq(E().boo(), "C") - vereq(E.__mro__, (E, C, B, A, object)) - # MRO order disagreement - try: - class F(D, E): pass - except TypeError: - pass - else: - raise TestFailed, "expected MRO order disagreement (F)" - try: - class G(E, D): pass - except TypeError: - pass - else: - raise TestFailed, "expected MRO order disagreement (G)" - - -# see thread python-dev/2002-October/029035.html -def ex5(): - if verbose: print "Testing ex5 from C3 switch discussion..." - class A(object): pass - class B(object): pass - class C(object): pass - class X(A): pass - class Y(A): pass - class Z(X,B,Y,C): pass - vereq(Z.__mro__, (Z, X, B, Y, A, C, object)) - -# see "A Monotonic Superclass Linearization for Dylan", -# by Kim Barrett et al. (OOPSLA 1996) -def monotonicity(): - if verbose: print "Testing MRO monotonicity..." - class Boat(object): pass - class DayBoat(Boat): pass - class WheelBoat(Boat): pass - class EngineLess(DayBoat): pass - class SmallMultihull(DayBoat): pass - class PedalWheelBoat(EngineLess,WheelBoat): pass - class SmallCatamaran(SmallMultihull): pass - class Pedalo(PedalWheelBoat,SmallCatamaran): pass - - vereq(PedalWheelBoat.__mro__, - (PedalWheelBoat, EngineLess, DayBoat, WheelBoat, Boat, - object)) - vereq(SmallCatamaran.__mro__, - (SmallCatamaran, SmallMultihull, DayBoat, Boat, object)) - - vereq(Pedalo.__mro__, - (Pedalo, PedalWheelBoat, EngineLess, SmallCatamaran, - SmallMultihull, DayBoat, WheelBoat, Boat, object)) - -# see "A Monotonic Superclass Linearization for Dylan", -# by Kim Barrett et al. (OOPSLA 1996) -def consistency_with_epg(): - if verbose: print "Testing consistentcy with EPG..." - class Pane(object): pass - class ScrollingMixin(object): pass - class EditingMixin(object): pass - class ScrollablePane(Pane,ScrollingMixin): pass - class EditablePane(Pane,EditingMixin): pass - class EditableScrollablePane(ScrollablePane,EditablePane): pass - - vereq(EditableScrollablePane.__mro__, - (EditableScrollablePane, ScrollablePane, EditablePane, - Pane, ScrollingMixin, EditingMixin, object)) + if name == "foo": + return 24 + return object.__getattribute__(self, name) + A.__getattribute__ = __getattribute__ + self.assertEqual(d.foo, 24) + self.assertEqual(d.bar, 42) + def __getattr__(self, name): + if name in ("spam", "foo", "bar"): + return "hello" + raise AttributeError, name + B.__getattr__ = __getattr__ + self.assertEqual(d.spam, "hello") + self.assertEqual(d.foo, 24) + self.assertEqual(d.bar, 42) + del A.__getattribute__ + self.assertEqual(d.foo, 42) + del d.foo + self.assertEqual(d.foo, "hello") + self.assertEqual(d.bar, 42) + del B.__getattr__ + try: + d.foo + except AttributeError: + pass + else: + self.fail("d.foo should be undefined now") + + # Test a nasty bug in recurse_down_subclasses() + import gc + class A(object): + pass + class B(A): + pass + del B + gc.collect() + A.__setitem__ = lambda *a: None # crash + + def test_buffer_inheritance(self): + # Testing that buffer interface is inherited ... + + import binascii + # SF bug [#470040] ParseTuple t# vs subclasses. + + class MyStr(str): + pass + base = 'abc' + m = MyStr(base) + # b2a_hex uses the buffer interface to get its argument's value, via + # PyArg_ParseTuple 't#' code. + self.assertEqual(binascii.b2a_hex(m), binascii.b2a_hex(base)) + + # It's not clear that unicode will continue to support the character + # buffer interface, and this test will fail if that's taken away. + class MyUni(unicode): + pass + base = u'abc' + m = MyUni(base) + self.assertEqual(binascii.b2a_hex(m), binascii.b2a_hex(base)) + + class MyInt(int): + pass + m = MyInt(42) + try: + binascii.b2a_hex(m) + self.fail('subclass of int should not have a buffer interface') + except TypeError: + pass -mro_err_msg = """Cannot create a consistent method resolution -order (MRO) for bases """ + def test_str_of_str_subclass(self): + # Testing __str__ defined in subclass of str ... + import binascii + import cStringIO + + class octetstring(str): + def __str__(self): + return binascii.b2a_hex(self) + def __repr__(self): + return self + " repr" + + o = octetstring('A') + self.assertEqual(type(o), octetstring) + self.assertEqual(type(str(o)), str) + self.assertEqual(type(repr(o)), str) + self.assertEqual(ord(o), 0x41) + self.assertEqual(str(o), '41') + self.assertEqual(repr(o), 'A repr') + self.assertEqual(o.__str__(), '41') + self.assertEqual(o.__repr__(), 'A repr') + + capture = cStringIO.StringIO() + # Calling str() or not exercises different internal paths. + print >> capture, o + print >> capture, str(o) + self.assertEqual(capture.getvalue(), '41\n41\n') + capture.close() + + def test_keyword_arguments(self): + # Testing keyword arguments to __init__, __call__... + def f(a): return a + self.assertEqual(f.__call__(a=42), 42) + a = [] + list.__init__(a, sequence=[0, 1, 2]) + self.assertEqual(a, [0, 1, 2]) + + def test_recursive_call(self): + # Testing recursive __call__() by setting to instance of class... + class A(object): + pass -def mro_disagreement(): - if verbose: print "Testing error messages for MRO disagreement..." - def raises(exc, expected, callable, *args): - try: - callable(*args) - except exc, msg: - if not str(msg).startswith(expected): - raise TestFailed, "Message %r, expected %r" % (str(msg), - expected) - else: - raise TestFailed, "Expected %s" % exc - class A(object): pass - class B(A): pass - class C(object): pass - # Test some very simple errors - raises(TypeError, "duplicate base class A", - type, "X", (A, A), {}) - raises(TypeError, mro_err_msg, - type, "X", (A, B), {}) - raises(TypeError, mro_err_msg, - type, "X", (A, C, B), {}) - # Test a slightly more complex error - class GridLayout(object): pass - class HorizontalGrid(GridLayout): pass - class VerticalGrid(GridLayout): pass - class HVGrid(HorizontalGrid, VerticalGrid): pass - class VHGrid(VerticalGrid, HorizontalGrid): pass - raises(TypeError, mro_err_msg, - type, "ConfusedGrid", (HVGrid, VHGrid), {}) - -def objects(): - if verbose: print "Testing object class..." - a = object() - vereq(a.__class__, object) - vereq(type(a), object) - b = object() - verify(a is not b) - verify(not hasattr(a, "foo")) - try: - a.foo = 12 - except (AttributeError, TypeError): - pass - else: - verify(0, "object() should not allow setting a foo attribute") - verify(not hasattr(object(), "__dict__")) - - class Cdict(object): - pass - x = Cdict() - vereq(x.__dict__, {}) - x.foo = 1 - vereq(x.foo, 1) - vereq(x.__dict__, {'foo': 1}) - -def slots(): - if verbose: print "Testing __slots__..." - class C0(object): - __slots__ = [] - x = C0() - verify(not hasattr(x, "__dict__")) - verify(not hasattr(x, "foo")) - - class C1(object): - __slots__ = ['a'] - x = C1() - verify(not hasattr(x, "__dict__")) - verify(not hasattr(x, "a")) - x.a = 1 - vereq(x.a, 1) - x.a = None - veris(x.a, None) - del x.a - verify(not hasattr(x, "a")) - - class C3(object): - __slots__ = ['a', 'b', 'c'] - x = C3() - verify(not hasattr(x, "__dict__")) - verify(not hasattr(x, 'a')) - verify(not hasattr(x, 'b')) - verify(not hasattr(x, 'c')) - x.a = 1 - x.b = 2 - x.c = 3 - vereq(x.a, 1) - vereq(x.b, 2) - vereq(x.c, 3) - - class C4(object): - """Validate name mangling""" - __slots__ = ['__a'] - def __init__(self, value): - self.__a = value - def get(self): - return self.__a - x = C4(5) - verify(not hasattr(x, '__dict__')) - verify(not hasattr(x, '__a')) - vereq(x.get(), 5) - try: - x.__a = 6 - except AttributeError: - pass - else: - raise TestFailed, "Double underscored names not mangled" + A.__call__ = A() + try: + A()() + except RuntimeError: + pass + else: + self.fail("Recursion limit should have been reached for __call__()") - # Make sure slot names are proper identifiers - try: - class C(object): - __slots__ = [None] - except TypeError: - pass - else: - raise TestFailed, "[None] slots not caught" - try: - class C(object): - __slots__ = ["foo bar"] - except TypeError: - pass - else: - raise TestFailed, "['foo bar'] slots not caught" - try: + def test_delete_hook(self): + # Testing __del__ hook... + log = [] class C(object): - __slots__ = ["foo\0bar"] - except TypeError: - pass - else: - raise TestFailed, "['foo\\0bar'] slots not caught" - try: - class C(object): - __slots__ = ["1"] - except TypeError: - pass - else: - raise TestFailed, "['1'] slots not caught" - try: - class C(object): - __slots__ = [""] - except TypeError: - pass - else: - raise TestFailed, "[''] slots not caught" - class C(object): - __slots__ = ["a", "a_b", "_a", "A0123456789Z"] - # XXX(nnorwitz): was there supposed to be something tested - # from the class above? - - # Test a single string is not expanded as a sequence. - class C(object): - __slots__ = "abc" - c = C() - c.abc = 5 - vereq(c.abc, 5) - - # Test unicode slot names - try: - unicode - except NameError: - pass - else: - # Test a single unicode string is not expanded as a sequence. - class C(object): - __slots__ = unicode("abc") + def __del__(self): + log.append(1) c = C() - c.abc = 5 - vereq(c.abc, 5) + self.assertEqual(log, []) + del c + self.assertEqual(log, [1]) + + class D(object): pass + d = D() + try: del d[0] + except TypeError: pass + else: self.fail("invalid del() didn't raise TypeError") - # _unicode_to_string used to modify slots in certain circumstances - slots = (unicode("foo"), unicode("bar")) - class C(object): - __slots__ = slots - x = C() - x.foo = 5 - vereq(x.foo, 5) - veris(type(slots[0]), unicode) - # this used to leak references + def test_hash_inheritance(self): + # Testing hash of mutable subclasses... + + class mydict(dict): + pass + d = mydict() try: - class C(object): - __slots__ = [unichr(128)] - except (TypeError, UnicodeEncodeError): + hash(d) + except TypeError: pass else: - raise TestFailed, "[unichr(128)] slots not caught" + self.fail("hash() of dict subclass should fail") - # Test leaks - class Counted(object): - counter = 0 # counts the number of instances alive - def __init__(self): - Counted.counter += 1 - def __del__(self): - Counted.counter -= 1 - class C(object): - __slots__ = ['a', 'b', 'c'] - x = C() - x.a = Counted() - x.b = Counted() - x.c = Counted() - vereq(Counted.counter, 3) - del x - vereq(Counted.counter, 0) - class D(C): - pass - x = D() - x.a = Counted() - x.z = Counted() - vereq(Counted.counter, 2) - del x - vereq(Counted.counter, 0) - class E(D): - __slots__ = ['e'] - x = E() - x.a = Counted() - x.z = Counted() - x.e = Counted() - vereq(Counted.counter, 3) - del x - vereq(Counted.counter, 0) - - # Test cyclical leaks [SF bug 519621] - class F(object): - __slots__ = ['a', 'b'] - log = [] - s = F() - s.a = [Counted(), s] - vereq(Counted.counter, 1) - s = None - import gc - gc.collect() - vereq(Counted.counter, 0) - - # Test lookup leaks [SF bug 572567] - import sys,gc - class G(object): - def __cmp__(self, other): - return 0 - g = G() - orig_objects = len(gc.get_objects()) - for i in xrange(10): - g==g - new_objects = len(gc.get_objects()) - vereq(orig_objects, new_objects) - class H(object): - __slots__ = ['a', 'b'] - def __init__(self): - self.a = 1 - self.b = 2 - def __del__(self): - assert self.a == 1 - assert self.b == 2 - - save_stderr = sys.stderr - sys.stderr = sys.stdout - h = H() - try: - del h - finally: - sys.stderr = save_stderr - -def slotspecials(): - if verbose: print "Testing __dict__ and __weakref__ in __slots__..." - - class D(object): - __slots__ = ["__dict__"] - a = D() - verify(hasattr(a, "__dict__")) - verify(not hasattr(a, "__weakref__")) - a.foo = 42 - vereq(a.__dict__, {"foo": 42}) - - class W(object): - __slots__ = ["__weakref__"] - a = W() - verify(hasattr(a, "__weakref__")) - verify(not hasattr(a, "__dict__")) - try: - a.foo = 42 - except AttributeError: - pass - else: - raise TestFailed, "shouldn't be allowed to set a.foo" - - class C1(W, D): - __slots__ = [] - a = C1() - verify(hasattr(a, "__dict__")) - verify(hasattr(a, "__weakref__")) - a.foo = 42 - vereq(a.__dict__, {"foo": 42}) - - class C2(D, W): - __slots__ = [] - a = C2() - verify(hasattr(a, "__dict__")) - verify(hasattr(a, "__weakref__")) - a.foo = 42 - vereq(a.__dict__, {"foo": 42}) - -# MRO order disagreement -# -# class C3(C1, C2): -# __slots__ = [] -# -# class C4(C2, C1): -# __slots__ = [] - -def dynamics(): - if verbose: print "Testing class attribute propagation..." - class D(object): - pass - class E(D): - pass - class F(D): - pass - D.foo = 1 - vereq(D.foo, 1) - # Test that dynamic attributes are inherited - vereq(E.foo, 1) - vereq(F.foo, 1) - # Test dynamic instances - class C(object): - pass - a = C() - verify(not hasattr(a, "foobar")) - C.foobar = 2 - vereq(a.foobar, 2) - C.method = lambda self: 42 - vereq(a.method(), 42) - C.__repr__ = lambda self: "C()" - vereq(repr(a), "C()") - C.__int__ = lambda self: 100 - vereq(int(a), 100) - vereq(a.foobar, 2) - verify(not hasattr(a, "spam")) - def mygetattr(self, name): - if name == "spam": - return "spam" - raise AttributeError - C.__getattr__ = mygetattr - vereq(a.spam, "spam") - a.new = 12 - vereq(a.new, 12) - def mysetattr(self, name, value): - if name == "spam": - raise AttributeError - return object.__setattr__(self, name, value) - C.__setattr__ = mysetattr - try: - a.spam = "not spam" - except AttributeError: - pass - else: - verify(0, "expected AttributeError") - vereq(a.spam, "spam") - class D(C): - pass - d = D() - d.foo = 1 - vereq(d.foo, 1) - - # Test handling of int*seq and seq*int - class I(int): - pass - vereq("a"*I(2), "aa") - vereq(I(2)*"a", "aa") - vereq(2*I(3), 6) - vereq(I(3)*2, 6) - vereq(I(3)*I(2), 6) - - # Test handling of long*seq and seq*long - class L(long): - pass - vereq("a"*L(2L), "aa") - vereq(L(2L)*"a", "aa") - vereq(2*L(3), 6) - vereq(L(3)*2, 6) - vereq(L(3)*L(2), 6) - - # Test comparison of classes with dynamic metaclasses - class dynamicmetaclass(type): - pass - class someclass: - __metaclass__ = dynamicmetaclass - verify(someclass != object) - -def errors(): - if verbose: print "Testing errors..." - - try: - class C(list, dict): - pass - except TypeError: - pass - else: - verify(0, "inheritance from both list and dict should be illegal") - - try: - class C(object, None): - pass - except TypeError: - pass - else: - verify(0, "inheritance from non-type should be illegal") - class Classic: - pass - - try: - class C(type(len)): - pass - except TypeError: - pass - else: - verify(0, "inheritance from CFunction should be illegal") + class mylist(list): + pass + d = mylist() + try: + hash(d) + except TypeError: + pass + else: + self.fail("hash() of list subclass should fail") - try: - class C(object): - __slots__ = 1 - except TypeError: - pass - else: - verify(0, "__slots__ = 1 should be illegal") + def test_str_operations(self): + try: 'a' + 5 + except TypeError: pass + else: self.fail("'' + 5 doesn't raise TypeError") + + try: ''.split('') + except ValueError: pass + else: self.fail("''.split('') doesn't raise ValueError") + + try: ''.join([0]) + except TypeError: pass + else: self.fail("''.join([0]) doesn't raise TypeError") + + try: ''.rindex('5') + except ValueError: pass + else: self.fail("''.rindex('5') doesn't raise ValueError") + + try: '%(n)s' % None + except TypeError: pass + else: self.fail("'%(n)s' % None doesn't raise TypeError") + + try: '%(n' % {} + except ValueError: pass + else: self.fail("'%(n' % {} '' doesn't raise ValueError") + + try: '%*s' % ('abc') + except TypeError: pass + else: self.fail("'%*s' % ('abc') doesn't raise TypeError") + + try: '%*.*s' % ('abc', 5) + except TypeError: pass + else: self.fail("'%*.*s' % ('abc', 5) doesn't raise TypeError") + + try: '%s' % (1, 2) + except TypeError: pass + else: self.fail("'%s' % (1, 2) doesn't raise TypeError") + + try: '%' % None + except ValueError: pass + else: self.fail("'%' % None doesn't raise ValueError") + + self.assertEqual('534253'.isdigit(), 1) + self.assertEqual('534253x'.isdigit(), 0) + self.assertEqual('%c' % 5, '\x05') + self.assertEqual('%c' % '5', '5') + + def test_deepcopy_recursive(self): + # Testing deepcopy of recursive objects... + class Node: + pass + a = Node() + b = Node() + a.b = b + b.a = a + z = deepcopy(a) # This blew up before + + def test_unintialized_modules(self): + # Testing uninitialized module objects... + from types import ModuleType as M + m = M.__new__(M) + str(m) + self.assertEqual(hasattr(m, "__name__"), 0) + self.assertEqual(hasattr(m, "__file__"), 0) + self.assertEqual(hasattr(m, "foo"), 0) + self.assertEqual(m.__dict__, None) + m.foo = 1 + self.assertEqual(m.__dict__, {"foo": 1}) - try: + def test_funny_new(self): + # Testing __new__ returning something unexpected... class C(object): - __slots__ = [1] - except TypeError: - pass - else: - verify(0, "__slots__ = [1] should be illegal") - - class M1(type): - pass - class M2(type): - pass - class A1(object): - __metaclass__ = M1 - class A2(object): - __metaclass__ = M2 - try: - class B(A1, A2): - pass - except TypeError: - pass - else: - verify(0, "finding the most derived metaclass should have failed") - -def classmethods(): - if verbose: print "Testing class methods..." - class C(object): - def foo(*a): return a - goo = classmethod(foo) - c = C() - vereq(C.goo(1), (C, 1)) - vereq(c.goo(1), (C, 1)) - vereq(c.foo(1), (c, 1)) - class D(C): - pass - d = D() - vereq(D.goo(1), (D, 1)) - vereq(d.goo(1), (D, 1)) - vereq(d.foo(1), (d, 1)) - vereq(D.foo(d, 1), (d, 1)) - # Test for a specific crash (SF bug 528132) - def f(cls, arg): return (cls, arg) - ff = classmethod(f) - vereq(ff.__get__(0, int)(42), (int, 42)) - vereq(ff.__get__(0)(42), (int, 42)) - - # Test super() with classmethods (SF bug 535444) - veris(C.goo.im_self, C) - veris(D.goo.im_self, D) - veris(super(D,D).goo.im_self, D) - veris(super(D,d).goo.im_self, D) - vereq(super(D,D).goo(), (D,)) - vereq(super(D,d).goo(), (D,)) - - # Verify that argument is checked for callability (SF bug 753451) - try: - classmethod(1).__get__(1) - except TypeError: - pass - else: - raise TestFailed, "classmethod should check for callability" - - # Verify that classmethod() doesn't allow keyword args - try: - classmethod(f, kw=1) - except TypeError: - pass - else: - raise TestFailed, "classmethod shouldn't accept keyword args" - -def classmethods_in_c(): - if verbose: print "Testing C-based class methods..." - import xxsubtype as spam - a = (1, 2, 3) - d = {'abc': 123} - x, a1, d1 = spam.spamlist.classmeth(*a, **d) - veris(x, spam.spamlist) - vereq(a, a1) - vereq(d, d1) - x, a1, d1 = spam.spamlist().classmeth(*a, **d) - veris(x, spam.spamlist) - vereq(a, a1) - vereq(d, d1) - -def staticmethods(): - if verbose: print "Testing static methods..." - class C(object): - def foo(*a): return a - goo = staticmethod(foo) - c = C() - vereq(C.goo(1), (1,)) - vereq(c.goo(1), (1,)) - vereq(c.foo(1), (c, 1,)) - class D(C): - pass - d = D() - vereq(D.goo(1), (1,)) - vereq(d.goo(1), (1,)) - vereq(d.foo(1), (d, 1)) - vereq(D.foo(d, 1), (d, 1)) - -def staticmethods_in_c(): - if verbose: print "Testing C-based static methods..." - import xxsubtype as spam - a = (1, 2, 3) - d = {"abc": 123} - x, a1, d1 = spam.spamlist.staticmeth(*a, **d) - veris(x, None) - vereq(a, a1) - vereq(d, d1) - x, a1, d2 = spam.spamlist().staticmeth(*a, **d) - veris(x, None) - vereq(a, a1) - vereq(d, d1) - -def classic(): - if verbose: print "Testing classic classes..." - class C: - def foo(*a): return a - goo = classmethod(foo) - c = C() - vereq(C.goo(1), (C, 1)) - vereq(c.goo(1), (C, 1)) - vereq(c.foo(1), (c, 1)) - class D(C): - pass - d = D() - vereq(D.goo(1), (D, 1)) - vereq(d.goo(1), (D, 1)) - vereq(d.foo(1), (d, 1)) - vereq(D.foo(d, 1), (d, 1)) - class E: # *not* subclassing from C - foo = C.foo - vereq(E().foo, C.foo) # i.e., unbound - verify(repr(C.foo.__get__(C())).startswith("= 0) - vereq(str(c1), repr(c1)) - verify(-1 not in c1) - for i in range(10): - verify(i in c1) - verify(10 not in c1) - # Test the default behavior for dynamic classes - class D(object): - def __getitem__(self, i): - if 0 <= i < 10: return i - raise IndexError - d1 = D() - d2 = D() - verify(not not d1) - verify(id(d1) != id(d2)) - hash(d1) - hash(d2) - vereq(cmp(d1, d2), cmp(id(d1), id(d2))) - vereq(d1, d1) - verify(d1 != d2) - verify(not d1 != d1) - verify(not d1 == d2) - # Note that the module name appears in str/repr, and that varies - # depending on whether this test is run standalone or from a framework. - verify(str(d1).find('D object at ') >= 0) - vereq(str(d1), repr(d1)) - verify(-1 not in d1) - for i in range(10): - verify(i in d1) - verify(10 not in d1) - # Test overridden behavior for static classes - class Proxy(object): - def __init__(self, x): - self.x = x - def __nonzero__(self): - return not not self.x - def __hash__(self): - return hash(self.x) - def __eq__(self, other): - return self.x == other - def __ne__(self, other): - return self.x != other - def __cmp__(self, other): - return cmp(self.x, other.x) - def __str__(self): - return "Proxy:%s" % self.x - def __repr__(self): - return "Proxy(%r)" % self.x - def __contains__(self, value): - return value in self.x - p0 = Proxy(0) - p1 = Proxy(1) - p_1 = Proxy(-1) - verify(not p0) - verify(not not p1) - vereq(hash(p0), hash(0)) - vereq(p0, p0) - verify(p0 != p1) - verify(not p0 != p0) - vereq(not p0, p1) - vereq(cmp(p0, p1), -1) - vereq(cmp(p0, p0), 0) - vereq(cmp(p0, p_1), 1) - vereq(str(p0), "Proxy:0") - vereq(repr(p0), "Proxy(0)") - p10 = Proxy(range(10)) - verify(-1 not in p10) - for i in range(10): - verify(i in p10) - verify(10 not in p10) - # Test overridden behavior for dynamic classes - class DProxy(object): - def __init__(self, x): - self.x = x - def __nonzero__(self): - return not not self.x - def __hash__(self): - return hash(self.x) - def __eq__(self, other): - return self.x == other - def __ne__(self, other): - return self.x != other - def __cmp__(self, other): - return cmp(self.x, other.x) - def __str__(self): - return "DProxy:%s" % self.x - def __repr__(self): - return "DProxy(%r)" % self.x - def __contains__(self, value): - return value in self.x - p0 = DProxy(0) - p1 = DProxy(1) - p_1 = DProxy(-1) - verify(not p0) - verify(not not p1) - vereq(hash(p0), hash(0)) - vereq(p0, p0) - verify(p0 != p1) - verify(not p0 != p0) - vereq(not p0, p1) - vereq(cmp(p0, p1), -1) - vereq(cmp(p0, p0), 0) - vereq(cmp(p0, p_1), 1) - vereq(str(p0), "DProxy:0") - vereq(repr(p0), "DProxy(0)") - p10 = DProxy(range(10)) - verify(-1 not in p10) - for i in range(10): - verify(i in p10) - verify(10 not in p10) - # Safety test for __cmp__ - def unsafecmp(a, b): - try: - a.__class__.__cmp__(a, b) - except TypeError: - pass - else: - raise TestFailed, "shouldn't allow %s.__cmp__(%r, %r)" % ( - a.__class__, a, b) - unsafecmp(u"123", "123") - unsafecmp("123", u"123") - unsafecmp(1, 1.0) - unsafecmp(1.0, 1) - unsafecmp(1, 1L) - unsafecmp(1L, 1) - -def recursions(): - if verbose: - print "Testing recursion checks ..." - - class Letter(str): - def __new__(cls, letter): - if letter == 'EPS': - return str.__new__(cls) - return str.__new__(cls, letter) - def __str__(self): - if not self: - return 'EPS' - return self - # sys.stdout needs to be the original to trigger the recursion bug - import sys - test_stdout = sys.stdout - sys.stdout = get_original_stdout() - try: - # nothing should actually be printed, this should raise an exception - print Letter('w') - except RuntimeError: - pass - else: - raise TestFailed, "expected a RuntimeError for print recursion" - sys.stdout = test_stdout - - # Bug #1202533. - class A(object): - pass - A.__mul__ = types.MethodType(lambda self, x: self * x, None, A) - try: - A()*2 - except RuntimeError: - pass - else: - raise TestFailed("expected a RuntimeError") - -def weakrefs(): - if verbose: print "Testing weak references..." - import weakref - class C(object): - pass - c = C() - r = weakref.ref(c) - verify(r() is c) - del c - verify(r() is None) - del r - class NoWeak(object): - __slots__ = ['foo'] - no = NoWeak() - try: - weakref.ref(no) - except TypeError, msg: - verify(str(msg).find("weak reference") >= 0) - else: - verify(0, "weakref.ref(no) should be illegal") - class Weak(object): - __slots__ = ['foo', '__weakref__'] - yes = Weak() - r = weakref.ref(yes) - verify(r() is yes) - del yes - verify(r() is None) - del r - -def properties(): - if verbose: print "Testing property..." - class C(object): - def getx(self): - return self.__x - def setx(self, value): - self.__x = value - def delx(self): - del self.__x - x = property(getx, setx, delx, doc="I'm the x property.") - a = C() - verify(not hasattr(a, "x")) - a.x = 42 - vereq(a._C__x, 42) - vereq(a.x, 42) - del a.x - verify(not hasattr(a, "x")) - verify(not hasattr(a, "_C__x")) - C.x.__set__(a, 100) - vereq(C.x.__get__(a), 100) - C.x.__delete__(a) - verify(not hasattr(a, "x")) - - raw = C.__dict__['x'] - verify(isinstance(raw, property)) - - attrs = dir(raw) - verify("__doc__" in attrs) - verify("fget" in attrs) - verify("fset" in attrs) - verify("fdel" in attrs) - - vereq(raw.__doc__, "I'm the x property.") - verify(raw.fget is C.__dict__['getx']) - verify(raw.fset is C.__dict__['setx']) - verify(raw.fdel is C.__dict__['delx']) + # stuff that shouldn't: + class L(list): + pass - for attr in "__doc__", "fget", "fset", "fdel": - try: - setattr(raw, attr, 42) - except TypeError, msg: - if str(msg).find('readonly') < 0: - raise TestFailed("when setting readonly attr %r on a " - "property, got unexpected TypeError " - "msg %r" % (attr, str(msg))) - else: - raise TestFailed("expected TypeError from trying to set " - "readonly %r attr on a property" % attr) - - class D(object): - __getitem__ = property(lambda s: 1/0) - - d = D() - try: - for i in d: - str(i) - except ZeroDivisionError: - pass - else: - raise TestFailed, "expected ZeroDivisionError from bad property" - - class E(object): - def getter(self): - "getter method" - return 0 - def setter(self, value): - "setter method" - pass - prop = property(getter) - vereq(prop.__doc__, "getter method") - prop2 = property(fset=setter) - vereq(prop2.__doc__, None) - - # this segfaulted in 2.5b2 - try: - import _testcapi - except ImportError: - pass - else: - class X(object): - p = property(_testcapi.test_with_docstring) - - -def properties_plus(): - class C(object): - foo = property(doc="hello") - @foo.getter - def foo(self): - return self._foo - @foo.setter - def foo(self, value): - self._foo = abs(value) - @foo.deleter - def foo(self): - del self._foo - c = C() - assert C.foo.__doc__ == "hello" - assert not hasattr(c, "foo") - c.foo = -42 - assert hasattr(c, '_foo') - assert c._foo == 42 - assert c.foo == 42 - del c.foo - assert not hasattr(c, '_foo') - assert not hasattr(c, "foo") - - class D(C): - @C.foo.deleter - def foo(self): - try: - del self._foo - except AttributeError: - pass - d = D() - d.foo = 24 - assert d.foo == 24 - del d.foo - del d.foo - - class E(object): - @property - def foo(self): - return self._foo - @foo.setter - def foo(self, value): - raise RuntimeError - @foo.setter - def foo(self, value): - self._foo = abs(value) - @foo.deleter - def foo(self, value=None): - del self._foo - - e = E() - e.foo = -42 - assert e.foo == 42 - del e.foo - - class F(E): - @E.foo.deleter - def foo(self): - del self._foo - @foo.setter - def foo(self, value): - self._foo = max(0, value) - f = F() - f.foo = -10 - assert f.foo == 0 - del f.foo - - -def supers(): - if verbose: print "Testing super..." - - class A(object): - def meth(self, a): - return "A(%r)" % a - - vereq(A().meth(1), "A(1)") - - class B(A): - def __init__(self): - self.__super = super(B, self) - def meth(self, a): - return "B(%r)" % a + self.__super.meth(a) - - vereq(B().meth(2), "B(2)A(2)") - - class C(A): - def meth(self, a): - return "C(%r)" % a + self.__super.meth(a) - C._C__super = super(C) - - vereq(C().meth(3), "C(3)A(3)") - - class D(C, B): - def meth(self, a): - return "D(%r)" % a + super(D, self).meth(a) - - vereq(D().meth(4), "D(4)C(4)B(4)A(4)") - - # Test for subclassing super - - class mysuper(super): - def __init__(self, *args): - return super(mysuper, self).__init__(*args) - - class E(D): - def meth(self, a): - return "E(%r)" % a + mysuper(E, self).meth(a) - - vereq(E().meth(5), "E(5)D(5)C(5)B(5)A(5)") - - class F(E): - def meth(self, a): - s = self.__super # == mysuper(F, self) - return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a) - F._F__super = mysuper(F) - - vereq(F().meth(6), "F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)") - - # Make sure certain errors are raised - - try: - super(D, 42) - except TypeError: - pass - else: - raise TestFailed, "shouldn't allow super(D, 42)" - - try: - super(D, C()) - except TypeError: - pass - else: - raise TestFailed, "shouldn't allow super(D, C())" - - try: - super(D).__get__(12) - except TypeError: - pass - else: - raise TestFailed, "shouldn't allow super(D).__get__(12)" - - try: - super(D).__get__(C()) - except TypeError: - pass - else: - raise TestFailed, "shouldn't allow super(D).__get__(C())" - - # Make sure data descriptors can be overridden and accessed via super - # (new feature in Python 2.3) - - class DDbase(object): - def getx(self): return 42 - x = property(getx) - - class DDsub(DDbase): - def getx(self): return "hello" - x = property(getx) - - dd = DDsub() - vereq(dd.x, "hello") - vereq(super(DDsub, dd).x, 42) - - # Ensure that super() lookup of descriptor from classmethod - # works (SF ID# 743627) - - class Base(object): - aProp = property(lambda self: "foo") - - class Sub(Base): - @classmethod - def test(klass): - return super(Sub,klass).aProp - - veris(Sub.test(), Base.aProp) - - # Verify that super() doesn't allow keyword args - try: - super(Base, kw=1) - except TypeError: - pass - else: - raise TestFailed, "super shouldn't accept keyword args" - -def inherits(): - if verbose: print "Testing inheritance from basic types..." - - class hexint(int): - def __repr__(self): - return hex(self) - def __add__(self, other): - return hexint(int.__add__(self, other)) - # (Note that overriding __radd__ doesn't work, - # because the int type gets first dibs.) - vereq(repr(hexint(7) + 9), "0x10") - vereq(repr(hexint(1000) + 7), "0x3ef") - a = hexint(12345) - vereq(a, 12345) - vereq(int(a), 12345) - verify(int(a).__class__ is int) - vereq(hash(a), hash(12345)) - verify((+a).__class__ is int) - verify((a >> 0).__class__ is int) - verify((a << 0).__class__ is int) - verify((hexint(0) << 12).__class__ is int) - verify((hexint(0) >> 12).__class__ is int) - - class octlong(long): - __slots__ = [] - def __str__(self): - s = oct(self) - if s[-1] == 'L': - s = s[:-1] - return s - def __add__(self, other): - return self.__class__(super(octlong, self).__add__(other)) - __radd__ = __add__ - vereq(str(octlong(3) + 5), "010") - # (Note that overriding __radd__ here only seems to work - # because the example uses a short int left argument.) - vereq(str(5 + octlong(3000)), "05675") - a = octlong(12345) - vereq(a, 12345L) - vereq(long(a), 12345L) - vereq(hash(a), hash(12345L)) - verify(long(a).__class__ is long) - verify((+a).__class__ is long) - verify((-a).__class__ is long) - verify((-octlong(0)).__class__ is long) - verify((a >> 0).__class__ is long) - verify((a << 0).__class__ is long) - verify((a - 0).__class__ is long) - verify((a * 1).__class__ is long) - verify((a ** 1).__class__ is long) - verify((a // 1).__class__ is long) - verify((1 * a).__class__ is long) - verify((a | 0).__class__ is long) - verify((a ^ 0).__class__ is long) - verify((a & -1L).__class__ is long) - verify((octlong(0) << 12).__class__ is long) - verify((octlong(0) >> 12).__class__ is long) - verify(abs(octlong(0)).__class__ is long) - - # Because octlong overrides __add__, we can't check the absence of +0 - # optimizations using octlong. - class longclone(long): - pass - a = longclone(1) - verify((a + 0).__class__ is long) - verify((0 + a).__class__ is long) - - # Check that negative clones don't segfault - a = longclone(-1) - vereq(a.__dict__, {}) - vereq(long(a), -1) # verify PyNumber_Long() copies the sign bit - - class precfloat(float): - __slots__ = ['prec'] - def __init__(self, value=0.0, prec=12): - self.prec = int(prec) - def __repr__(self): - return "%.*g" % (self.prec, self) - vereq(repr(precfloat(1.1)), "1.1") - a = precfloat(12345) - vereq(a, 12345.0) - vereq(float(a), 12345.0) - verify(float(a).__class__ is float) - vereq(hash(a), hash(12345.0)) - verify((+a).__class__ is float) - - class madcomplex(complex): - def __repr__(self): - return "%.17gj%+.17g" % (self.imag, self.real) - a = madcomplex(-3, 4) - vereq(repr(a), "4j-3") - base = complex(-3, 4) - veris(base.__class__, complex) - vereq(a, base) - vereq(complex(a), base) - veris(complex(a).__class__, complex) - a = madcomplex(a) # just trying another form of the constructor - vereq(repr(a), "4j-3") - vereq(a, base) - vereq(complex(a), base) - veris(complex(a).__class__, complex) - vereq(hash(a), hash(base)) - veris((+a).__class__, complex) - veris((a + 0).__class__, complex) - vereq(a + 0, base) - veris((a - 0).__class__, complex) - vereq(a - 0, base) - veris((a * 1).__class__, complex) - vereq(a * 1, base) - veris((a / 1).__class__, complex) - vereq(a / 1, base) - - class madtuple(tuple): - _rev = None - def rev(self): - if self._rev is not None: - return self._rev - L = list(self) - L.reverse() - self._rev = self.__class__(L) - return self._rev - a = madtuple((1,2,3,4,5,6,7,8,9,0)) - vereq(a, (1,2,3,4,5,6,7,8,9,0)) - vereq(a.rev(), madtuple((0,9,8,7,6,5,4,3,2,1))) - vereq(a.rev().rev(), madtuple((1,2,3,4,5,6,7,8,9,0))) - for i in range(512): - t = madtuple(range(i)) - u = t.rev() - v = u.rev() - vereq(v, t) - a = madtuple((1,2,3,4,5)) - vereq(tuple(a), (1,2,3,4,5)) - verify(tuple(a).__class__ is tuple) - vereq(hash(a), hash((1,2,3,4,5))) - verify(a[:].__class__ is tuple) - verify((a * 1).__class__ is tuple) - verify((a * 0).__class__ is tuple) - verify((a + ()).__class__ is tuple) - a = madtuple(()) - vereq(tuple(a), ()) - verify(tuple(a).__class__ is tuple) - verify((a + a).__class__ is tuple) - verify((a * 0).__class__ is tuple) - verify((a * 1).__class__ is tuple) - verify((a * 2).__class__ is tuple) - verify(a[:].__class__ is tuple) - - class madstring(str): - _rev = None - def rev(self): - if self._rev is not None: - return self._rev - L = list(self) - L.reverse() - self._rev = self.__class__("".join(L)) - return self._rev - s = madstring("abcdefghijklmnopqrstuvwxyz") - vereq(s, "abcdefghijklmnopqrstuvwxyz") - vereq(s.rev(), madstring("zyxwvutsrqponmlkjihgfedcba")) - vereq(s.rev().rev(), madstring("abcdefghijklmnopqrstuvwxyz")) - for i in range(256): - s = madstring("".join(map(chr, range(i)))) - t = s.rev() - u = t.rev() - vereq(u, s) - s = madstring("12345") - vereq(str(s), "12345") - verify(str(s).__class__ is str) - - base = "\x00" * 5 - s = madstring(base) - vereq(s, base) - vereq(str(s), base) - verify(str(s).__class__ is str) - vereq(hash(s), hash(base)) - vereq({s: 1}[base], 1) - vereq({base: 1}[s], 1) - verify((s + "").__class__ is str) - vereq(s + "", base) - verify(("" + s).__class__ is str) - vereq("" + s, base) - verify((s * 0).__class__ is str) - vereq(s * 0, "") - verify((s * 1).__class__ is str) - vereq(s * 1, base) - verify((s * 2).__class__ is str) - vereq(s * 2, base + base) - verify(s[:].__class__ is str) - vereq(s[:], base) - verify(s[0:0].__class__ is str) - vereq(s[0:0], "") - verify(s.strip().__class__ is str) - vereq(s.strip(), base) - verify(s.lstrip().__class__ is str) - vereq(s.lstrip(), base) - verify(s.rstrip().__class__ is str) - vereq(s.rstrip(), base) - identitytab = ''.join([chr(i) for i in range(256)]) - verify(s.translate(identitytab).__class__ is str) - vereq(s.translate(identitytab), base) - verify(s.translate(identitytab, "x").__class__ is str) - vereq(s.translate(identitytab, "x"), base) - vereq(s.translate(identitytab, "\x00"), "") - verify(s.replace("x", "x").__class__ is str) - vereq(s.replace("x", "x"), base) - verify(s.ljust(len(s)).__class__ is str) - vereq(s.ljust(len(s)), base) - verify(s.rjust(len(s)).__class__ is str) - vereq(s.rjust(len(s)), base) - verify(s.center(len(s)).__class__ is str) - vereq(s.center(len(s)), base) - verify(s.lower().__class__ is str) - vereq(s.lower(), base) - - class madunicode(unicode): - _rev = None - def rev(self): - if self._rev is not None: - return self._rev - L = list(self) - L.reverse() - self._rev = self.__class__(u"".join(L)) - return self._rev - u = madunicode("ABCDEF") - vereq(u, u"ABCDEF") - vereq(u.rev(), madunicode(u"FEDCBA")) - vereq(u.rev().rev(), madunicode(u"ABCDEF")) - base = u"12345" - u = madunicode(base) - vereq(unicode(u), base) - verify(unicode(u).__class__ is unicode) - vereq(hash(u), hash(base)) - vereq({u: 1}[base], 1) - vereq({base: 1}[u], 1) - verify(u.strip().__class__ is unicode) - vereq(u.strip(), base) - verify(u.lstrip().__class__ is unicode) - vereq(u.lstrip(), base) - verify(u.rstrip().__class__ is unicode) - vereq(u.rstrip(), base) - verify(u.replace(u"x", u"x").__class__ is unicode) - vereq(u.replace(u"x", u"x"), base) - verify(u.replace(u"xy", u"xy").__class__ is unicode) - vereq(u.replace(u"xy", u"xy"), base) - verify(u.center(len(u)).__class__ is unicode) - vereq(u.center(len(u)), base) - verify(u.ljust(len(u)).__class__ is unicode) - vereq(u.ljust(len(u)), base) - verify(u.rjust(len(u)).__class__ is unicode) - vereq(u.rjust(len(u)), base) - verify(u.lower().__class__ is unicode) - vereq(u.lower(), base) - verify(u.upper().__class__ is unicode) - vereq(u.upper(), base) - verify(u.capitalize().__class__ is unicode) - vereq(u.capitalize(), base) - verify(u.title().__class__ is unicode) - vereq(u.title(), base) - verify((u + u"").__class__ is unicode) - vereq(u + u"", base) - verify((u"" + u).__class__ is unicode) - vereq(u"" + u, base) - verify((u * 0).__class__ is unicode) - vereq(u * 0, u"") - verify((u * 1).__class__ is unicode) - vereq(u * 1, base) - verify((u * 2).__class__ is unicode) - vereq(u * 2, base + base) - verify(u[:].__class__ is unicode) - vereq(u[:], base) - verify(u[0:0].__class__ is unicode) - vereq(u[0:0], u"") - - class sublist(list): - pass - a = sublist(range(5)) - vereq(a, range(5)) - a.append("hello") - vereq(a, range(5) + ["hello"]) - a[5] = 5 - vereq(a, range(6)) - a.extend(range(6, 20)) - vereq(a, range(20)) - a[-5:] = [] - vereq(a, range(15)) - del a[10:15] - vereq(len(a), 10) - vereq(a, range(10)) - vereq(list(a), range(10)) - vereq(a[0], 0) - vereq(a[9], 9) - vereq(a[-10], 0) - vereq(a[-1], 9) - vereq(a[:5], range(5)) - - class CountedInput(file): - """Counts lines read by self.readline(). - - self.lineno is the 0-based ordinal of the last line read, up to - a maximum of one greater than the number of lines in the file. - - self.ateof is true if and only if the final "" line has been read, - at which point self.lineno stops incrementing, and further calls - to readline() continue to return "". - """ - - lineno = 0 - ateof = 0 - def readline(self): - if self.ateof: - return "" - s = file.readline(self) - # Next line works too. - # s = super(CountedInput, self).readline() - self.lineno += 1 - if s == "": - self.ateof = 1 - return s - - f = file(name=TESTFN, mode='w') - lines = ['a\n', 'b\n', 'c\n'] - try: - f.writelines(lines) - f.close() - f = CountedInput(TESTFN) - for (i, expected) in zip(range(1, 5) + [4], lines + 2 * [""]): - got = f.readline() - vereq(expected, got) - vereq(f.lineno, i) - vereq(f.ateof, (i > len(lines))) - f.close() - finally: try: - f.close() - except: + L.__bases__ = (dict,) + except TypeError: pass + else: + self.fail("shouldn't turn list subclass into dict subclass") + try: - import os - os.unlink(TESTFN) - except: + list.__bases__ = (dict,) + except TypeError: pass + else: + self.fail("shouldn't be able to assign to list.__bases__") -def keywords(): - if verbose: - print "Testing keyword args to basic type constructors ..." - vereq(int(x=1), 1) - vereq(float(x=2), 2.0) - vereq(long(x=3), 3L) - vereq(complex(imag=42, real=666), complex(666, 42)) - vereq(str(object=500), '500') - vereq(unicode(string='abc', errors='strict'), u'abc') - vereq(tuple(sequence=range(3)), (0, 1, 2)) - vereq(list(sequence=(0, 1, 2)), range(3)) - # note: as of Python 2.3, dict() no longer has an "items" keyword arg - - for constructor in (int, float, long, complex, str, unicode, - tuple, list, file): - try: - constructor(bogus_keyword_arg=1) + try: + D.__bases__ = (C2, list) except TypeError: pass else: - raise TestFailed("expected TypeError from bogus keyword " - "argument to %r" % constructor) - -def restricted(): - # XXX This test is disabled because rexec is not deemed safe - return - import rexec - if verbose: - print "Testing interaction with restricted execution ..." - - sandbox = rexec.RExec() - - code1 = """f = open(%r, 'w')""" % TESTFN - code2 = """f = file(%r, 'w')""" % TESTFN - code3 = """\ -f = open(%r) -t = type(f) # a sneaky way to get the file() constructor -f.close() -f = t(%r, 'w') # rexec can't catch this by itself -""" % (TESTFN, TESTFN) + assert 0, "best_base calculation found wanting" - f = open(TESTFN, 'w') # Create the file so code3 can find it. - f.close() - - try: - for code in code1, code2, code3: - try: - sandbox.r_exec(code) - except IOError, msg: - if str(msg).find("restricted") >= 0: - outcome = "OK" - else: - outcome = "got an exception, but not an expected one" - else: - outcome = "expected a restricted-execution exception" + try: + del D.__bases__ + except TypeError: + pass + else: + self.fail("shouldn't be able to delete .__bases__") - if outcome != "OK": - raise TestFailed("%s, in %r" % (outcome, code)) + try: + D.__bases__ = () + except TypeError, msg: + if str(msg) == "a new-style class can't have only classic bases": + self.fail("wrong error message for .__bases__ = ()") + else: + self.fail("shouldn't be able to set .__bases__ to ()") - finally: try: - import os - os.unlink(TESTFN) - except: + D.__bases__ = (D,) + except TypeError: pass + else: + # actually, we'll have crashed by here... + self.fail("shouldn't be able to create inheritance cycles") -def str_subclass_as_dict_key(): - if verbose: - print "Testing a str subclass used as dict key .." - - class cistr(str): - """Sublcass of str that computes __eq__ case-insensitively. - - Also computes a hash code of the string in canonical form. - """ - - def __init__(self, value): - self.canonical = value.lower() - self.hashcode = hash(self.canonical) - - def __eq__(self, other): - if not isinstance(other, cistr): - other = cistr(other) - return self.canonical == other.canonical - - def __hash__(self): - return self.hashcode - - vereq(cistr('ABC'), 'abc') - vereq('aBc', cistr('ABC')) - vereq(str(cistr('ABC')), 'ABC') - - d = {cistr('one'): 1, cistr('two'): 2, cistr('tHree'): 3} - vereq(d[cistr('one')], 1) - vereq(d[cistr('tWo')], 2) - vereq(d[cistr('THrEE')], 3) - verify(cistr('ONe') in d) - vereq(d.get(cistr('thrEE')), 3) - -def classic_comparisons(): - if verbose: print "Testing classic comparisons..." - class classic: - pass - for base in (classic, int, object): - if verbose: print " (base = %s)" % base - class C(base): - def __init__(self, value): - self.value = int(value) - def __cmp__(self, other): - if isinstance(other, C): - return cmp(self.value, other.value) - if isinstance(other, int) or isinstance(other, long): - return cmp(self.value, other) - return NotImplemented - c1 = C(1) - c2 = C(2) - c3 = C(3) - vereq(c1, 1) - c = {1: c1, 2: c2, 3: c3} - for x in 1, 2, 3: - for y in 1, 2, 3: - verify(cmp(c[x], c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y)) - for op in "<", "<=", "==", "!=", ">", ">=": - verify(eval("c[x] %s c[y]" % op) == eval("x %s y" % op), - "x=%d, y=%d" % (x, y)) - verify(cmp(c[x], y) == cmp(x, y), "x=%d, y=%d" % (x, y)) - verify(cmp(x, c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y)) - -def rich_comparisons(): - if verbose: - print "Testing rich comparisons..." - class Z(complex): - pass - z = Z(1) - vereq(z, 1+0j) - vereq(1+0j, z) - class ZZ(complex): - def __eq__(self, other): - try: - return abs(self - other) <= 1e-6 - except: - return NotImplemented - zz = ZZ(1.0000003) - vereq(zz, 1+0j) - vereq(1+0j, zz) - - class classic: - pass - for base in (classic, int, object, list): - if verbose: print " (base = %s)" % base - class C(base): - def __init__(self, value): - self.value = int(value) - def __cmp__(self, other): - raise TestFailed, "shouldn't call __cmp__" - def __eq__(self, other): - if isinstance(other, C): - return self.value == other.value - if isinstance(other, int) or isinstance(other, long): - return self.value == other - return NotImplemented - def __ne__(self, other): - if isinstance(other, C): - return self.value != other.value - if isinstance(other, int) or isinstance(other, long): - return self.value != other - return NotImplemented - def __lt__(self, other): - if isinstance(other, C): - return self.value < other.value - if isinstance(other, int) or isinstance(other, long): - return self.value < other - return NotImplemented - def __le__(self, other): - if isinstance(other, C): - return self.value <= other.value - if isinstance(other, int) or isinstance(other, long): - return self.value <= other - return NotImplemented - def __gt__(self, other): - if isinstance(other, C): - return self.value > other.value - if isinstance(other, int) or isinstance(other, long): - return self.value > other - return NotImplemented - def __ge__(self, other): - if isinstance(other, C): - return self.value >= other.value - if isinstance(other, int) or isinstance(other, long): - return self.value >= other - return NotImplemented - c1 = C(1) - c2 = C(2) - c3 = C(3) - vereq(c1, 1) - c = {1: c1, 2: c2, 3: c3} - for x in 1, 2, 3: - for y in 1, 2, 3: - for op in "<", "<=", "==", "!=", ">", ">=": - verify(eval("c[x] %s c[y]" % op) == eval("x %s y" % op), - "x=%d, y=%d" % (x, y)) - verify(eval("c[x] %s y" % op) == eval("x %s y" % op), - "x=%d, y=%d" % (x, y)) - verify(eval("x %s c[y]" % op) == eval("x %s y" % op), - "x=%d, y=%d" % (x, y)) - -def coercions(): - if verbose: print "Testing coercions..." - class I(int): pass - coerce(I(0), 0) - coerce(0, I(0)) - class L(long): pass - coerce(L(0), 0) - coerce(L(0), 0L) - coerce(0, L(0)) - coerce(0L, L(0)) - class F(float): pass - coerce(F(0), 0) - coerce(F(0), 0L) - coerce(F(0), 0.) - coerce(0, F(0)) - coerce(0L, F(0)) - coerce(0., F(0)) - class C(complex): pass - coerce(C(0), 0) - coerce(C(0), 0L) - coerce(C(0), 0.) - coerce(C(0), 0j) - coerce(0, C(0)) - coerce(0L, C(0)) - coerce(0., C(0)) - coerce(0j, C(0)) - -def descrdoc(): - if verbose: print "Testing descriptor doc strings..." - def check(descr, what): - vereq(descr.__doc__, what) - check(file.closed, "True if the file is closed") # getset descriptor - check(file.name, "file name") # member descriptor - -def setclass(): - if verbose: print "Testing __class__ assignment..." - class C(object): pass - class D(object): pass - class E(object): pass - class F(D, E): pass - for cls in C, D, E, F: - for cls2 in C, D, E, F: - x = cls() - x.__class__ = cls2 - verify(x.__class__ is cls2) - x.__class__ = cls - verify(x.__class__ is cls) - def cant(x, C): try: - x.__class__ = C + D.__bases__ = (C, C) except TypeError: pass else: - raise TestFailed, "shouldn't allow %r.__class__ = %r" % (x, C) + self.fail("didn't detect repeated base classes") + try: - delattr(x, "__class__") + D.__bases__ = (E,) except TypeError: pass else: - raise TestFailed, "shouldn't allow del %r.__class__" % x - cant(C(), list) - cant(list(), C) - cant(C(), 1) - cant(C(), object) - cant(object(), list) - cant(list(), object) - class Int(int): __slots__ = [] - cant(2, Int) - cant(Int(), int) - cant(True, int) - cant(2, bool) - o = object() - cant(o, type(1)) - cant(o, type(None)) - del o - class G(object): - __slots__ = ["a", "b"] - class H(object): - __slots__ = ["b", "a"] - try: - unicode - except NameError: - class I(object): - __slots__ = ["a", "b"] - else: - class I(object): - __slots__ = [unicode("a"), unicode("b")] - class J(object): - __slots__ = ["c", "b"] - class K(object): - __slots__ = ["a", "b", "d"] - class L(H): - __slots__ = ["e"] - class M(I): - __slots__ = ["e"] - class N(J): - __slots__ = ["__weakref__"] - class P(J): - __slots__ = ["__dict__"] - class Q(J): - pass - class R(J): - __slots__ = ["__dict__", "__weakref__"] + self.fail("shouldn't be able to create inheritance cycles") - for cls, cls2 in ((G, H), (G, I), (I, H), (Q, R), (R, Q)): - x = cls() - x.a = 1 - x.__class__ = cls2 - verify(x.__class__ is cls2, - "assigning %r as __class__ for %r silently failed" % (cls2, x)) - vereq(x.a, 1) - x.__class__ = cls - verify(x.__class__ is cls, - "assigning %r as __class__ for %r silently failed" % (cls, x)) - vereq(x.a, 1) - for cls in G, J, K, L, M, N, P, R, list, Int: - for cls2 in G, J, K, L, M, N, P, R, list, Int: - if cls is cls2: - continue - cant(cls(), cls2) - -def setdict(): - if verbose: print "Testing __dict__ assignment..." - class C(object): pass - a = C() - a.__dict__ = {'b': 1} - vereq(a.b, 1) - def cant(x, dict): + # let's throw a classic class into the mix: + class Classic: + def meth2(self): + return 3 + + D.__bases__ = (C, Classic) + + self.assertEqual(d.meth2(), 3) + self.assertEqual(e.meth2(), 3) try: - x.__dict__ = dict - except (AttributeError, TypeError): + d.a + except AttributeError: pass else: - raise TestFailed, "shouldn't allow %r.__dict__ = %r" % (x, dict) - cant(a, None) - cant(a, []) - cant(a, 1) - del a.__dict__ # Deleting __dict__ is allowed - - class Base(object): - pass - def verify_dict_readonly(x): - """ - x has to be an instance of a class inheriting from Base. - """ - cant(x, {}) + self.fail("attribute should have vanished") + try: - del x.__dict__ - except (AttributeError, TypeError): + D.__bases__ = (Classic,) + except TypeError: + pass + else: + self.fail("new-style class must have a new-style base") + + def test_mutable_bases_with_failing_mro(self): + # Testing mutable bases with failing mro... + class WorkOnce(type): + def __new__(self, name, bases, ns): + self.flag = 0 + return super(WorkOnce, self).__new__(WorkOnce, name, bases, ns) + def mro(self): + if self.flag > 0: + raise RuntimeError, "bozo" + else: + self.flag += 1 + return type.mro(self) + + class WorkAlways(type): + def mro(self): + # this is here to make sure that .mro()s aren't called + # with an exception set (which was possible at one point). + # An error message will be printed in a debug build. + # What's a good way to test for this? + return type.mro(self) + + class C(object): + pass + + class C2(object): + pass + + class D(C): + pass + + class E(D): pass + + class F(D): + __metaclass__ = WorkOnce + + class G(D): + __metaclass__ = WorkAlways + + # Immediate subclasses have their mro's adjusted in alphabetical + # order, so E's will get adjusted before adjusting F's fails. We + # check here that E's gets restored. + + E_mro_before = E.__mro__ + D_mro_before = D.__mro__ + + try: + D.__bases__ = (C2,) + except RuntimeError: + self.assertEqual(E.__mro__, E_mro_before) + self.assertEqual(D.__mro__, D_mro_before) else: - raise TestFailed, "shouldn't allow del %r.__dict__" % x - dict_descr = Base.__dict__["__dict__"] + self.fail("exception not propagated") + + def test_mutable_bases_catch_mro_conflict(self): + # Testing mutable bases catch mro conflict... + class A(object): + pass + + class B(object): + pass + + class C(A, B): + pass + + class D(A, B): + pass + + class E(C, D): + pass + try: - dict_descr.__set__(x, {}) - except (AttributeError, TypeError): + C.__bases__ = (B, A) + except TypeError: pass else: - raise TestFailed, "dict_descr allowed access to %r's dict" % x + self.fail("didn't catch MRO conflict") + + def test_mutable_names(self): + # Testing mutable names... + class C(object): + pass + + # C.__module__ could be 'test_descr' or '__main__' + mod = C.__module__ + + C.__name__ = 'D' + self.assertEqual((C.__module__, C.__name__), (mod, 'D')) + + C.__name__ = 'D.E' + self.assertEqual((C.__module__, C.__name__), (mod, 'D.E')) + + def test_subclass_right_op(self): + # Testing correct dispatch of subclass overloading __r__... + + # This code tests various cases where right-dispatch of a subclass + # should be preferred over left-dispatch of a base class. + + # Case 1: subclass of int; this tests code in abstract.c::binary_op1() + + class B(int): + def __floordiv__(self, other): + return "B.__floordiv__" + def __rfloordiv__(self, other): + return "B.__rfloordiv__" + + self.assertEqual(B(1) // 1, "B.__floordiv__") + self.assertEqual(1 // B(1), "B.__rfloordiv__") + + # Case 2: subclass of object; this is just the baseline for case 3 + + class C(object): + def __floordiv__(self, other): + return "C.__floordiv__" + def __rfloordiv__(self, other): + return "C.__rfloordiv__" + + self.assertEqual(C() // 1, "C.__floordiv__") + self.assertEqual(1 // C(), "C.__rfloordiv__") + + # Case 3: subclass of new-style class; here it gets interesting - # Classes don't allow __dict__ assignment and have readonly dicts - class Meta1(type, Base): - pass - class Meta2(Base, type): - pass - class D(object): - __metaclass__ = Meta1 - class E(object): - __metaclass__ = Meta2 - for cls in C, D, E: - verify_dict_readonly(cls) - class_dict = cls.__dict__ - try: - class_dict["spam"] = "eggs" - except TypeError: - pass - else: - raise TestFailed, "%r's __dict__ can be modified" % cls - - # Modules also disallow __dict__ assignment - class Module1(types.ModuleType, Base): - pass - class Module2(Base, types.ModuleType): - pass - for ModuleType in Module1, Module2: - mod = ModuleType("spam") - verify_dict_readonly(mod) - mod.__dict__["spam"] = "eggs" - - # Exception's __dict__ can be replaced, but not deleted - class Exception1(Exception, Base): - pass - class Exception2(Base, Exception): - pass - for ExceptionType in Exception, Exception1, Exception2: - e = ExceptionType() - e.__dict__ = {"a": 1} - vereq(e.a, 1) - try: - del e.__dict__ - except (TypeError, AttributeError): - pass - else: - raise TestFaied, "%r's __dict__ can be deleted" % e - - -def pickles(): - if verbose: - print "Testing pickling and copying new-style classes and objects..." - import pickle, cPickle - - def sorteditems(d): - L = d.items() - L.sort() - return L - - global C - class C(object): - def __init__(self, a, b): - super(C, self).__init__() - self.a = a - self.b = b - def __repr__(self): - return "C(%r, %r)" % (self.a, self.b) - - global C1 - class C1(list): - def __new__(cls, a, b): - return super(C1, cls).__new__(cls) - def __getnewargs__(self): - return (self.a, self.b) - def __init__(self, a, b): - self.a = a - self.b = b - def __repr__(self): - return "C1(%r, %r)<%r>" % (self.a, self.b, list(self)) - - global C2 - class C2(int): - def __new__(cls, a, b, val=0): - return super(C2, cls).__new__(cls, val) - def __getnewargs__(self): - return (self.a, self.b, int(self)) - def __init__(self, a, b, val=0): - self.a = a - self.b = b - def __repr__(self): - return "C2(%r, %r)<%r>" % (self.a, self.b, int(self)) - - global C3 - class C3(object): - def __init__(self, foo): - self.foo = foo - def __getstate__(self): - return self.foo - def __setstate__(self, foo): - self.foo = foo - - global C4classic, C4 - class C4classic: # classic - pass - class C4(C4classic, object): # mixed inheritance - pass - - for p in pickle, cPickle: - for bin in 0, 1: - if verbose: - print p.__name__, ["text", "binary"][bin] - - for cls in C, C1, C2: - s = p.dumps(cls, bin) - cls2 = p.loads(s) - verify(cls2 is cls) - - a = C1(1, 2); a.append(42); a.append(24) - b = C2("hello", "world", 42) - s = p.dumps((a, b), bin) - x, y = p.loads(s) - vereq(x.__class__, a.__class__) - vereq(sorteditems(x.__dict__), sorteditems(a.__dict__)) - vereq(y.__class__, b.__class__) - vereq(sorteditems(y.__dict__), sorteditems(b.__dict__)) - vereq(repr(x), repr(a)) - vereq(repr(y), repr(b)) - if verbose: - print "a = x =", a - print "b = y =", b - # Test for __getstate__ and __setstate__ on new style class - u = C3(42) - s = p.dumps(u, bin) - v = p.loads(s) - veris(u.__class__, v.__class__) - vereq(u.foo, v.foo) - # Test for picklability of hybrid class - u = C4() - u.foo = 42 - s = p.dumps(u, bin) - v = p.loads(s) - veris(u.__class__, v.__class__) - vereq(u.foo, v.foo) - - # Testing copy.deepcopy() - if verbose: - print "deepcopy" - import copy - for cls in C, C1, C2: - cls2 = copy.deepcopy(cls) - verify(cls2 is cls) - - a = C1(1, 2); a.append(42); a.append(24) - b = C2("hello", "world", 42) - x, y = copy.deepcopy((a, b)) - vereq(x.__class__, a.__class__) - vereq(sorteditems(x.__dict__), sorteditems(a.__dict__)) - vereq(y.__class__, b.__class__) - vereq(sorteditems(y.__dict__), sorteditems(b.__dict__)) - vereq(repr(x), repr(a)) - vereq(repr(y), repr(b)) - if verbose: - print "a = x =", a - print "b = y =", b - -def pickleslots(): - if verbose: print "Testing pickling of classes with __slots__ ..." - import pickle, cPickle - # Pickling of classes with __slots__ but without __getstate__ should fail - global B, C, D, E - class B(object): - pass - for base in [object, B]: - class C(base): - __slots__ = ['a'] class D(C): + def __floordiv__(self, other): + return "D.__floordiv__" + def __rfloordiv__(self, other): + return "D.__rfloordiv__" + + self.assertEqual(D() // C(), "D.__floordiv__") + self.assertEqual(C() // D(), "D.__rfloordiv__") + + # Case 4: this didn't work right in 2.2.2 and 2.3a1 + + class E(C): pass + + self.assertEqual(E.__rfloordiv__, C.__rfloordiv__) + + self.assertEqual(E() // 1, "C.__floordiv__") + self.assertEqual(1 // E(), "C.__rfloordiv__") + self.assertEqual(E() // C(), "C.__floordiv__") + self.assertEqual(C() // E(), "C.__floordiv__") # This one would fail + + def test_meth_class_get(self): + # Testing __get__ method of METH_CLASS C methods... + # Full coverage of descrobject.c::classmethod_get() + + # Baseline + arg = [1, 2, 3] + res = {1: None, 2: None, 3: None} + self.assertEqual(dict.fromkeys(arg), res) + self.assertEqual({}.fromkeys(arg), res) + + # Now get the descriptor + descr = dict.__dict__["fromkeys"] + + # More baseline using the descriptor directly + self.assertEqual(descr.__get__(None, dict)(arg), res) + self.assertEqual(descr.__get__({})(arg), res) + + # Now check various error cases try: - pickle.dumps(C()) + descr.__get__(None, None) except TypeError: pass else: - raise TestFailed, "should fail: pickle C instance - %s" % base + self.fail("shouldn't have allowed descr.__get__(None, None)") try: - cPickle.dumps(C()) + descr.__get__(42) except TypeError: pass else: - raise TestFailed, "should fail: cPickle C instance - %s" % base + self.fail("shouldn't have allowed descr.__get__(42)") try: - pickle.dumps(C()) + descr.__get__(None, 42) except TypeError: pass else: - raise TestFailed, "should fail: pickle D instance - %s" % base + self.fail("shouldn't have allowed descr.__get__(None, 42)") try: - cPickle.dumps(D()) + descr.__get__(None, int) except TypeError: pass else: - raise TestFailed, "should fail: cPickle D instance - %s" % base - # Give C a nice generic __getstate__ and __setstate__ - class C(base): - __slots__ = ['a'] - def __getstate__(self): - try: - d = self.__dict__.copy() - except AttributeError: - d = {} - for cls in self.__class__.__mro__: - for sn in cls.__dict__.get('__slots__', ()): - try: - d[sn] = getattr(self, sn) - except AttributeError: - pass - return d - def __setstate__(self, d): - for k, v in d.items(): - setattr(self, k, v) + self.fail("shouldn't have allowed descr.__get__(None, int)") + + def test_isinst_isclass(self): + # Testing proxy isinstance() and isclass()... + class Proxy(object): + def __init__(self, obj): + self.__obj = obj + def __getattribute__(self, name): + if name.startswith("_Proxy__"): + return object.__getattribute__(self, name) + else: + return getattr(self.__obj, name) + # Test with a classic class + class C: + pass + a = C() + pa = Proxy(a) + self.assert_(isinstance(a, C)) # Baseline + self.assert_(isinstance(pa, C)) # Test + # Test with a classic subclass class D(C): pass - # Now it should work - x = C() - y = pickle.loads(pickle.dumps(x)) - vereq(hasattr(y, 'a'), 0) - y = cPickle.loads(cPickle.dumps(x)) - vereq(hasattr(y, 'a'), 0) - x.a = 42 - y = pickle.loads(pickle.dumps(x)) - vereq(y.a, 42) - y = cPickle.loads(cPickle.dumps(x)) - vereq(y.a, 42) - x = D() - x.a = 42 - x.b = 100 - y = pickle.loads(pickle.dumps(x)) - vereq(y.a + y.b, 142) - y = cPickle.loads(cPickle.dumps(x)) - vereq(y.a + y.b, 142) - # A subclass that adds a slot should also work - class E(C): - __slots__ = ['b'] - x = E() - x.a = 42 - x.b = "foo" - y = pickle.loads(pickle.dumps(x)) - vereq(y.a, x.a) - vereq(y.b, x.b) - y = cPickle.loads(cPickle.dumps(x)) - vereq(y.a, x.a) - vereq(y.b, x.b) - -def copies(): - if verbose: print "Testing copy.copy() and copy.deepcopy()..." - import copy - class C(object): - pass - - a = C() - a.foo = 12 - b = copy.copy(a) - vereq(b.__dict__, a.__dict__) - - a.bar = [1,2,3] - c = copy.copy(a) - vereq(c.bar, a.bar) - verify(c.bar is a.bar) - - d = copy.deepcopy(a) - vereq(d.__dict__, a.__dict__) - a.bar.append(4) - vereq(d.bar, [1,2,3]) - -def binopoverride(): - if verbose: print "Testing overrides of binary operations..." - class I(int): - def __repr__(self): - return "I(%r)" % int(self) - def __add__(self, other): - return I(int(self) + int(other)) - __radd__ = __add__ - def __pow__(self, other, mod=None): - if mod is None: - return I(pow(int(self), int(other))) - else: - return I(pow(int(self), int(other), int(mod))) - def __rpow__(self, other, mod=None): - if mod is None: - return I(pow(int(other), int(self), mod)) - else: - return I(pow(int(other), int(self), int(mod))) + a = D() + pa = Proxy(a) + self.assert_(isinstance(a, C)) # Baseline + self.assert_(isinstance(pa, C)) # Test + # Test with a new-style class + class C(object): + pass + a = C() + pa = Proxy(a) + self.assert_(isinstance(a, C)) # Baseline + self.assert_(isinstance(pa, C)) # Test + # Test with a new-style subclass + class D(C): + pass + a = D() + pa = Proxy(a) + self.assert_(isinstance(a, C)) # Baseline + self.assert_(isinstance(pa, C)) # Test + + def test_proxy_super(self): + # Testing super() for a proxy object... + class Proxy(object): + def __init__(self, obj): + self.__obj = obj + def __getattribute__(self, name): + if name.startswith("_Proxy__"): + return object.__getattribute__(self, name) + else: + return getattr(self.__obj, name) - vereq(repr(I(1) + I(2)), "I(3)") - vereq(repr(I(1) + 2), "I(3)") - vereq(repr(1 + I(2)), "I(3)") - vereq(repr(I(2) ** I(3)), "I(8)") - vereq(repr(2 ** I(3)), "I(8)") - vereq(repr(I(2) ** 3), "I(8)") - vereq(repr(pow(I(2), I(3), I(5))), "I(3)") - class S(str): - def __eq__(self, other): - return self.lower() == other.lower() - -def subclasspropagation(): - if verbose: print "Testing propagation of slot functions to subclasses..." - class A(object): - pass - class B(A): - pass - class C(A): - pass - class D(B, C): - pass - d = D() - orig_hash = hash(d) # related to id(d) in platform-dependent ways - A.__hash__ = lambda self: 42 - vereq(hash(d), 42) - C.__hash__ = lambda self: 314 - vereq(hash(d), 314) - B.__hash__ = lambda self: 144 - vereq(hash(d), 144) - D.__hash__ = lambda self: 100 - vereq(hash(d), 100) - del D.__hash__ - vereq(hash(d), 144) - del B.__hash__ - vereq(hash(d), 314) - del C.__hash__ - vereq(hash(d), 42) - del A.__hash__ - vereq(hash(d), orig_hash) - d.foo = 42 - d.bar = 42 - vereq(d.foo, 42) - vereq(d.bar, 42) - def __getattribute__(self, name): - if name == "foo": - return 24 - return object.__getattribute__(self, name) - A.__getattribute__ = __getattribute__ - vereq(d.foo, 24) - vereq(d.bar, 42) - def __getattr__(self, name): - if name in ("spam", "foo", "bar"): - return "hello" - raise AttributeError, name - B.__getattr__ = __getattr__ - vereq(d.spam, "hello") - vereq(d.foo, 24) - vereq(d.bar, 42) - del A.__getattribute__ - vereq(d.foo, 42) - del d.foo - vereq(d.foo, "hello") - vereq(d.bar, 42) - del B.__getattr__ - try: - d.foo - except AttributeError: - pass - else: - raise TestFailed, "d.foo should be undefined now" - - # Test a nasty bug in recurse_down_subclasses() - import gc - class A(object): - pass - class B(A): - pass - del B - gc.collect() - A.__setitem__ = lambda *a: None # crash - -def buffer_inherit(): - import binascii - # SF bug [#470040] ParseTuple t# vs subclasses. - if verbose: - print "Testing that buffer interface is inherited ..." - - class MyStr(str): - pass - base = 'abc' - m = MyStr(base) - # b2a_hex uses the buffer interface to get its argument's value, via - # PyArg_ParseTuple 't#' code. - vereq(binascii.b2a_hex(m), binascii.b2a_hex(base)) - - # It's not clear that unicode will continue to support the character - # buffer interface, and this test will fail if that's taken away. - class MyUni(unicode): - pass - base = u'abc' - m = MyUni(base) - vereq(binascii.b2a_hex(m), binascii.b2a_hex(base)) - - class MyInt(int): - pass - m = MyInt(42) - try: - binascii.b2a_hex(m) - raise TestFailed('subclass of int should not have a buffer interface') - except TypeError: - pass - -def str_of_str_subclass(): - import binascii - import cStringIO - - if verbose: - print "Testing __str__ defined in subclass of str ..." - - class octetstring(str): - def __str__(self): - return binascii.b2a_hex(self) - def __repr__(self): - return self + " repr" - - o = octetstring('A') - vereq(type(o), octetstring) - vereq(type(str(o)), str) - vereq(type(repr(o)), str) - vereq(ord(o), 0x41) - vereq(str(o), '41') - vereq(repr(o), 'A repr') - vereq(o.__str__(), '41') - vereq(o.__repr__(), 'A repr') - - capture = cStringIO.StringIO() - # Calling str() or not exercises different internal paths. - print >> capture, o - print >> capture, str(o) - vereq(capture.getvalue(), '41\n41\n') - capture.close() - -def kwdargs(): - if verbose: print "Testing keyword arguments to __init__, __call__..." - def f(a): return a - vereq(f.__call__(a=42), 42) - a = [] - list.__init__(a, sequence=[0, 1, 2]) - vereq(a, [0, 1, 2]) - -def recursive__call__(): - if verbose: print ("Testing recursive __call__() by setting to instance of " - "class ...") - class A(object): - pass - - A.__call__ = A() - try: - A()() - except RuntimeError: - pass - else: - raise TestFailed("Recursion limit should have been reached for " - "__call__()") - -def delhook(): - if verbose: print "Testing __del__ hook..." - log = [] - class C(object): - def __del__(self): - log.append(1) - c = C() - vereq(log, []) - del c - vereq(log, [1]) - - class D(object): pass - d = D() - try: del d[0] - except TypeError: pass - else: raise TestFailed, "invalid del() didn't raise TypeError" - -def hashinherit(): - if verbose: print "Testing hash of mutable subclasses..." - - class mydict(dict): - pass - d = mydict() - try: - hash(d) - except TypeError: - pass - else: - raise TestFailed, "hash() of dict subclass should fail" - - class mylist(list): - pass - d = mylist() - try: - hash(d) - except TypeError: - pass - else: - raise TestFailed, "hash() of list subclass should fail" - -def strops(): - try: 'a' + 5 - except TypeError: pass - else: raise TestFailed, "'' + 5 doesn't raise TypeError" - - try: ''.split('') - except ValueError: pass - else: raise TestFailed, "''.split('') doesn't raise ValueError" - - try: ''.join([0]) - except TypeError: pass - else: raise TestFailed, "''.join([0]) doesn't raise TypeError" - - try: ''.rindex('5') - except ValueError: pass - else: raise TestFailed, "''.rindex('5') doesn't raise ValueError" - - try: '%(n)s' % None - except TypeError: pass - else: raise TestFailed, "'%(n)s' % None doesn't raise TypeError" - - try: '%(n' % {} - except ValueError: pass - else: raise TestFailed, "'%(n' % {} '' doesn't raise ValueError" - - try: '%*s' % ('abc') - except TypeError: pass - else: raise TestFailed, "'%*s' % ('abc') doesn't raise TypeError" - - try: '%*.*s' % ('abc', 5) - except TypeError: pass - else: raise TestFailed, "'%*.*s' % ('abc', 5) doesn't raise TypeError" - - try: '%s' % (1, 2) - except TypeError: pass - else: raise TestFailed, "'%s' % (1, 2) doesn't raise TypeError" - - try: '%' % None - except ValueError: pass - else: raise TestFailed, "'%' % None doesn't raise ValueError" - - vereq('534253'.isdigit(), 1) - vereq('534253x'.isdigit(), 0) - vereq('%c' % 5, '\x05') - vereq('%c' % '5', '5') - -def deepcopyrecursive(): - if verbose: print "Testing deepcopy of recursive objects..." - class Node: - pass - a = Node() - b = Node() - a.b = b - b.a = a - z = deepcopy(a) # This blew up before - -def modules(): - if verbose: print "Testing uninitialized module objects..." - from types import ModuleType as M - m = M.__new__(M) - str(m) - vereq(hasattr(m, "__name__"), 0) - vereq(hasattr(m, "__file__"), 0) - vereq(hasattr(m, "foo"), 0) - vereq(m.__dict__, None) - m.foo = 1 - vereq(m.__dict__, {"foo": 1}) - -def dictproxyiterkeys(): - class C(object): - def meth(self): - pass - if verbose: print "Testing dict-proxy iterkeys..." - keys = [ key for key in C.__dict__.iterkeys() ] - keys.sort() - vereq(keys, ['__dict__', '__doc__', '__module__', '__weakref__', 'meth']) - -def dictproxyitervalues(): - class C(object): - def meth(self): - pass - if verbose: print "Testing dict-proxy itervalues..." - values = [ values for values in C.__dict__.itervalues() ] - vereq(len(values), 5) - -def dictproxyiteritems(): - class C(object): - def meth(self): - pass - if verbose: print "Testing dict-proxy iteritems..." - keys = [ key for (key, value) in C.__dict__.iteritems() ] - keys.sort() - vereq(keys, ['__dict__', '__doc__', '__module__', '__weakref__', 'meth']) - -def funnynew(): - if verbose: print "Testing __new__ returning something unexpected..." - class C(object): - def __new__(cls, arg): - if isinstance(arg, str): return [1, 2, 3] - elif isinstance(arg, int): return object.__new__(D) - else: return object.__new__(cls) - class D(C): - def __init__(self, arg): - self.foo = arg - vereq(C("1"), [1, 2, 3]) - vereq(D("1"), [1, 2, 3]) - d = D(None) - veris(d.foo, None) - d = C(1) - vereq(isinstance(d, D), True) - vereq(d.foo, 1) - d = D(1) - vereq(isinstance(d, D), True) - vereq(d.foo, 1) - -def imulbug(): - # SF bug 544647 - if verbose: print "Testing for __imul__ problems..." - class C(object): - def __imul__(self, other): - return (self, other) - x = C() - y = x - y *= 1.0 - vereq(y, (x, 1.0)) - y = x - y *= 2 - vereq(y, (x, 2)) - y = x - y *= 3L - vereq(y, (x, 3L)) - y = x - y *= 1L<<100 - vereq(y, (x, 1L<<100)) - y = x - y *= None - vereq(y, (x, None)) - y = x - y *= "foo" - vereq(y, (x, "foo")) - -def docdescriptor(): - # SF bug 542984 - if verbose: print "Testing __doc__ descriptor..." - class DocDescr(object): - def __get__(self, object, otype): - if object: - object = object.__class__.__name__ + ' instance' - if otype: - otype = otype.__name__ - return 'object=%s; type=%s' % (object, otype) - class OldClass: - __doc__ = DocDescr() - class NewClass(object): - __doc__ = DocDescr() - vereq(OldClass.__doc__, 'object=None; type=OldClass') - vereq(OldClass().__doc__, 'object=OldClass instance; type=OldClass') - vereq(NewClass.__doc__, 'object=None; type=NewClass') - vereq(NewClass().__doc__, 'object=NewClass instance; type=NewClass') - -def copy_setstate(): - if verbose: - print "Testing that copy.*copy() correctly uses __setstate__..." - import copy - class C(object): - def __init__(self, foo=None): - self.foo = foo - self.__foo = foo - def setfoo(self, foo=None): - self.foo = foo - def getfoo(self): - return self.__foo - def __getstate__(self): - return [self.foo] - def __setstate__(self, lst): - assert len(lst) == 1 - self.__foo = self.foo = lst[0] - a = C(42) - a.setfoo(24) - vereq(a.foo, 24) - vereq(a.getfoo(), 42) - b = copy.copy(a) - vereq(b.foo, 24) - vereq(b.getfoo(), 24) - b = copy.deepcopy(a) - vereq(b.foo, 24) - vereq(b.getfoo(), 24) - -def slices(): - if verbose: - print "Testing cases with slices and overridden __getitem__ ..." - # Strings - vereq("hello"[:4], "hell") - vereq("hello"[slice(4)], "hell") - vereq(str.__getitem__("hello", slice(4)), "hell") - class S(str): - def __getitem__(self, x): - return str.__getitem__(self, x) - vereq(S("hello")[:4], "hell") - vereq(S("hello")[slice(4)], "hell") - vereq(S("hello").__getitem__(slice(4)), "hell") - # Tuples - vereq((1,2,3)[:2], (1,2)) - vereq((1,2,3)[slice(2)], (1,2)) - vereq(tuple.__getitem__((1,2,3), slice(2)), (1,2)) - class T(tuple): - def __getitem__(self, x): - return tuple.__getitem__(self, x) - vereq(T((1,2,3))[:2], (1,2)) - vereq(T((1,2,3))[slice(2)], (1,2)) - vereq(T((1,2,3)).__getitem__(slice(2)), (1,2)) - # Lists - vereq([1,2,3][:2], [1,2]) - vereq([1,2,3][slice(2)], [1,2]) - vereq(list.__getitem__([1,2,3], slice(2)), [1,2]) - class L(list): - def __getitem__(self, x): - return list.__getitem__(self, x) - vereq(L([1,2,3])[:2], [1,2]) - vereq(L([1,2,3])[slice(2)], [1,2]) - vereq(L([1,2,3]).__getitem__(slice(2)), [1,2]) - # Now do lists and __setitem__ - a = L([1,2,3]) - a[slice(1, 3)] = [3,2] - vereq(a, [1,3,2]) - a[slice(0, 2, 1)] = [3,1] - vereq(a, [3,1,2]) - a.__setitem__(slice(1, 3), [2,1]) - vereq(a, [3,2,1]) - a.__setitem__(slice(0, 2, 1), [2,3]) - vereq(a, [2,3,1]) - -def subtype_resurrection(): - if verbose: - print "Testing resurrection of new-style instance..." - - class C(object): - container = [] - - def __del__(self): - # resurrect the instance - C.container.append(self) - - c = C() - c.attr = 42 - # The most interesting thing here is whether this blows up, due to flawed - # GC tracking logic in typeobject.c's call_finalizer() (a 2.2.1 bug). - del c - - # If that didn't blow up, it's also interesting to see whether clearing - # the last container slot works: that will attempt to delete c again, - # which will cause c to get appended back to the container again "during" - # the del. - del C.container[-1] - vereq(len(C.container), 1) - vereq(C.container[-1].attr, 42) - - # Make c mortal again, so that the test framework with -l doesn't report - # it as a leak. - del C.__del__ - -def slottrash(): - # Deallocating deeply nested slotted trash caused stack overflows - if verbose: - print "Testing slot trash..." - class trash(object): - __slots__ = ['x'] - def __init__(self, x): - self.x = x - o = None - for i in xrange(50000): - o = trash(o) - del o - -def slotmultipleinheritance(): - # SF bug 575229, multiple inheritance w/ slots dumps core - class A(object): - __slots__=() - class B(object): - pass - class C(A,B) : - __slots__=() - vereq(C.__basicsize__, B.__basicsize__) - verify(hasattr(C, '__dict__')) - verify(hasattr(C, '__weakref__')) - C().x = 2 - -def testrmul(): - # SF patch 592646 - if verbose: - print "Testing correct invocation of __rmul__..." - class C(object): - def __mul__(self, other): - return "mul" - def __rmul__(self, other): - return "rmul" - a = C() - vereq(a*2, "mul") - vereq(a*2.2, "mul") - vereq(2*a, "rmul") - vereq(2.2*a, "rmul") - -def testipow(): - # [SF bug 620179] - if verbose: - print "Testing correct invocation of __ipow__..." - class C(object): - def __ipow__(self, other): - pass - a = C() - a **= 2 - -def do_this_first(): - if verbose: - print "Testing SF bug 551412 ..." - # This dumps core when SF bug 551412 isn't fixed -- - # but only when test_descr.py is run separately. - # (That can't be helped -- as soon as PyType_Ready() - # is called for PyLong_Type, the bug is gone.) - class UserLong(object): - def __pow__(self, *args): - pass - try: - pow(0L, UserLong(), 0L) - except: - pass - - if verbose: - print "Testing SF bug 570483..." - # Another segfault only when run early - # (before PyType_Ready(tuple) is called) - type.mro(tuple) - -def test_mutable_bases(): - if verbose: - print "Testing mutable bases..." - # stuff that should work: - class C(object): - pass - class C2(object): - def __getattribute__(self, attr): - if attr == 'a': - return 2 - else: - return super(C2, self).__getattribute__(attr) - def meth(self): - return 1 - class D(C): - pass - class E(D): - pass - d = D() - e = E() - D.__bases__ = (C,) - D.__bases__ = (C2,) - vereq(d.meth(), 1) - vereq(e.meth(), 1) - vereq(d.a, 2) - vereq(e.a, 2) - vereq(C2.__subclasses__(), [D]) - - # stuff that shouldn't: - class L(list): - pass - - try: - L.__bases__ = (dict,) - except TypeError: - pass - else: - raise TestFailed, "shouldn't turn list subclass into dict subclass" - - try: - list.__bases__ = (dict,) - except TypeError: - pass - else: - raise TestFailed, "shouldn't be able to assign to list.__bases__" - - try: - D.__bases__ = (C2, list) - except TypeError: - pass - else: - assert 0, "best_base calculation found wanting" - - try: - del D.__bases__ - except TypeError: - pass - else: - raise TestFailed, "shouldn't be able to delete .__bases__" - - try: - D.__bases__ = () - except TypeError, msg: - if str(msg) == "a new-style class can't have only classic bases": - raise TestFailed, "wrong error message for .__bases__ = ()" - else: - raise TestFailed, "shouldn't be able to set .__bases__ to ()" - - try: - D.__bases__ = (D,) - except TypeError: - pass - else: - # actually, we'll have crashed by here... - raise TestFailed, "shouldn't be able to create inheritance cycles" - - try: - D.__bases__ = (C, C) - except TypeError: - pass - else: - raise TestFailed, "didn't detect repeated base classes" - - try: - D.__bases__ = (E,) - except TypeError: - pass - else: - raise TestFailed, "shouldn't be able to create inheritance cycles" - - # let's throw a classic class into the mix: - class Classic: - def meth2(self): - return 3 - - D.__bases__ = (C, Classic) - - vereq(d.meth2(), 3) - vereq(e.meth2(), 3) - try: - d.a - except AttributeError: - pass - else: - raise TestFailed, "attribute should have vanished" - - try: - D.__bases__ = (Classic,) - except TypeError: - pass - else: - raise TestFailed, "new-style class must have a new-style base" - -def test_mutable_bases_with_failing_mro(): - if verbose: - print "Testing mutable bases with failing mro..." - class WorkOnce(type): - def __new__(self, name, bases, ns): - self.flag = 0 - return super(WorkOnce, self).__new__(WorkOnce, name, bases, ns) - def mro(self): - if self.flag > 0: - raise RuntimeError, "bozo" - else: - self.flag += 1 - return type.mro(self) + class B(object): + def f(self): + return "B.f" + + class C(B): + def f(self): + return super(C, self).f() + "->C.f" + + obj = C() + p = Proxy(obj) + self.assertEqual(C.__dict__["f"](p), "B.f->C.f") + + def test_carloverre(self): + # Testing prohibition of Carlo Verre's hack... + try: + object.__setattr__(str, "foo", 42) + except TypeError: + pass + else: + self.fail("Carlo Verre __setattr__ suceeded!") + try: + object.__delattr__(str, "lower") + except TypeError: + pass + else: + self.fail("Carlo Verre __delattr__ succeeded!") - class WorkAlways(type): - def mro(self): - # this is here to make sure that .mro()s aren't called - # with an exception set (which was possible at one point). - # An error message will be printed in a debug build. - # What's a good way to test for this? - return type.mro(self) + def test_weakref_segfault(self): + # Testing weakref segfault... + # SF 742911 + import weakref - class C(object): - pass + class Provoker: + def __init__(self, referrent): + self.ref = weakref.ref(referrent) - class C2(object): - pass + def __del__(self): + x = self.ref() - class D(C): - pass + class Oops(object): + pass + + o = Oops() + o.whatever = Provoker(o) + del o + + def test_wrapper_segfault(self): + # SF 927248: deeply nested wrappers could cause stack overflow + f = lambda:None + for i in xrange(1000000): + f = f.__call__ + f = None + + def test_file_fault(self): + # Testing sys.stdout is changed in getattr... + import sys + class StdoutGuard: + def __getattr__(self, attr): + sys.stdout = sys.__stdout__ + raise RuntimeError("Premature access to sys.stdout.%s" % attr) + sys.stdout = StdoutGuard() + try: + print "Oops!" + except RuntimeError: + pass - class E(D): - pass + def test_vicious_descriptor_nonsense(self): + # Testing vicious_descriptor_nonsense... - class F(D): - __metaclass__ = WorkOnce + # A potential segfault spotted by Thomas Wouters in mail to + # python-dev 2003-04-17, turned into an example & fixed by Michael + # Hudson just less than four months later... + + class Evil(object): + def __hash__(self): + return hash('attr') + def __eq__(self, other): + del C.attr + return 0 - class G(D): - __metaclass__ = WorkAlways + class Descr(object): + def __get__(self, ob, type=None): + return 1 - # Immediate subclasses have their mro's adjusted in alphabetical - # order, so E's will get adjusted before adjusting F's fails. We - # check here that E's gets restored. + class C(object): + attr = Descr() - E_mro_before = E.__mro__ - D_mro_before = D.__mro__ + c = C() + c.__dict__[Evil()] = 0 - try: - D.__bases__ = (C2,) - except RuntimeError: - vereq(E.__mro__, E_mro_before) - vereq(D.__mro__, D_mro_before) - else: - raise TestFailed, "exception not propagated" - -def test_mutable_bases_catch_mro_conflict(): - if verbose: - print "Testing mutable bases catch mro conflict..." - class A(object): - pass - - class B(object): - pass - - class C(A, B): - pass - - class D(A, B): - pass - - class E(C, D): - pass - - try: - C.__bases__ = (B, A) - except TypeError: - pass - else: - raise TestFailed, "didn't catch MRO conflict" - -def mutable_names(): - if verbose: - print "Testing mutable names..." - class C(object): - pass - - # C.__module__ could be 'test_descr' or '__main__' - mod = C.__module__ - - C.__name__ = 'D' - vereq((C.__module__, C.__name__), (mod, 'D')) - - C.__name__ = 'D.E' - vereq((C.__module__, C.__name__), (mod, 'D.E')) - -def subclass_right_op(): - if verbose: - print "Testing correct dispatch of subclass overloading __r__..." - - # This code tests various cases where right-dispatch of a subclass - # should be preferred over left-dispatch of a base class. - - # Case 1: subclass of int; this tests code in abstract.c::binary_op1() - - class B(int): - def __floordiv__(self, other): - return "B.__floordiv__" - def __rfloordiv__(self, other): - return "B.__rfloordiv__" - - vereq(B(1) // 1, "B.__floordiv__") - vereq(1 // B(1), "B.__rfloordiv__") - - # Case 2: subclass of object; this is just the baseline for case 3 - - class C(object): - def __floordiv__(self, other): - return "C.__floordiv__" - def __rfloordiv__(self, other): - return "C.__rfloordiv__" - - vereq(C() // 1, "C.__floordiv__") - vereq(1 // C(), "C.__rfloordiv__") - - # Case 3: subclass of new-style class; here it gets interesting - - class D(C): - def __floordiv__(self, other): - return "D.__floordiv__" - def __rfloordiv__(self, other): - return "D.__rfloordiv__" - - vereq(D() // C(), "D.__floordiv__") - vereq(C() // D(), "D.__rfloordiv__") - - # Case 4: this didn't work right in 2.2.2 and 2.3a1 - - class E(C): - pass - - vereq(E.__rfloordiv__, C.__rfloordiv__) - - vereq(E() // 1, "C.__floordiv__") - vereq(1 // E(), "C.__rfloordiv__") - vereq(E() // C(), "C.__floordiv__") - vereq(C() // E(), "C.__floordiv__") # This one would fail - -def dict_type_with_metaclass(): - if verbose: - print "Testing type of __dict__ when __metaclass__ set..." - - class B(object): - pass - class M(type): - pass - class C: - # In 2.3a1, C.__dict__ was a real dict rather than a dict proxy - __metaclass__ = M - veris(type(C.__dict__), type(B.__dict__)) - -def meth_class_get(): - # Full coverage of descrobject.c::classmethod_get() - if verbose: - print "Testing __get__ method of METH_CLASS C methods..." - # Baseline - arg = [1, 2, 3] - res = {1: None, 2: None, 3: None} - vereq(dict.fromkeys(arg), res) - vereq({}.fromkeys(arg), res) - # Now get the descriptor - descr = dict.__dict__["fromkeys"] - # More baseline using the descriptor directly - vereq(descr.__get__(None, dict)(arg), res) - vereq(descr.__get__({})(arg), res) - # Now check various error cases - try: - descr.__get__(None, None) - except TypeError: - pass - else: - raise TestFailed, "shouldn't have allowed descr.__get__(None, None)" - try: - descr.__get__(42) - except TypeError: - pass - else: - raise TestFailed, "shouldn't have allowed descr.__get__(42)" - try: - descr.__get__(None, 42) - except TypeError: - pass - else: - raise TestFailed, "shouldn't have allowed descr.__get__(None, 42)" - try: - descr.__get__(None, int) - except TypeError: - pass - else: - raise TestFailed, "shouldn't have allowed descr.__get__(None, int)" - -def isinst_isclass(): - if verbose: - print "Testing proxy isinstance() and isclass()..." - class Proxy(object): - def __init__(self, obj): - self.__obj = obj - def __getattribute__(self, name): - if name.startswith("_Proxy__"): - return object.__getattribute__(self, name) - else: - return getattr(self.__obj, name) - # Test with a classic class - class C: - pass - a = C() - pa = Proxy(a) - verify(isinstance(a, C)) # Baseline - verify(isinstance(pa, C)) # Test - # Test with a classic subclass - class D(C): - pass - a = D() - pa = Proxy(a) - verify(isinstance(a, C)) # Baseline - verify(isinstance(pa, C)) # Test - # Test with a new-style class - class C(object): - pass - a = C() - pa = Proxy(a) - verify(isinstance(a, C)) # Baseline - verify(isinstance(pa, C)) # Test - # Test with a new-style subclass - class D(C): - pass - a = D() - pa = Proxy(a) - verify(isinstance(a, C)) # Baseline - verify(isinstance(pa, C)) # Test - -def proxysuper(): - if verbose: - print "Testing super() for a proxy object..." - class Proxy(object): - def __init__(self, obj): - self.__obj = obj - def __getattribute__(self, name): - if name.startswith("_Proxy__"): - return object.__getattribute__(self, name) - else: - return getattr(self.__obj, name) + self.assertEqual(c.attr, 1) + # this makes a crash more likely: + import gc; gc.collect() + self.assertEqual(hasattr(c, 'attr'), False) + + def test_init(self): + # SF 1155938 + class Foo(object): + def __init__(self): + return 10 + try: + Foo() + except TypeError: + pass + else: + self.fail("did not test __init__() for None return") + + def test_method_wrapper(self): + # Testing method-wrapper objects... + # did not support any reflection before 2.5 + + l = [] + self.assertEqual(l.__add__, l.__add__) + self.assertEqual(l.__add__, [].__add__) + self.assert_(l.__add__ != [5].__add__) + self.assert_(l.__add__ != l.__mul__) + self.assert_(l.__add__.__name__ == '__add__') + self.assert_(l.__add__.__self__ is l) + self.assert_(l.__add__.__objclass__ is list) + self.assertEqual(l.__add__.__doc__, list.__add__.__doc__) + try: + hash(l.__add__) + except TypeError: + pass + else: + self.fail("no TypeError from hash([].__add__)") + + t = () + t += (7,) + self.assertEqual(t.__add__, (7,).__add__) + self.assertEqual(hash(t.__add__), hash((7,).__add__)) + + def test_not_implemented(self): + # Testing NotImplemented... + # all binary methods should be able to return a NotImplemented + import sys + import types + import operator + + def specialmethod(self, other): + return NotImplemented - class B(object): - def f(self): - return "B.f" - - class C(B): - def f(self): - return super(C, self).f() + "->C.f" - - obj = C() - p = Proxy(obj) - vereq(C.__dict__["f"](p), "B.f->C.f") - -def carloverre(): - if verbose: - print "Testing prohibition of Carlo Verre's hack..." - try: - object.__setattr__(str, "foo", 42) - except TypeError: - pass - else: - raise TestFailed, "Carlo Verre __setattr__ suceeded!" - try: - object.__delattr__(str, "lower") - except TypeError: - pass - else: - raise TestFailed, "Carlo Verre __delattr__ succeeded!" - -def weakref_segfault(): - # SF 742911 - if verbose: - print "Testing weakref segfault..." - - import weakref - - class Provoker: - def __init__(self, referrent): - self.ref = weakref.ref(referrent) - - def __del__(self): - x = self.ref() - - class Oops(object): - pass - - o = Oops() - o.whatever = Provoker(o) - del o - -def wrapper_segfault(): - # SF 927248: deeply nested wrappers could cause stack overflow - f = lambda:None - for i in xrange(1000000): - f = f.__call__ - f = None - -# Fix SF #762455, segfault when sys.stdout is changed in getattr -def filefault(): - if verbose: - print "Testing sys.stdout is changed in getattr..." - import sys - class StdoutGuard: - def __getattr__(self, attr): - sys.stdout = sys.__stdout__ - raise RuntimeError("Premature access to sys.stdout.%s" % attr) - sys.stdout = StdoutGuard() - try: - print "Oops!" - except RuntimeError: - pass - -def vicious_descriptor_nonsense(): - # A potential segfault spotted by Thomas Wouters in mail to - # python-dev 2003-04-17, turned into an example & fixed by Michael - # Hudson just less than four months later... - if verbose: - print "Testing vicious_descriptor_nonsense..." - - class Evil(object): - def __hash__(self): - return hash('attr') - def __eq__(self, other): - del C.attr - return 0 - - class Descr(object): - def __get__(self, ob, type=None): - return 1 - - class C(object): - attr = Descr() - - c = C() - c.__dict__[Evil()] = 0 - - vereq(c.attr, 1) - # this makes a crash more likely: - import gc; gc.collect() - vereq(hasattr(c, 'attr'), False) - -def test_init(): - # SF 1155938 - class Foo(object): - def __init__(self): - return 10 - try: - Foo() - except TypeError: - pass - else: - raise TestFailed, "did not test __init__() for None return" - -def methodwrapper(): - # did not support any reflection before 2.5 - if verbose: - print "Testing method-wrapper objects..." - - l = [] - vereq(l.__add__, l.__add__) - vereq(l.__add__, [].__add__) - verify(l.__add__ != [5].__add__) - verify(l.__add__ != l.__mul__) - verify(l.__add__.__name__ == '__add__') - verify(l.__add__.__self__ is l) - verify(l.__add__.__objclass__ is list) - vereq(l.__add__.__doc__, list.__add__.__doc__) - try: - hash(l.__add__) - except TypeError: - pass - else: - raise TestFailed("no TypeError from hash([].__add__)") - - t = () - t += (7,) - vereq(t.__add__, (7,).__add__) - vereq(hash(t.__add__), hash((7,).__add__)) - -def notimplemented(): - # all binary methods should be able to return a NotImplemented - if verbose: - print "Testing NotImplemented..." - - import sys - import types - import operator - - def specialmethod(self, other): - return NotImplemented - - def check(expr, x, y): - try: - exec expr in {'x': x, 'y': y, 'operator': operator} - except TypeError: - pass - else: - raise TestFailed("no TypeError from %r" % (expr,)) - - N1 = sys.maxint + 1L # might trigger OverflowErrors instead of TypeErrors - N2 = sys.maxint # if sizeof(int) < sizeof(long), might trigger - # ValueErrors instead of TypeErrors - for metaclass in [type, types.ClassType]: - for name, expr, iexpr in [ - ('__add__', 'x + y', 'x += y'), - ('__sub__', 'x - y', 'x -= y'), - ('__mul__', 'x * y', 'x *= y'), - ('__truediv__', 'operator.truediv(x, y)', None), - ('__floordiv__', 'operator.floordiv(x, y)', None), - ('__div__', 'x / y', 'x /= y'), - ('__mod__', 'x % y', 'x %= y'), - ('__divmod__', 'divmod(x, y)', None), - ('__pow__', 'x ** y', 'x **= y'), - ('__lshift__', 'x << y', 'x <<= y'), - ('__rshift__', 'x >> y', 'x >>= y'), - ('__and__', 'x & y', 'x &= y'), - ('__or__', 'x | y', 'x |= y'), - ('__xor__', 'x ^ y', 'x ^= y'), - ('__coerce__', 'coerce(x, y)', None)]: - if name == '__coerce__': - rname = name + def check(expr, x, y): + try: + exec expr in {'x': x, 'y': y, 'operator': operator} + except TypeError: + pass else: - rname = '__r' + name[2:] - A = metaclass('A', (), {name: specialmethod}) - B = metaclass('B', (), {rname: specialmethod}) - a = A() - b = B() - check(expr, a, a) - check(expr, a, b) - check(expr, b, a) - check(expr, b, b) - check(expr, a, N1) - check(expr, a, N2) - check(expr, N1, b) - check(expr, N2, b) - if iexpr: - check(iexpr, a, a) - check(iexpr, a, b) - check(iexpr, b, a) - check(iexpr, b, b) - check(iexpr, a, N1) - check(iexpr, a, N2) - iname = '__i' + name[2:] - C = metaclass('C', (), {iname: specialmethod}) - c = C() - check(iexpr, c, a) - check(iexpr, c, b) - check(iexpr, c, N1) - check(iexpr, c, N2) - -def test_assign_slice(): - # ceval.c's assign_slice used to check for - # tp->tp_as_sequence->sq_slice instead of - # tp->tp_as_sequence->sq_ass_slice - if verbose: - print "Testing assign_slice..." - - class C(object): - def __setslice__(self, start, stop, value): - self.value = value - - c = C() - c[1:2] = 3 - vereq(c.value, 3) - -def test_weakref_in_del_segfault(): - # This used to segfault until r60057 - if verbose: - print "Testing weakref in del segfault..." - - import weakref - global ref - - class Target(): - def __del__(self): - global ref - ref = weakref.ref(self) - - w = Target() - del w - del ref - -def test_borrowed_ref_3_segfault(): - # This used to segfault until r60224 - if verbose: - print "Testing borrowed ref 3 segfault..." - - class KeyFunc(object): - def __call__(self, n): - del d['key'] - return 1 - - d = {'key': KeyFunc()} - try: - min(range(10), **d) - except: - pass - -def test_borrowed_ref_4_segfault(): - # This used to segfault until r60224 - if verbose: - print "Testing borrowed ref 4 segfault..." + self.fail("no TypeError from %r" % (expr,)) - import types - import __builtin__ + N1 = sys.maxint + 1L # might trigger OverflowErrors instead of + # TypeErrors + N2 = sys.maxint # if sizeof(int) < sizeof(long), might trigger + # ValueErrors instead of TypeErrors + for metaclass in [type, types.ClassType]: + for name, expr, iexpr in [ + ('__add__', 'x + y', 'x += y'), + ('__sub__', 'x - y', 'x -= y'), + ('__mul__', 'x * y', 'x *= y'), + ('__truediv__', 'operator.truediv(x, y)', None), + ('__floordiv__', 'operator.floordiv(x, y)', None), + ('__div__', 'x / y', 'x /= y'), + ('__mod__', 'x % y', 'x %= y'), + ('__divmod__', 'divmod(x, y)', None), + ('__pow__', 'x ** y', 'x **= y'), + ('__lshift__', 'x << y', 'x <<= y'), + ('__rshift__', 'x >> y', 'x >>= y'), + ('__and__', 'x & y', 'x &= y'), + ('__or__', 'x | y', 'x |= y'), + ('__xor__', 'x ^ y', 'x ^= y'), + ('__coerce__', 'coerce(x, y)', None)]: + if name == '__coerce__': + rname = name + else: + rname = '__r' + name[2:] + A = metaclass('A', (), {name: specialmethod}) + B = metaclass('B', (), {rname: specialmethod}) + a = A() + b = B() + check(expr, a, a) + check(expr, a, b) + check(expr, b, a) + check(expr, b, b) + check(expr, a, N1) + check(expr, a, N2) + check(expr, N1, b) + check(expr, N2, b) + if iexpr: + check(iexpr, a, a) + check(iexpr, a, b) + check(iexpr, b, a) + check(iexpr, b, b) + check(iexpr, a, N1) + check(iexpr, a, N2) + iname = '__i' + name[2:] + C = metaclass('C', (), {iname: specialmethod}) + c = C() + check(iexpr, c, a) + check(iexpr, c, b) + check(iexpr, c, N1) + check(iexpr, c, N2) + + def test_assign_slice(self): + # ceval.c's assign_slice used to check for + # tp->tp_as_sequence->sq_slice instead of + # tp->tp_as_sequence->sq_ass_slice - class X(object): - def __getattr__(self, name): - # this is called with name == '__bases__' by PyObject_IsInstance() - # during the unbound method call -- it frees the unbound method - # itself before it invokes its im_func. - del __builtin__.__import__ - return () - - pseudoclass = X() - - class Y(object): - def __call__(self, *args): - # 'self' was freed already - return (self, args) - - # make an unbound method - orig_import = __import__ - try: - __builtin__.__import__ = types.MethodType(Y(), None, (pseudoclass, str)) - import spam - finally: - __builtin__.__import__ = orig_import - -def test_losing_dict_ref_segfault(): - # This used to segfault; - # derived from issue #1303614, test67.py - if verbose: - print "Testing losing dict ref segfault..." - - class Strange(object): - def __hash__(self): - return hash('hello') - - def __eq__(self, other): - x.__dict__ = {} # the old x.__dict__ is deallocated - return False - - class X(object): - pass - - v = 123 - x = X() - x.__dict__ = {Strange(): 42, 'hello': v+456} - x.hello + class C(object): + def __setslice__(self, start, stop, value): + self.value = value + + c = C() + c[1:2] = 3 + self.assertEqual(c.value, 3) -def test_main(): - weakref_segfault() # Must be first, somehow - wrapper_segfault() - do_this_first() - class_docstrings() - lists() - dicts() - dict_constructor() - test_dir() - ints() - longs() - floats() - complexes() - spamlists() - spamdicts() - pydicts() - pylists() - metaclass() - pymods() - multi() - mro_disagreement() - diamond() - ex5() - monotonicity() - consistency_with_epg() - objects() - slots() - slotspecials() - dynamics() - errors() - classmethods() - classmethods_in_c() - staticmethods() - staticmethods_in_c() - classic() - compattr() - newslot() - altmro() - overloading() - methods() - specials() - recursions() - weakrefs() - properties() - properties_plus() - supers() - inherits() - keywords() - restricted() - str_subclass_as_dict_key() - classic_comparisons() - rich_comparisons() - coercions() - descrdoc() - setclass() - setdict() - pickles() - copies() - binopoverride() - subclasspropagation() - buffer_inherit() - str_of_str_subclass() - kwdargs() - recursive__call__() - delhook() - hashinherit() - strops() - deepcopyrecursive() - modules() - dictproxyiterkeys() - dictproxyitervalues() - dictproxyiteritems() - pickleslots() - funnynew() - imulbug() - docdescriptor() - copy_setstate() - slices() - subtype_resurrection() - slottrash() - slotmultipleinheritance() - testrmul() - testipow() - test_mutable_bases() - test_mutable_bases_with_failing_mro() - test_mutable_bases_catch_mro_conflict() - mutable_names() - subclass_right_op() - dict_type_with_metaclass() - meth_class_get() - isinst_isclass() - proxysuper() - carloverre() - filefault() - vicious_descriptor_nonsense() - test_init() - methodwrapper() - notimplemented() - test_assign_slice() - test_weakref_in_del_segfault() - test_borrowed_ref_3_segfault() - test_borrowed_ref_4_segfault() - test_losing_dict_ref_segfault() +class DictProxyTests(unittest.TestCase): + def setUp(self): + class C(object): + def meth(self): + pass + self.C = C + + def test_iter_keys(self): + # Testing dict-proxy iterkeys... + keys = [ key for key in self.C.__dict__.iterkeys() ] + keys.sort() + self.assertEquals(keys, ['__dict__', '__doc__', '__module__', + '__weakref__', 'meth']) + + def test_iter_values(self): + # Testing dict-proxy itervalues... + values = [ values for values in self.C.__dict__.itervalues() ] + self.assertEqual(len(values), 5) + + def test_iter_items(self): + # Testing dict-proxy iteritems... + keys = [ key for (key, value) in self.C.__dict__.iteritems() ] + keys.sort() + self.assertEqual(keys, ['__dict__', '__doc__', '__module__', + '__weakref__', 'meth']) + + def test_dict_type_with_metaclass(self): + # Testing type of __dict__ when __metaclass__ set... + class B(object): + pass + class M(type): + pass + class C: + # In 2.3a1, C.__dict__ was a real dict rather than a dict proxy + __metaclass__ = M + self.assertEqual(type(C.__dict__), type(B.__dict__)) + + +class PTypesLongInitTest(unittest.TestCase): + # This is in its own TestCase so that it can be run before any other tests. + def test_pytype_long_ready(self): + # Testing SF bug 551412 ... + + # This dumps core when SF bug 551412 isn't fixed -- + # but only when test_descr.py is run separately. + # (That can't be helped -- as soon as PyType_Ready() + # is called for PyLong_Type, the bug is gone.) + class UserLong(object): + def __pow__(self, *args): + pass + try: + pow(0L, UserLong(), 0L) + except: + pass + + # Another segfault only when run early + # (before PyType_Ready(tuple) is called) + type.mro(tuple) - if verbose: print "All OK" + +def test_main(): + # Run all local test cases, with PTypesLongInitTest first. + test_support.run_unittest(PTypesLongInitTest, OperatorsTest, + ClassPropertiesAndMethods, DictProxyTests) if __name__ == "__main__": test_main() From python-checkins at python.org Sat Feb 2 11:18:16 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 11:18:16 +0100 (CET) Subject: [Python-checkins] r60522 - python/trunk/Lib/test/test_funcattrs.py Message-ID: <20080202101816.C59EA1E400B@bag.python.org> Author: georg.brandl Date: Sat Feb 2 11:18:15 2008 New Revision: 60522 Modified: python/trunk/Lib/test/test_funcattrs.py Log: Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler. Modified: python/trunk/Lib/test/test_funcattrs.py ============================================================================== --- python/trunk/Lib/test/test_funcattrs.py (original) +++ python/trunk/Lib/test/test_funcattrs.py Sat Feb 2 11:18:15 2008 @@ -1,414 +1,281 @@ -from test.test_support import verbose, TestFailed, verify +from test import test_support import types +import unittest -class F: - def a(self): - pass - -def b(): - 'my docstring' - pass - -# __module__ is a special attribute -verify(b.__module__ == __name__) -verify(verify.__module__ == "test.test_support") - -# setting attributes on functions -try: - b.publish -except AttributeError: pass -else: raise TestFailed, 'expected AttributeError' - -if b.__dict__ <> {}: - raise TestFailed, 'expected unassigned func.__dict__ to be {}' - -b.publish = 1 -if b.publish <> 1: - raise TestFailed, 'function attribute not set to expected value' - -docstring = 'its docstring' -b.__doc__ = docstring -if b.__doc__ <> docstring: - raise TestFailed, 'problem with setting __doc__ attribute' - -if 'publish' not in dir(b): - raise TestFailed, 'attribute not in dir()' - -try: - del b.__dict__ -except TypeError: pass -else: raise TestFailed, 'del func.__dict__ expected TypeError' - -b.publish = 1 -try: - b.__dict__ = None -except TypeError: pass -else: raise TestFailed, 'func.__dict__ = None expected TypeError' - -d = {'hello': 'world'} -b.__dict__ = d -if b.func_dict is not d: - raise TestFailed, 'func.__dict__ assignment to dictionary failed' -if b.hello <> 'world': - raise TestFailed, 'attribute after func.__dict__ assignment failed' - -f1 = F() -f2 = F() - -try: - F.a.publish -except AttributeError: pass -else: raise TestFailed, 'expected AttributeError' - -try: - f1.a.publish -except AttributeError: pass -else: raise TestFailed, 'expected AttributeError' - -# In Python 2.1 beta 1, we disallowed setting attributes on unbound methods -# (it was already disallowed on bound methods). See the PEP for details. -try: - F.a.publish = 1 -except (AttributeError, TypeError): pass -else: raise TestFailed, 'expected AttributeError or TypeError' - -# But setting it explicitly on the underlying function object is okay. -F.a.im_func.publish = 1 - -if F.a.publish <> 1: - raise TestFailed, 'unbound method attribute not set to expected value' - -if f1.a.publish <> 1: - raise TestFailed, 'bound method attribute access did not work' - -if f2.a.publish <> 1: - raise TestFailed, 'bound method attribute access did not work' - -if 'publish' not in dir(F.a): - raise TestFailed, 'attribute not in dir()' - -try: - f1.a.publish = 0 -except (AttributeError, TypeError): pass -else: raise TestFailed, 'expected AttributeError or TypeError' - -# See the comment above about the change in semantics for Python 2.1b1 -try: - F.a.myclass = F -except (AttributeError, TypeError): pass -else: raise TestFailed, 'expected AttributeError or TypeError' - -F.a.im_func.myclass = F - -f1.a.myclass -f2.a.myclass -f1.a.myclass -F.a.myclass - -if f1.a.myclass is not f2.a.myclass or \ - f1.a.myclass is not F.a.myclass: - raise TestFailed, 'attributes were not the same' - -# try setting __dict__ -try: - F.a.__dict__ = (1, 2, 3) -except (AttributeError, TypeError): pass -else: raise TestFailed, 'expected TypeError or AttributeError' - -F.a.im_func.__dict__ = {'one': 11, 'two': 22, 'three': 33} - -if f1.a.two <> 22: - raise TestFailed, 'setting __dict__' - -from UserDict import UserDict -d = UserDict({'four': 44, 'five': 55}) - -try: - F.a.__dict__ = d -except (AttributeError, TypeError): pass -else: raise TestFailed +def cannot_set_attr(obj, name, value, exceptions): + # This method is not called as a test (name doesn't start with 'test'), + # but may be used by other tests. + try: setattr(obj, name, value) + except exceptions: pass + else: self.fail("shouldn't be able to set %s to %r" % (name, value)) + try: delattr(obj, name) + except exceptions: pass + else: self.fail("shouldn't be able to del %s" % name) + +class FuncAttrsTest(unittest.TestCase): + def setUp(self): + class F: + def a(self): + pass + def b(): + return 3 + self.f = F + self.fi = F() + self.b = b + +class FunctionPropertiesTest(FuncAttrsTest): + # Include the external setUp method that is common to all tests + def test_module(self): + self.assertEqual(self.b.__module__, __name__) + + def test_dir_includes_correct_attrs(self): + self.b.known_attr = 7 + self.assert_('known_attr' in dir(self.b), + "set attributes not in dir listing of method") + # Test on underlying function object of method + self.f.a.im_func.known_attr = 7 + self.assert_('known_attr' in dir(self.f.a), + "set attribute on unbound method implementation in class not in " + "dir") + self.assert_('known_attr' in dir(self.fi.a), + "set attribute on unbound method implementations, should show up" + " in next dir") + + def test_duplicate_function_equality(self): + # Body of `duplicate' is the exact same as self.b + def duplicate(): + 'my docstring' + return 3 + self.assertNotEqual(self.b, duplicate) + + def test_copying_func_code(self): + def test(): pass + self.assertEqual(test(), None) + test.func_code = self.b.func_code + self.assertEqual(test(), 3) # self.b always returns 3, arbitrarily + + def test_func_globals(self): + self.assertEqual(self.b.func_globals, globals()) + cannot_set_attr(self.b, 'func_globals', 2, TypeError) + + def test_func_name(self): + self.assertEqual(self.b.__name__, 'b') + self.assertEqual(self.b.func_name, 'b') + self.b.__name__ = 'c' + self.assertEqual(self.b.__name__, 'c') + self.assertEqual(self.b.func_name, 'c') + self.b.func_name = 'd' + self.assertEqual(self.b.__name__, 'd') + self.assertEqual(self.b.func_name, 'd') + # __name__ and func_name must be a string + cannot_set_attr(self.b, '__name__', 7, TypeError) + cannot_set_attr(self.b, 'func_name', 7, TypeError) + # __name__ must be available when in restricted mode. Exec will raise + # AttributeError if __name__ is not available on f. + s = """def f(): pass\nf.__name__""" + exec s in {'__builtins__': {}} + # Test on methods, too + self.assertEqual(self.f.a.__name__, 'a') + self.assertEqual(self.fi.a.__name__, 'a') + cannot_set_attr(self.f.a, "__name__", 'a', AttributeError) + cannot_set_attr(self.fi.a, "__name__", 'a', AttributeError) + + def test_func_code(self): + num_one, num_two = 7, 8 + def a(): pass + def b(): return 12 + def c(): return num_one + def d(): return num_two + def e(): return num_one, num_two + for func in [a, b, c, d, e]: + self.assertEqual(type(func.func_code), types.CodeType) + self.assertEqual(c(), 7) + self.assertEqual(d(), 8) + d.func_code = c.func_code + self.assertEqual(c.func_code, d.func_code) + self.assertEqual(c(), 7) + # self.assertEqual(d(), 7) + try: b.func_code = c.func_code + except ValueError: pass + else: self.fail( + "func_code with different numbers of free vars should not be " + "possible") + try: e.func_code = d.func_code + except ValueError: pass + else: self.fail( + "func_code with different numbers of free vars should not be " + "possible") + + def test_blank_func_defaults(self): + self.assertEqual(self.b.func_defaults, None) + del self.b.func_defaults + self.assertEqual(self.b.func_defaults, None) + + def test_func_default_args(self): + def first_func(a, b): + return a+b + def second_func(a=1, b=2): + return a+b + self.assertEqual(first_func.func_defaults, None) + self.assertEqual(second_func.func_defaults, (1, 2)) + first_func.func_defaults = (1, 2) + self.assertEqual(first_func.func_defaults, (1, 2)) + self.assertEqual(first_func(), 3) + self.assertEqual(first_func(3), 5) + self.assertEqual(first_func(3, 5), 8) + del second_func.func_defaults + self.assertEqual(second_func.func_defaults, None) + try: second_func() + except TypeError: pass + else: self.fail( + "func_defaults does not update; deleting it does not remove " + "requirement") + +class ImplicitReferencesTest(FuncAttrsTest): + def test_im_class(self): + self.assertEqual(self.f.a.im_class, self.f) + self.assertEqual(self.fi.a.im_class, self.f) + cannot_set_attr(self.f.a, "im_class", self.f, TypeError) + cannot_set_attr(self.fi.a, "im_class", self.f, TypeError) + + def test_im_func(self): + self.f.b = self.b + self.assertEqual(self.f.b.im_func, self.b) + self.assertEqual(self.fi.b.im_func, self.b) + cannot_set_attr(self.f.b, "im_func", self.b, TypeError) + cannot_set_attr(self.fi.b, "im_func", self.b, TypeError) + + def test_im_self(self): + self.assertEqual(self.f.a.im_self, None) + self.assertEqual(self.fi.a.im_self, self.fi) + cannot_set_attr(self.f.a, "im_self", None, TypeError) + cannot_set_attr(self.fi.a, "im_self", self.fi, TypeError) + + def test_im_func_non_method(self): + # Behavior should be the same when a method is added via an attr + # assignment + self.f.id = types.MethodType(id, None, self.f) + self.assertEqual(self.fi.id(), id(self.fi)) + self.assertNotEqual(self.fi.id(), id(self.f)) + # Test usage + try: self.f.id.unknown_attr + except AttributeError: pass + else: self.fail("using unknown attributes should raise AttributeError") + # Test assignment and deletion + cannot_set_attr(self.f.id, 'unknown_attr', 2, AttributeError) + cannot_set_attr(self.fi.id, 'unknown_attr', 2, AttributeError) + + def test_implicit_method_properties(self): + self.f.a.im_func.known_attr = 7 + self.assertEqual(self.f.a.known_attr, 7) + self.assertEqual(self.fi.a.known_attr, 7) + +class ArbitraryFunctionAttrTest(FuncAttrsTest): + def test_set_attr(self): + self.b.known_attr = 7 + self.assertEqual(self.b.known_attr, 7) + for func in [self.f.a, self.fi.a]: + try: func.known_attr = 7 + except AttributeError: pass + else: self.fail("setting attributes on methods should raise error") + + def test_delete_unknown_attr(self): + try: del self.b.unknown_attr + except AttributeError: pass + else: self.fail("deleting unknown attribute should raise TypeError") + + def test_setting_attrs_duplicates(self): + try: self.f.a.klass = self.f + except AttributeError: pass + else: self.fail("setting arbitrary attribute in unbound function " + " should raise AttributeError") + self.f.a.im_func.klass = self.f + for method in [self.f.a, self.fi.a, self.fi.a.im_func]: + self.assertEqual(method.klass, self.f) + + def test_unset_attr(self): + for func in [self.b, self.f.a, self.fi.a]: + try: func.non_existant_attr + except AttributeError: pass + else: self.fail("using unknown attributes should raise " + "AttributeError") + +class FunctionDictsTest(FuncAttrsTest): + def test_setting_dict_to_invalid(self): + cannot_set_attr(self.b, '__dict__', None, TypeError) + cannot_set_attr(self.b, 'func_dict', None, TypeError) + from UserDict import UserDict + d = UserDict({'known_attr': 7}) + cannot_set_attr(self.f.a.im_func, '__dict__', d, TypeError) + cannot_set_attr(self.fi.a.im_func, '__dict__', d, TypeError) + + def test_setting_dict_to_valid(self): + d = {'known_attr': 7} + self.b.__dict__ = d + # Setting dict is only possible on the underlying function objects + self.f.a.im_func.__dict__ = d + # Test assignment + self.assertEqual(d, self.b.__dict__) + self.assertEqual(d, self.b.func_dict) + # ... and on all the different ways of referencing the method's func + self.assertEqual(d, self.f.a.im_func.__dict__) + self.assertEqual(d, self.f.a.__dict__) + self.assertEqual(d, self.fi.a.im_func.__dict__) + self.assertEqual(d, self.fi.a.__dict__) + # Test value + self.assertEqual(self.b.known_attr, 7) + self.assertEqual(self.b.__dict__['known_attr'], 7) + self.assertEqual(self.b.func_dict['known_attr'], 7) + # ... and again, on all the different method's names + self.assertEqual(self.f.a.im_func.known_attr, 7) + self.assertEqual(self.f.a.known_attr, 7) + self.assertEqual(self.fi.a.im_func.known_attr, 7) + self.assertEqual(self.fi.a.known_attr, 7) + + def test_delete_func_dict(self): + try: del self.b.__dict__ + except TypeError: pass + else: self.fail("deleting function dictionary should raise TypeError") + try: del self.b.func_dict + except TypeError: pass + else: self.fail("deleting function dictionary should raise TypeError") + + def test_unassigned_dict(self): + self.assertEqual(self.b.__dict__, {}) + + def test_func_as_dict_key(self): + value = "Some string" + d = {} + d[self.b] = value + self.assertEqual(d[self.b], value) + +class FunctionDocstringTest(FuncAttrsTest): + def test_set_docstring_attr(self): + self.assertEqual(self.b.__doc__, None) + self.assertEqual(self.b.func_doc, None) + docstr = "A test method that does nothing" + self.b.__doc__ = self.f.a.im_func.__doc__ = docstr + self.assertEqual(self.b.__doc__, docstr) + self.assertEqual(self.b.func_doc, docstr) + self.assertEqual(self.f.a.__doc__, docstr) + self.assertEqual(self.fi.a.__doc__, docstr) + cannot_set_attr(self.f.a, "__doc__", docstr, AttributeError) + cannot_set_attr(self.fi.a, "__doc__", docstr, AttributeError) + + def test_delete_docstring(self): + self.b.__doc__ = "The docstring" + del self.b.__doc__ + self.assertEqual(self.b.__doc__, None) + self.assertEqual(self.b.func_doc, None) + self.b.func_doc = "The docstring" + del self.b.func_doc + self.assertEqual(self.b.__doc__, None) + self.assertEqual(self.b.func_doc, None) + +def test_main(): + test_support.run_unittest(FunctionPropertiesTest, ImplicitReferencesTest, + ArbitraryFunctionAttrTest, FunctionDictsTest, + FunctionDocstringTest) -if f2.a.one <> f1.a.one <> F.a.one <> 11: - raise TestFailed - -# im_func may not be a Python method! -import types -F.id = types.MethodType(id, None, F) - -eff = F() -if eff.id() <> id(eff): - raise TestFailed - -try: - F.id.foo -except AttributeError: pass -else: raise TestFailed - -try: - F.id.foo = 12 -except (AttributeError, TypeError): pass -else: raise TestFailed - -try: - F.id.foo -except AttributeError: pass -else: raise TestFailed - -try: - eff.id.foo -except AttributeError: pass -else: raise TestFailed - -try: - eff.id.foo = 12 -except (AttributeError, TypeError): pass -else: raise TestFailed - -try: - eff.id.foo -except AttributeError: pass -else: raise TestFailed - -# Regression test for a crash in pre-2.1a1 -def another(): - pass - -try: - del another.__dict__ -except TypeError: pass -else: raise TestFailed - -try: - del another.func_dict -except TypeError: pass -else: raise TestFailed - -try: - another.func_dict = None -except TypeError: pass -else: raise TestFailed - -try: - del another.bar -except AttributeError: pass -else: raise TestFailed - -# This isn't specifically related to function attributes, but it does test a -# core dump regression in funcobject.c -del another.func_defaults - -def foo(): - pass - -def bar(): - pass - -def temp(): - print 1 - -if foo==bar: - raise TestFailed - -d={} -d[foo] = 1 - -foo.func_code = temp.func_code - -d[foo] - -# Test all predefined function attributes systematically - -def cantset(obj, name, value, exception=(AttributeError, TypeError)): - verify(hasattr(obj, name)) # Otherwise it's probably a typo - try: - setattr(obj, name, value) - except exception: - pass - else: - raise TestFailed, "shouldn't be able to set %s to %r" % (name, value) - try: - delattr(obj, name) - except (AttributeError, TypeError): - pass - else: - raise TestFailed, "shouldn't be able to del %s" % name - -def test_func_closure(): - a = 12 - def f(): print a - c = f.func_closure - verify(isinstance(c, tuple)) - verify(len(c) == 1) - verify(c[0].__class__.__name__ == "cell") # don't have a type object handy - cantset(f, "func_closure", c) - -def test_empty_cell(): - def f(): print a - try: - f.func_closure[0].cell_contents - except ValueError: - pass - else: - raise TestFailed, "shouldn't be able to read an empty cell" - - a = 12 - -def test_func_doc(): - def f(): pass - verify(f.__doc__ is None) - verify(f.func_doc is None) - f.__doc__ = "hello" - verify(f.__doc__ == "hello") - verify(f.func_doc == "hello") - del f.__doc__ - verify(f.__doc__ is None) - verify(f.func_doc is None) - f.func_doc = "world" - verify(f.__doc__ == "world") - verify(f.func_doc == "world") - del f.func_doc - verify(f.func_doc is None) - verify(f.__doc__ is None) - -def test_func_globals(): - def f(): pass - verify(f.func_globals is globals()) - cantset(f, "func_globals", globals()) - -def test_func_name(): - def f(): pass - verify(f.__name__ == "f") - verify(f.func_name == "f") - f.__name__ = "g" - verify(f.__name__ == "g") - verify(f.func_name == "g") - f.func_name = "h" - verify(f.__name__ == "h") - verify(f.func_name == "h") - cantset(f, "func_globals", 1) - cantset(f, "__name__", 1) - # test that you can access func.__name__ in restricted mode - s = """def f(): pass\nf.__name__""" - exec s in {'__builtins__':{}} - - -def test_func_code(): - a = b = 24 - def f(): pass - def g(): print 12 - def f1(): print a - def g1(): print b - def f2(): print a, b - verify(type(f.func_code) is types.CodeType) - f.func_code = g.func_code - cantset(f, "func_code", None) - # can't change the number of free vars - cantset(f, "func_code", f1.func_code, exception=ValueError) - cantset(f1, "func_code", f.func_code, exception=ValueError) - cantset(f1, "func_code", f2.func_code, exception=ValueError) - f1.func_code = g1.func_code - -def test_func_defaults(): - def f(a, b): return (a, b) - verify(f.func_defaults is None) - f.func_defaults = (1, 2) - verify(f.func_defaults == (1, 2)) - verify(f(10) == (10, 2)) - def g(a=1, b=2): return (a, b) - verify(g.func_defaults == (1, 2)) - del g.func_defaults - verify(g.func_defaults is None) - try: - g() - except TypeError: - pass - else: - raise TestFailed, "shouldn't be allowed to call g() w/o defaults" - -def test_func_dict(): - def f(): pass - a = f.__dict__ - b = f.func_dict - verify(a == {}) - verify(a is b) - f.hello = 'world' - verify(a == {'hello': 'world'}) - verify(f.func_dict is a is f.__dict__) - f.func_dict = {} - verify(not hasattr(f, "hello")) - f.__dict__ = {'world': 'hello'} - verify(f.world == "hello") - verify(f.__dict__ is f.func_dict == {'world': 'hello'}) - cantset(f, "func_dict", None) - cantset(f, "__dict__", None) - -def test_im_class(): - class C: - def foo(self): pass - verify(C.foo.im_class is C) - verify(C().foo.im_class is C) - cantset(C.foo, "im_class", C) - cantset(C().foo, "im_class", C) - -def test_im_func(): - def foo(self): pass - class C: - pass - C.foo = foo - verify(C.foo.im_func is foo) - verify(C().foo.im_func is foo) - cantset(C.foo, "im_func", foo) - cantset(C().foo, "im_func", foo) - -def test_im_self(): - class C: - def foo(self): pass - verify(C.foo.im_self is None) - c = C() - verify(c.foo.im_self is c) - cantset(C.foo, "im_self", None) - cantset(c.foo, "im_self", c) - -def test_im_dict(): - class C: - def foo(self): pass - foo.bar = 42 - verify(C.foo.__dict__ == {'bar': 42}) - verify(C().foo.__dict__ == {'bar': 42}) - cantset(C.foo, "__dict__", C.foo.__dict__) - cantset(C().foo, "__dict__", C.foo.__dict__) - -def test_im_doc(): - class C: - def foo(self): "hello" - verify(C.foo.__doc__ == "hello") - verify(C().foo.__doc__ == "hello") - cantset(C.foo, "__doc__", "hello") - cantset(C().foo, "__doc__", "hello") - -def test_im_name(): - class C: - def foo(self): pass - verify(C.foo.__name__ == "foo") - verify(C().foo.__name__ == "foo") - cantset(C.foo, "__name__", "foo") - cantset(C().foo, "__name__", "foo") - -def testmore(): - test_func_closure() - test_empty_cell() - test_func_doc() - test_func_globals() - test_func_name() - test_func_code() - test_func_defaults() - test_func_dict() - # Tests for instance method attributes - test_im_class() - test_im_func() - test_im_self() - test_im_dict() - test_im_doc() - test_im_name() - -testmore() +if __name__ == "__main__": + test_main() From python-checkins at python.org Sat Feb 2 11:49:58 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 11:49:58 +0100 (CET) Subject: [Python-checkins] r60525 - in python/trunk/Doc: includes/email-alternative.py library/email-examples.rst Message-ID: <20080202104958.D37901E400B@bag.python.org> Author: georg.brandl Date: Sat Feb 2 11:49:58 2008 New Revision: 60525 Added: python/trunk/Doc/includes/email-alternative.py Modified: python/trunk/Doc/library/email-examples.rst Log: Add email example how to send a multipart message. Written for GHOP by Martin Matejek. Added: python/trunk/Doc/includes/email-alternative.py ============================================================================== --- (empty file) +++ python/trunk/Doc/includes/email-alternative.py Sat Feb 2 11:49:58 2008 @@ -0,0 +1,48 @@ +#! /usr/bin/python + +import smtplib + +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText + +# me == my email address +# you == recipient's email address +me = "my at email.com" +you = "your at email.com" + +# Create message container - the correct MIME type is multipart/alternative. +msg = MIMEMultipart('alternative') +msg['Subject'] = "Link" +msg['From'] = me +msg['To'] = you + +# Create the body of the message (a plain-text and an HTML version). +text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org" +html = """\ + + + +

    Hi!
    + How are you?
    + Here is the link you wanted. +

    + + +""" + +# Record the MIME types of both parts - text/plain and text/html. +part1 = MIMEText(text, 'plain') +part2 = MIMEText(html, 'html') + +# Attach parts into message container. +# According to RFC 2046, the last part of a multipart message, in this case +# the HTML message, is best and preferred. +msg.attach(part1) +msg.attach(part2) + +# Send the message via local SMTP server. +s = smtplib.SMTP('localhost') +# sendmail function takes 3 arguments: sender's address, recipient's address +# and message to send - here it is sent as one string. +s.sendmail(me, you, msg.as_string()) +s.close() Modified: python/trunk/Doc/library/email-examples.rst ============================================================================== --- python/trunk/Doc/library/email-examples.rst (original) +++ python/trunk/Doc/library/email-examples.rst Sat Feb 2 11:49:58 2008 @@ -16,18 +16,23 @@ Here's an example of how to send the entire contents of a directory as an email -message: [1]_ +message: [1]_ .. literalinclude:: ../includes/email-dir.py -And finally, here's an example of how to unpack a MIME message like the one +Here's an example of how to unpack a MIME message like the one above, into a directory of files: .. literalinclude:: ../includes/email-unpack.py +Here's an example of how to create an HTML message with an alternative plain +text version: [2]_ + +.. literalinclude:: ../includes/email-alternative.py + .. rubric:: Footnotes .. [1] Thanks to Matthew Dixon Cowles for the original inspiration and examples. - +.. [2] Contributed by Martin Matejek. From python-checkins at python.org Sat Feb 2 12:05:00 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 12:05:00 +0100 (CET) Subject: [Python-checkins] r60526 - python/trunk/Lib/test/test_socketserver.py Message-ID: <20080202110500.CE3301E4002@bag.python.org> Author: georg.brandl Date: Sat Feb 2 12:05:00 2008 New Revision: 60526 Modified: python/trunk/Lib/test/test_socketserver.py Log: Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen. Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Sat Feb 2 12:05:00 2008 @@ -1,20 +1,32 @@ -# Test suite for SocketServer.py +""" +Test suite for SocketServer.py. +""" -from test import test_support -from test.test_support import (verbose, verify, TESTFN, TestSkipped, - reap_children) -test_support.requires('network') - -from SocketServer import * +import os import socket import errno +import imp import select import time import threading -import os +from functools import wraps +import unittest +import SocketServer + +import test.test_support +from test.test_support import reap_children, verbose, TestSkipped +from test.test_support import TESTFN as TEST_FILE + +test.test_support.requires("network") NREQ = 3 DELAY = 0.5 +TEST_STR = "hello world\n" +HOST = "localhost" + +HAVE_UNIX_SOCKETS = hasattr(socket, "AF_UNIX") +HAVE_FORKING = hasattr(os, "fork") and os.name != "os2" + class MyMixinHandler: def handle(self): @@ -23,50 +35,41 @@ time.sleep(DELAY) self.wfile.write(line) -class MyStreamHandler(MyMixinHandler, StreamRequestHandler): + +def receive(sock, n, timeout=20): + r, w, x = select.select([sock], [], [], timeout) + if sock in r: + return sock.recv(n) + else: + raise RuntimeError, "timed out on %r" % (sock,) + + +class MyStreamHandler(MyMixinHandler, SocketServer.StreamRequestHandler): pass -class MyDatagramHandler(MyMixinHandler, DatagramRequestHandler): +class MyDatagramHandler(MyMixinHandler, + SocketServer.DatagramRequestHandler): pass +class ForkingUnixStreamServer(SocketServer.ForkingMixIn, + SocketServer.UnixStreamServer): + pass + +class ForkingUnixDatagramServer(SocketServer.ForkingMixIn, + SocketServer.UnixDatagramServer): + pass + + class MyMixinServer: def serve_a_few(self): for i in range(NREQ): self.handle_request() + def handle_error(self, request, client_address): self.close_request(request) self.server_close() raise -teststring = "hello world\n" - -def receive(sock, n, timeout=20): - r, w, x = select.select([sock], [], [], timeout) - if sock in r: - return sock.recv(n) - else: - raise RuntimeError, "timed out on %r" % (sock,) - -def testdgram(proto, addr): - s = socket.socket(proto, socket.SOCK_DGRAM) - s.sendto(teststring, addr) - buf = data = receive(s, 100) - while data and '\n' not in buf: - data = receive(s, 100) - buf += data - verify(buf == teststring) - s.close() - -def teststream(proto, addr): - s = socket.socket(proto, socket.SOCK_STREAM) - s.connect(addr) - s.sendall(teststring) - buf = data = receive(s, 100) - while data and '\n' not in buf: - data = receive(s, 100) - buf += data - verify(buf == teststring) - s.close() class ServerThread(threading.Thread): def __init__(self, addr, svrcls, hdlrcls): @@ -75,6 +78,7 @@ self.__svrcls = svrcls self.__hdlrcls = hdlrcls self.ready = threading.Event() + def run(self): class svrcls(MyMixinServer, self.__svrcls): pass @@ -93,64 +97,8 @@ svr.serve_a_few() if verbose: print "thread: done" -seed = 0 -def pickport(): - global seed - seed += 1 - return 10000 + (os.getpid() % 1000)*10 + seed - -host = "localhost" -testfiles = [] -def pickaddr(proto): - if proto == socket.AF_INET: - return (host, pickport()) - else: - fn = TESTFN + str(pickport()) - if os.name == 'os2': - # AF_UNIX socket names on OS/2 require a specific prefix - # which can't include a drive letter and must also use - # backslashes as directory separators - if fn[1] == ':': - fn = fn[2:] - if fn[0] in (os.sep, os.altsep): - fn = fn[1:] - fn = os.path.join('\socket', fn) - if os.sep == '/': - fn = fn.replace(os.sep, os.altsep) - else: - fn = fn.replace(os.altsep, os.sep) - testfiles.append(fn) - return fn - -def cleanup(): - for fn in testfiles: - try: - os.remove(fn) - except os.error: - pass - testfiles[:] = [] -def testloop(proto, servers, hdlrcls, testfunc): - for svrcls in servers: - addr = pickaddr(proto) - if verbose: - print "ADDR =", addr - print "CLASS =", svrcls - t = ServerThread(addr, svrcls, hdlrcls) - if verbose: print "server created" - t.start() - if verbose: print "server running" - for i in range(NREQ): - t.ready.wait(10*DELAY) - if not t.ready.isSet(): - raise RuntimeError("Server not ready within a reasonable time") - if verbose: print "test client", i - testfunc(proto, addr) - if verbose: print "waiting for server" - t.join() - if verbose: print "done" - -class ForgivingTCPServer(TCPServer): +class ForgivingTCPServer(SocketServer.TCPServer): # prevent errors if another process is using the port we want def server_bind(self): host, default_port = self.server_address @@ -160,64 +108,147 @@ for port in [default_port, 3434, 8798, 23833]: try: self.server_address = host, port - TCPServer.server_bind(self) + SocketServer.TCPServer.server_bind(self) break except socket.error, (err, msg): if err != errno.EADDRINUSE: raise - print >>sys.__stderr__, \ - ' WARNING: failed to listen on port %d, trying another' % port + print >> sys.__stderr__, \ + "WARNING: failed to listen on port %d, trying another: " % port + + +class SocketServerTest(unittest.TestCase): + """Test all socket servers.""" + + def setUp(self): + self.port_seed = 0 + self.test_files = [] + + def tearDown(self): + reap_children() + + for fn in self.test_files: + try: + os.remove(fn) + except os.error: + pass + self.test_files[:] = [] + + def pickport(self): + self.port_seed += 1 + return 10000 + (os.getpid() % 1000)*10 + self.port_seed + + def pickaddr(self, proto): + if proto == socket.AF_INET: + return (HOST, self.pickport()) + else: + fn = TEST_FILE + str(self.pickport()) + if os.name == 'os2': + # AF_UNIX socket names on OS/2 require a specific prefix + # which can't include a drive letter and must also use + # backslashes as directory separators + if fn[1] == ':': + fn = fn[2:] + if fn[0] in (os.sep, os.altsep): + fn = fn[1:] + fn = os.path.join('\socket', fn) + if os.sep == '/': + fn = fn.replace(os.sep, os.altsep) + else: + fn = fn.replace(os.altsep, os.sep) + self.test_files.append(fn) + return fn + + def run_servers(self, proto, servers, hdlrcls, testfunc): + for svrcls in servers: + addr = self.pickaddr(proto) + if verbose: + print "ADDR =", addr + print "CLASS =", svrcls + t = ServerThread(addr, svrcls, hdlrcls) + if verbose: print "server created" + t.start() + if verbose: print "server running" + for i in range(NREQ): + t.ready.wait(10*DELAY) + self.assert_(t.ready.isSet(), + "Server not ready within a reasonable time") + if verbose: print "test client", i + testfunc(proto, addr) + if verbose: print "waiting for server" + t.join() + if verbose: print "done" + + def stream_examine(self, proto, addr): + s = socket.socket(proto, socket.SOCK_STREAM) + s.connect(addr) + s.sendall(TEST_STR) + buf = data = receive(s, 100) + while data and '\n' not in buf: + data = receive(s, 100) + buf += data + self.assertEquals(buf, TEST_STR) + s.close() + + def dgram_examine(self, proto, addr): + s = socket.socket(proto, socket.SOCK_DGRAM) + s.sendto(TEST_STR, addr) + buf = data = receive(s, 100) + while data and '\n' not in buf: + data = receive(s, 100) + buf += data + self.assertEquals(buf, TEST_STR) + s.close() + + def test_TCPServers(self): + # Test SocketServer.TCPServer + servers = [ForgivingTCPServer, SocketServer.ThreadingTCPServer] + if HAVE_FORKING: + servers.append(SocketServer.ForkingTCPServer) + self.run_servers(socket.AF_INET, servers, + MyStreamHandler, self.stream_examine) + + def test_UDPServers(self): + # Test SocketServer.UPDServer + servers = [SocketServer.UDPServer, + SocketServer.ThreadingUDPServer] + if HAVE_FORKING: + servers.append(SocketServer.ForkingUDPServer) + self.run_servers(socket.AF_INET, servers, MyDatagramHandler, + self.dgram_examine) + + def test_stream_servers(self): + # Test SocketServer's stream servers + if not HAVE_UNIX_SOCKETS: + return + servers = [SocketServer.UnixStreamServer, + SocketServer.ThreadingUnixStreamServer] + if HAVE_FORKING: + servers.append(ForkingUnixStreamServer) + self.run_servers(socket.AF_UNIX, servers, MyStreamHandler, + self.stream_examine) + + # Alas, on Linux (at least) recvfrom() doesn't return a meaningful + # client address so this cannot work: + + # def test_dgram_servers(self): + # # Test SocketServer.UnixDatagramServer + # if not HAVE_UNIX_SOCKETS: + # return + # servers = [SocketServer.UnixDatagramServer, + # SocketServer.ThreadingUnixDatagramServer] + # if HAVE_FORKING: + # servers.append(ForkingUnixDatagramServer) + # self.run_servers(socket.AF_UNIX, servers, MyDatagramHandler, + # self.dgram_examine) -tcpservers = [ForgivingTCPServer, ThreadingTCPServer] -if hasattr(os, 'fork') and os.name not in ('os2',): - tcpservers.append(ForkingTCPServer) -udpservers = [UDPServer, ThreadingUDPServer] -if hasattr(os, 'fork') and os.name not in ('os2',): - udpservers.append(ForkingUDPServer) - -if not hasattr(socket, 'AF_UNIX'): - streamservers = [] - dgramservers = [] -else: - class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer): pass - streamservers = [UnixStreamServer, ThreadingUnixStreamServer] - if hasattr(os, 'fork') and os.name not in ('os2',): - streamservers.append(ForkingUnixStreamServer) - class ForkingUnixDatagramServer(ForkingMixIn, UnixDatagramServer): pass - dgramservers = [UnixDatagramServer, ThreadingUnixDatagramServer] - if hasattr(os, 'fork') and os.name not in ('os2',): - dgramservers.append(ForkingUnixDatagramServer) - -def sloppy_cleanup(): - # See http://python.org/sf/1540386 - # We need to reap children here otherwise a child from one server - # can be left running for the next server and cause a test failure. - time.sleep(DELAY) - reap_children() - -def testall(): - testloop(socket.AF_INET, tcpservers, MyStreamHandler, teststream) - sloppy_cleanup() - testloop(socket.AF_INET, udpservers, MyDatagramHandler, testdgram) - if hasattr(socket, 'AF_UNIX'): - sloppy_cleanup() - testloop(socket.AF_UNIX, streamservers, MyStreamHandler, teststream) - # Alas, on Linux (at least) recvfrom() doesn't return a meaningful - # client address so this cannot work: - ##testloop(socket.AF_UNIX, dgramservers, MyDatagramHandler, testdgram) def test_main(): - import imp if imp.lock_held(): - # If the import lock is held, the threads will hang. + # If the import lock is held, the threads will hang raise TestSkipped("can't run when import lock is held") - reap_children() - try: - testall() - finally: - cleanup() - reap_children() + test.test_support.run_unittest(SocketServerTest) if __name__ == "__main__": test_main() From python-checkins at python.org Sat Feb 2 12:05:35 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 12:05:35 +0100 (CET) Subject: [Python-checkins] r60527 - python/trunk/Misc/ACKS Message-ID: <20080202110535.3F35B1E4002@bag.python.org> Author: georg.brandl Date: Sat Feb 2 12:05:34 2008 New Revision: 60527 Modified: python/trunk/Misc/ACKS Log: Add GHOP contributor. Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sat Feb 2 12:05:34 2008 @@ -509,6 +509,7 @@ Mark Perrego Trevor Perrin Tim Peters +Benjamin Peterson Chris Petrilli Bjorn Pettersen Geoff Philbrick From buildbot at python.org Sat Feb 2 12:32:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 11:32:40 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20080202113240.E2F7F1E4002@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/1386 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Fehler 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 12:39:30 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 12:39:30 +0100 (CET) Subject: [Python-checkins] r60528 - in python/trunk: Lib/test/test_queue.py Misc/ACKS Message-ID: <20080202113930.78FA61E4019@bag.python.org> Author: georg.brandl Date: Sat Feb 2 12:39:29 2008 New Revision: 60528 Modified: python/trunk/Lib/test/test_queue.py python/trunk/Misc/ACKS Log: Rewrite test_queue as unittest. Written for GHOP by Ian Seyer. Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Sat Feb 2 12:39:29 2008 @@ -4,8 +4,8 @@ import sys import threading import time - -from test.test_support import verify, TestFailed, verbose +import unittest +from test import test_support QUEUE_SIZE = 5 @@ -30,50 +30,179 @@ self.startedEvent.set() self.fn(*self.args) + # Execute a function that blocks, and in a separate thread, a function that -# triggers the release. Returns the result of the blocking function. -# Caution: block_func must guarantee to block until trigger_func is -# called, and trigger_func must guarantee to change queue state so that -# block_func can make enough progress to return. In particular, a -# block_func that just raises an exception regardless of whether trigger_func -# is called will lead to timing-dependent sporadic failures, and one of -# those went rarely seen but undiagnosed for years. Now block_func -# must be unexceptional. If block_func is supposed to raise an exception, -# call _doExceptionalBlockingTest() instead. -def _doBlockingTest(block_func, block_args, trigger_func, trigger_args): - t = _TriggerThread(trigger_func, trigger_args) - t.start() - result = block_func(*block_args) - # If block_func returned before our thread made the call, we failed! - if not t.startedEvent.isSet(): - raise TestFailed("blocking function '%r' appeared not to block" % - block_func) - t.join(10) # make sure the thread terminates - if t.isAlive(): - raise TestFailed("trigger function '%r' appeared to not return" % - trigger_func) - return result - -# Call this instead if block_func is supposed to raise an exception. -def _doExceptionalBlockingTest(block_func, block_args, trigger_func, - trigger_args, expected_exception_class): - t = _TriggerThread(trigger_func, trigger_args) - t.start() - try: - try: - block_func(*block_args) - except expected_exception_class: - raise +# triggers the release. Returns the result of the blocking function. Caution: +# block_func must guarantee to block until trigger_func is called, and +# trigger_func must guarantee to change queue state so that block_func can make +# enough progress to return. In particular, a block_func that just raises an +# exception regardless of whether trigger_func is called will lead to +# timing-dependent sporadic failures, and one of those went rarely seen but +# undiagnosed for years. Now block_func must be unexceptional. If block_func +# is supposed to raise an exception, call do_exceptional_blocking_test() +# instead. + +class BlockingTestMixin: + + def do_blocking_test(self, block_func, block_args, trigger_func, trigger_args): + self.t = _TriggerThread(trigger_func, trigger_args) + self.t.start() + self.result = block_func(*block_args) + # If block_func returned before our thread made the call, we failed! + if not self.t.startedEvent.isSet(): + self.fail("blocking function '%r' appeared not to block" % + block_func) + self.t.join(10) # make sure the thread terminates + if self.t.isAlive(): + self.fail("trigger function '%r' appeared to not return" % + trigger_func) + return self.result + + # Call this instead if block_func is supposed to raise an exception. + def do_exceptional_blocking_test(self,block_func, block_args, trigger_func, + trigger_args, expected_exception_class): + self.t = _TriggerThread(trigger_func, trigger_args) + self.t.start() + try: + try: + block_func(*block_args) + except expected_exception_class: + raise + else: + self.fail("expected exception of kind %r" % + expected_exception_class) + finally: + self.t.join(10) # make sure the thread terminates + if self.t.isAlive(): + self.fail("trigger function '%r' appeared to not return" % + trigger_func) + if not self.t.startedEvent.isSet(): + self.fail("trigger thread ended but event never set") + + +class BaseQueueTest(unittest.TestCase, BlockingTestMixin): + def setUp(self): + self.cum = 0 + self.cumlock = threading.Lock() + + def simple_queue_test(self, q): + if not q.empty(): + raise RuntimeError, "Call this function with an empty queue" + # I guess we better check things actually queue correctly a little :) + q.put(111) + q.put(333) + q.put(222) + target_order = dict(Queue = [111, 333, 222], + LifoQueue = [222, 333, 111], + PriorityQueue = [111, 222, 333]) + actual_order = [q.get(), q.get(), q.get()] + self.assertEquals(actual_order, target_order[q.__class__.__name__], + "Didn't seem to queue the correct data!") + for i in range(QUEUE_SIZE-1): + q.put(i) + self.assert_(not q.empty(), "Queue should not be empty") + self.assert_(not q.full(), "Queue should not be full") + q.put("last") + self.assert_(q.full(), "Queue should be full") + try: + q.put("full", block=0) + self.fail("Didn't appear to block with a full queue") + except Queue.Full: + pass + try: + q.put("full", timeout=0.01) + self.fail("Didn't appear to time-out with a full queue") + except Queue.Full: + pass + # Test a blocking put + self.do_blocking_test(q.put, ("full",), q.get, ()) + self.do_blocking_test(q.put, ("full", True, 10), q.get, ()) + # Empty it + for i in range(QUEUE_SIZE): + q.get() + self.assert_(q.empty(), "Queue should be empty") + try: + q.get(block=0) + self.fail("Didn't appear to block with an empty queue") + except Queue.Empty: + pass + try: + q.get(timeout=0.01) + self.fail("Didn't appear to time-out with an empty queue") + except Queue.Empty: + pass + # Test a blocking get + self.do_blocking_test(q.get, (), q.put, ('empty',)) + self.do_blocking_test(q.get, (True, 10), q.put, ('empty',)) + + + def worker(self, q): + while True: + self.x = q.get() + if self.x is None: + q.task_done() + return + self.cumlock.acquire() + try: + self.cum += self.x + finally: + self.cumlock.release() + q.task_done() + + def queue_join_test(self, q): + self.cum = 0 + for i in (0,1): + threading.Thread(target=self.worker, args=(q,)).start() + for i in xrange(100): + q.put(i) + q.join() + self.assertEquals(self.cum, sum(range(100)), + "q.join() did not block until all tasks were done") + for i in (0,1): + q.put(None) # instruct the threads to close + q.join() # verify that you can join twice + + def test_queue_task_done(self): + # Test to make sure a queue task completed successfully. + q = self.type2test() + try: + q.task_done() + except ValueError: + pass else: - raise TestFailed("expected exception of kind %r" % - expected_exception_class) - finally: - t.join(10) # make sure the thread terminates - if t.isAlive(): - raise TestFailed("trigger function '%r' appeared to not return" % - trigger_func) - if not t.startedEvent.isSet(): - raise TestFailed("trigger thread ended but event never set") + self.fail("Did not detect task count going negative") + + def test_queue_join(self): + # Test that a queue join()s successfully, and before anything else + # (done twice for insurance). + q = self.type2test() + self.queue_join_test(q) + self.queue_join_test(q) + try: + q.task_done() + except ValueError: + pass + else: + self.fail("Did not detect task count going negative") + + def test_simple_queue(self): + # Do it a couple of times on the same queue. + # Done twice to make sure works with same instance reused. + q = self.type2test(QUEUE_SIZE) + self.simple_queue_test(q) + self.simple_queue_test(q) + + +class QueueTest(BaseQueueTest): + type2test = Queue.Queue + +class LifoQueueTest(BaseQueueTest): + type2test = Queue.LifoQueue + +class PriorityQueueTest(BaseQueueTest): + type2test = Queue.PriorityQueue + + # A Queue subclass that can provoke failure at a moment's notice :) class FailingQueueException(Exception): @@ -95,194 +224,101 @@ raise FailingQueueException, "You Lose" return Queue.Queue._get(self) -def FailingQueueTest(q): - if not q.empty(): - raise RuntimeError, "Call this function with an empty queue" - for i in range(QUEUE_SIZE-1): - q.put(i) - # Test a failing non-blocking put. - q.fail_next_put = True - try: - q.put("oops", block=0) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - q.fail_next_put = True - try: - q.put("oops", timeout=0.1) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - q.put("last") - verify(q.full(), "Queue should be full") - # Test a failing blocking put - q.fail_next_put = True - try: - _doBlockingTest(q.put, ("full",), q.get, ()) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - # Check the Queue isn't damaged. - # put failed, but get succeeded - re-add - q.put("last") - # Test a failing timeout put - q.fail_next_put = True - try: - _doExceptionalBlockingTest(q.put, ("full", True, 10), q.get, (), - FailingQueueException) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - # Check the Queue isn't damaged. - # put failed, but get succeeded - re-add - q.put("last") - verify(q.full(), "Queue should be full") - q.get() - verify(not q.full(), "Queue should not be full") - q.put("last") - verify(q.full(), "Queue should be full") - # Test a blocking put - _doBlockingTest( q.put, ("full",), q.get, ()) - # Empty it - for i in range(QUEUE_SIZE): - q.get() - verify(q.empty(), "Queue should be empty") - q.put("first") - q.fail_next_get = True - try: +class FailingQueueTest(unittest.TestCase, BlockingTestMixin): + + def failing_queue_test(self, q): + if not q.empty(): + raise RuntimeError, "Call this function with an empty queue" + for i in range(QUEUE_SIZE-1): + q.put(i) + # Test a failing non-blocking put. + q.fail_next_put = True + try: + q.put("oops", block=0) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + q.fail_next_put = True + try: + q.put("oops", timeout=0.1) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + q.put("last") + self.assert_(q.full(), "Queue should be full") + # Test a failing blocking put + q.fail_next_put = True + try: + self.do_blocking_test(q.put, ("full",), q.get, ()) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + # Check the Queue isn't damaged. + # put failed, but get succeeded - re-add + q.put("last") + # Test a failing timeout put + q.fail_next_put = True + try: + self.do_exceptional_blocking_test(q.put, ("full", True, 10), q.get, (), + FailingQueueException) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + # Check the Queue isn't damaged. + # put failed, but get succeeded - re-add + q.put("last") + self.assert_(q.full(), "Queue should be full") q.get() - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - verify(not q.empty(), "Queue should not be empty") - q.fail_next_get = True - try: - q.get(timeout=0.1) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - verify(not q.empty(), "Queue should not be empty") - q.get() - verify(q.empty(), "Queue should be empty") - q.fail_next_get = True - try: - _doExceptionalBlockingTest(q.get, (), q.put, ('empty',), - FailingQueueException) - raise TestFailed("The queue didn't fail when it should have") - except FailingQueueException: - pass - # put succeeded, but get failed. - verify(not q.empty(), "Queue should not be empty") - q.get() - verify(q.empty(), "Queue should be empty") - -def SimpleQueueTest(q): - if not q.empty(): - raise RuntimeError, "Call this function with an empty queue" - # I guess we better check things actually queue correctly a little :) - q.put(111) - q.put(333) - q.put(222) - target_order = dict(Queue = [111, 333, 222], - LifoQueue = [222, 333, 111], - PriorityQueue = [111, 222, 333]) - actual_order = [q.get(), q.get(), q.get()] - verify(actual_order == target_order[q.__class__.__name__], - "Didn't seem to queue the correct data!") - for i in range(QUEUE_SIZE-1): - q.put(i) - verify(not q.empty(), "Queue should not be empty") - verify(not q.full(), "Queue should not be full") - q.put("last") - verify(q.full(), "Queue should be full") - try: - q.put("full", block=0) - raise TestFailed("Didn't appear to block with a full queue") - except Queue.Full: - pass - try: - q.put("full", timeout=0.01) - raise TestFailed("Didn't appear to time-out with a full queue") - except Queue.Full: - pass - # Test a blocking put - _doBlockingTest(q.put, ("full",), q.get, ()) - _doBlockingTest(q.put, ("full", True, 10), q.get, ()) - # Empty it - for i in range(QUEUE_SIZE): + self.assert_(not q.full(), "Queue should not be full") + q.put("last") + self.assert_(q.full(), "Queue should be full") + # Test a blocking put + self.do_blocking_test(q.put, ("full",), q.get, ()) + # Empty it + for i in range(QUEUE_SIZE): + q.get() + self.assert_(q.empty(), "Queue should be empty") + q.put("first") + q.fail_next_get = True + try: + q.get() + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + self.assert_(not q.empty(), "Queue should not be empty") + q.fail_next_get = True + try: + q.get(timeout=0.1) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + self.assert_(not q.empty(), "Queue should not be empty") q.get() - verify(q.empty(), "Queue should be empty") - try: - q.get(block=0) - raise TestFailed("Didn't appear to block with an empty queue") - except Queue.Empty: - pass - try: - q.get(timeout=0.01) - raise TestFailed("Didn't appear to time-out with an empty queue") - except Queue.Empty: - pass - # Test a blocking get - _doBlockingTest(q.get, (), q.put, ('empty',)) - _doBlockingTest(q.get, (True, 10), q.put, ('empty',)) - -cum = 0 -cumlock = threading.Lock() - -def worker(q): - global cum - while True: - x = q.get() - if x is None: - q.task_done() - return - cumlock.acquire() + self.assert_(q.empty(), "Queue should be empty") + q.fail_next_get = True try: - cum += x - finally: - cumlock.release() - q.task_done() + self.do_exceptional_blocking_test(q.get, (), q.put, ('empty',), + FailingQueueException) + self.fail("The queue didn't fail when it should have") + except FailingQueueException: + pass + # put succeeded, but get failed. + self.assert_(not q.empty(), "Queue should not be empty") + q.get() + self.assert_(q.empty(), "Queue should be empty") + + def test_failing_queue(self): + # Test to make sure a queue is functioning correctly. + # Done twice to the same instance. + q = FailingQueue(QUEUE_SIZE) + self.failing_queue_test(q) + self.failing_queue_test(q) + + +def test_main(): + test_support.run_unittest(QueueTest, LifoQueueTest, PriorityQueueTest, + FailingQueueTest) -def QueueJoinTest(q): - global cum - cum = 0 - for i in (0,1): - threading.Thread(target=worker, args=(q,)).start() - for i in xrange(100): - q.put(i) - q.join() - verify(cum==sum(range(100)), "q.join() did not block until all tasks were done") - for i in (0,1): - q.put(None) # instruct the threads to close - q.join() # verify that you can join twice - -def QueueTaskDoneTest(q): - try: - q.task_done() - except ValueError: - pass - else: - raise TestFailed("Did not detect task count going negative") - -def test(): - for Q in Queue.Queue, Queue.LifoQueue, Queue.PriorityQueue: - q = Q() - QueueTaskDoneTest(q) - QueueJoinTest(q) - QueueJoinTest(q) - QueueTaskDoneTest(q) - - q = Q(QUEUE_SIZE) - # Do it a couple of times on the same queue - SimpleQueueTest(q) - SimpleQueueTest(q) - if verbose: - print "Simple Queue tests seemed to work for", Q.__name__ - - q = FailingQueue(QUEUE_SIZE) - FailingQueueTest(q) - FailingQueueTest(q) - if verbose: - print "Failing Queue tests seemed to work" -test() +if __name__ == "__main__": + test_main() Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sat Feb 2 12:39:29 2008 @@ -599,6 +599,7 @@ Jiwon Seo Jerry Seutter Denis Severson +Ian Seyer Ha Shao Bruce Sherwood Pete Shinners From python-checkins at python.org Sat Feb 2 12:46:08 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 2 Feb 2008 12:46:08 +0100 (CET) Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py Message-ID: <20080202114608.23F901E4002@bag.python.org> Author: georg.brandl Date: Sat Feb 2 12:46:07 2008 New Revision: 60529 Added: python/trunk/Lib/test/test_cprofile.py - copied, changed from r60520, python/trunk/Lib/test/test_cProfile.py Removed: python/trunk/Lib/test/output/test_cProfile python/trunk/Lib/test/test_cProfile.py Log: Rewrite test_cprofile as unittest (and rename the file to be consistent with all other test files). Written for GHOP by Benjamin Peterson. Deleted: /python/trunk/Lib/test/output/test_cProfile ============================================================================== --- /python/trunk/Lib/test/output/test_cProfile Sat Feb 2 12:46:07 2008 +++ (empty file) @@ -1,79 +0,0 @@ -test_cProfile - 126 function calls (106 primitive calls) in 1.000 CPU seconds - - Ordered by: standard name - - ncalls tottime percall cumtime percall filename:lineno(function) - 1 0.000 0.000 1.000 1.000 :1() - 8 0.064 0.008 0.080 0.010 test_cProfile.py:103(subhelper) - 28 0.028 0.001 0.028 0.001 test_cProfile.py:115(__getattr__) - 1 0.270 0.270 1.000 1.000 test_cProfile.py:30(testfunc) - 23/3 0.150 0.007 0.170 0.057 test_cProfile.py:40(factorial) - 20 0.020 0.001 0.020 0.001 test_cProfile.py:53(mul) - 2 0.040 0.020 0.600 0.300 test_cProfile.py:60(helper) - 4 0.116 0.029 0.120 0.030 test_cProfile.py:78(helper1) - 2 0.000 0.000 0.140 0.070 test_cProfile.py:89(helper2_indirect) - 8 0.312 0.039 0.400 0.050 test_cProfile.py:93(helper2) - 12 0.000 0.000 0.012 0.001 {hasattr} - 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} - 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} - 8 0.000 0.000 0.000 0.000 {range} - 4 0.000 0.000 0.000 0.000 {sys.exc_info} - - - Ordered by: standard name - -Function called... - ncalls tottime cumtime -:1() -> 1 0.270 1.000 test_cProfile.py:30(testfunc) -test_cProfile.py:103(subhelper) -> 16 0.016 0.016 test_cProfile.py:115(__getattr__) - 8 0.000 0.000 {range} -test_cProfile.py:115(__getattr__) -> -test_cProfile.py:30(testfunc) -> 1 0.014 0.130 test_cProfile.py:40(factorial) - 2 0.040 0.600 test_cProfile.py:60(helper) -test_cProfile.py:40(factorial) -> 20/3 0.130 0.147 test_cProfile.py:40(factorial) - 20 0.020 0.020 test_cProfile.py:53(mul) -test_cProfile.py:53(mul) -> -test_cProfile.py:60(helper) -> 4 0.116 0.120 test_cProfile.py:78(helper1) - 2 0.000 0.140 test_cProfile.py:89(helper2_indirect) - 6 0.234 0.300 test_cProfile.py:93(helper2) -test_cProfile.py:78(helper1) -> 4 0.000 0.004 {hasattr} - 4 0.000 0.000 {method 'append' of 'list' objects} - 4 0.000 0.000 {sys.exc_info} -test_cProfile.py:89(helper2_indirect) -> 2 0.006 0.040 test_cProfile.py:40(factorial) - 2 0.078 0.100 test_cProfile.py:93(helper2) -test_cProfile.py:93(helper2) -> 8 0.064 0.080 test_cProfile.py:103(subhelper) - 8 0.000 0.008 {hasattr} -{hasattr} -> 12 0.012 0.012 test_cProfile.py:115(__getattr__) -{method 'append' of 'list' objects} -> -{method 'disable' of '_lsprof.Profiler' objects} -> -{range} -> -{sys.exc_info} -> - - - Ordered by: standard name - -Function was called by... - ncalls tottime cumtime -:1() <- -test_cProfile.py:103(subhelper) <- 8 0.064 0.080 test_cProfile.py:93(helper2) -test_cProfile.py:115(__getattr__) <- 16 0.016 0.016 test_cProfile.py:103(subhelper) - 12 0.012 0.012 {hasattr} -test_cProfile.py:30(testfunc) <- 1 0.270 1.000 :1() -test_cProfile.py:40(factorial) <- 1 0.014 0.130 test_cProfile.py:30(testfunc) - 20/3 0.130 0.147 test_cProfile.py:40(factorial) - 2 0.006 0.040 test_cProfile.py:89(helper2_indirect) -test_cProfile.py:53(mul) <- 20 0.020 0.020 test_cProfile.py:40(factorial) -test_cProfile.py:60(helper) <- 2 0.040 0.600 test_cProfile.py:30(testfunc) -test_cProfile.py:78(helper1) <- 4 0.116 0.120 test_cProfile.py:60(helper) -test_cProfile.py:89(helper2_indirect) <- 2 0.000 0.140 test_cProfile.py:60(helper) -test_cProfile.py:93(helper2) <- 6 0.234 0.300 test_cProfile.py:60(helper) - 2 0.078 0.100 test_cProfile.py:89(helper2_indirect) -{hasattr} <- 4 0.000 0.004 test_cProfile.py:78(helper1) - 8 0.000 0.008 test_cProfile.py:93(helper2) -{method 'append' of 'list' objects} <- 4 0.000 0.000 test_cProfile.py:78(helper1) -{method 'disable' of '_lsprof.Profiler' objects} <- -{range} <- 8 0.000 0.000 test_cProfile.py:103(subhelper) -{sys.exc_info} <- 4 0.000 0.000 test_cProfile.py:78(helper1) - - Deleted: /python/trunk/Lib/test/test_cProfile.py ============================================================================== --- /python/trunk/Lib/test/test_cProfile.py Sat Feb 2 12:46:07 2008 +++ (empty file) @@ -1,123 +0,0 @@ -"""Test suite for the cProfile module.""" - -import cProfile, pstats, sys - -# In order to have reproducible time, we simulate a timer in the global -# variable 'ticks', which represents simulated time in milliseconds. -# (We can't use a helper function increment the timer since it would be -# included in the profile and would appear to consume all the time.) -ticks = 0 - -# IMPORTANT: this is an output test. *ALL* NUMBERS in the expected -# output are relevant. If you change the formatting of pstats, -# please don't just regenerate output/test_cProfile without checking -# very carefully that not a single number has changed. - -def test_main(): - global ticks - ticks = 42000 - prof = cProfile.Profile(timer, 0.001) - prof.runctx("testfunc()", globals(), locals()) - assert ticks == 43000, ticks - st = pstats.Stats(prof) - st.strip_dirs().sort_stats('stdname').print_stats() - st.print_callees() - st.print_callers() - -def timer(): - return ticks - -def testfunc(): - # 1 call - # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions - global ticks - ticks += 99 - helper() # 300 - helper() # 300 - ticks += 171 - factorial(14) # 130 - -def factorial(n): - # 23 calls total - # 170 ticks total, 150 ticks local - # 3 primitive calls, 130, 20 and 20 ticks total - # including 116, 17, 17 ticks local - global ticks - if n > 0: - ticks += n - return mul(n, factorial(n-1)) - else: - ticks += 11 - return 1 - -def mul(a, b): - # 20 calls - # 1 tick, local - global ticks - ticks += 1 - return a * b - -def helper(): - # 2 calls - # 300 ticks total: 20 ticks local, 260 ticks in subfunctions - global ticks - ticks += 1 - helper1() # 30 - ticks += 2 - helper1() # 30 - ticks += 6 - helper2() # 50 - ticks += 3 - helper2() # 50 - ticks += 2 - helper2() # 50 - ticks += 5 - helper2_indirect() # 70 - ticks += 1 - -def helper1(): - # 4 calls - # 30 ticks total: 29 ticks local, 1 tick in subfunctions - global ticks - ticks += 10 - hasattr(C(), "foo") # 1 - ticks += 19 - lst = [] - lst.append(42) # 0 - sys.exc_info() # 0 - -def helper2_indirect(): - helper2() # 50 - factorial(3) # 20 - -def helper2(): - # 8 calls - # 50 ticks local: 39 ticks local, 11 ticks in subfunctions - global ticks - ticks += 11 - hasattr(C(), "bar") # 1 - ticks += 13 - subhelper() # 10 - ticks += 15 - -def subhelper(): - # 8 calls - # 10 ticks total: 8 ticks local, 2 ticks in subfunctions - global ticks - ticks += 2 - for i in range(2): # 0 - try: - C().foo # 1 x 2 - except AttributeError: - ticks += 3 # 3 x 2 - -class C: - def __getattr__(self, name): - # 28 calls - # 1 tick, local - global ticks - ticks += 1 - raise AttributeError - -if __name__ == "__main__": - test_main() Copied: python/trunk/Lib/test/test_cprofile.py (from r60520, python/trunk/Lib/test/test_cProfile.py) ============================================================================== --- python/trunk/Lib/test/test_cProfile.py (original) +++ python/trunk/Lib/test/test_cprofile.py Sat Feb 2 12:46:07 2008 @@ -1,40 +1,27 @@ -"""Test suite for the cProfile module.""" +import sys +import cProfile +import pstats +import test.test_support + +################################# +# Warning! +# This stuff is touchy. If you modify anything above the test_main function, +# you'll have to regenerate the stats for the doctest! +################################ -import cProfile, pstats, sys - -# In order to have reproducible time, we simulate a timer in the global -# variable 'ticks', which represents simulated time in milliseconds. -# (We can't use a helper function increment the timer since it would be -# included in the profile and would appear to consume all the time.) -ticks = 0 - -# IMPORTANT: this is an output test. *ALL* NUMBERS in the expected -# output are relevant. If you change the formatting of pstats, -# please don't just regenerate output/test_cProfile without checking -# very carefully that not a single number has changed. - -def test_main(): - global ticks - ticks = 42000 - prof = cProfile.Profile(timer, 0.001) - prof.runctx("testfunc()", globals(), locals()) - assert ticks == 43000, ticks - st = pstats.Stats(prof) - st.strip_dirs().sort_stats('stdname').print_stats() - st.print_callees() - st.print_callers() +TICKS = 42000 def timer(): - return ticks + return TICKS def testfunc(): # 1 call # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions - global ticks - ticks += 99 + global TICKS + TICKS += 99 helper() # 300 helper() # 300 - ticks += 171 + TICKS += 171 factorial(14) # 130 def factorial(n): @@ -42,46 +29,46 @@ # 170 ticks total, 150 ticks local # 3 primitive calls, 130, 20 and 20 ticks total # including 116, 17, 17 ticks local - global ticks + global TICKS if n > 0: - ticks += n + TICKS += n return mul(n, factorial(n-1)) else: - ticks += 11 + TICKS += 11 return 1 def mul(a, b): # 20 calls # 1 tick, local - global ticks - ticks += 1 + global TICKS + TICKS += 1 return a * b def helper(): # 2 calls # 300 ticks total: 20 ticks local, 260 ticks in subfunctions - global ticks - ticks += 1 + global TICKS + TICKS += 1 helper1() # 30 - ticks += 2 + TICKS += 2 helper1() # 30 - ticks += 6 + TICKS += 6 helper2() # 50 - ticks += 3 + TICKS += 3 helper2() # 50 - ticks += 2 + TICKS += 2 helper2() # 50 - ticks += 5 + TICKS += 5 helper2_indirect() # 70 - ticks += 1 + TICKS += 1 def helper1(): # 4 calls # 30 ticks total: 29 ticks local, 1 tick in subfunctions - global ticks - ticks += 10 + global TICKS + TICKS += 10 hasattr(C(), "foo") # 1 - ticks += 19 + TICKS += 19 lst = [] lst.append(42) # 0 sys.exc_info() # 0 @@ -93,31 +80,129 @@ def helper2(): # 8 calls # 50 ticks local: 39 ticks local, 11 ticks in subfunctions - global ticks - ticks += 11 + global TICKS + TICKS += 11 hasattr(C(), "bar") # 1 - ticks += 13 + TICKS += 13 subhelper() # 10 - ticks += 15 + TICKS += 15 def subhelper(): # 8 calls # 10 ticks total: 8 ticks local, 2 ticks in subfunctions - global ticks - ticks += 2 + global TICKS + TICKS += 2 for i in range(2): # 0 try: C().foo # 1 x 2 except AttributeError: - ticks += 3 # 3 x 2 + TICKS += 3 # 3 x 2 class C: def __getattr__(self, name): # 28 calls # 1 tick, local - global ticks - ticks += 1 + global TICKS + TICKS += 1 raise AttributeError +def test_main(): + """ + >>> prof = cProfile.Profile(timer, 0.001) + >>> prof.runctx("testfunc()", globals(), locals()) #doctest: +ELLIPSIS + + >>> timer() + 43000 + >>> stats = pstats.Stats(prof) + >>> stats.strip_dirs().sort_stats("stdname") #doctest: +ELLIPSIS + + >>> stats.print_stats() #doctest: +ELLIPSIS + 126 function calls (106 primitive calls) in 1.000 CPU seconds + + Ordered by: standard name + + ncalls tottime percall cumtime percall filename:lineno(function) + 1 0.000 0.000 1.000 1.000 :1() + 28 0.028 0.001 0.028 0.001 test_cprofile.py:102(__getattr__) + 1 0.270 0.270 1.000 1.000 test_cprofile.py:17(testfunc) + 23/3 0.150 0.007 0.170 0.057 test_cprofile.py:27(factorial) + 20 0.020 0.001 0.020 0.001 test_cprofile.py:40(mul) + 2 0.040 0.020 0.600 0.300 test_cprofile.py:47(helper) + 4 0.116 0.029 0.120 0.030 test_cprofile.py:65(helper1) + 2 0.000 0.000 0.140 0.070 test_cprofile.py:76(helper2_indirect) + 8 0.312 0.039 0.400 0.050 test_cprofile.py:80(helper2) + 8 0.064 0.008 0.080 0.010 test_cprofile.py:90(subhelper) + 12 0.000 0.000 0.012 0.001 {hasattr} + 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} + 8 0.000 0.000 0.000 0.000 {range} + 4 0.000 0.000 0.000 0.000 {sys.exc_info} + + + + >>> stats.print_callers() #doctest: +ELLIPSIS + Ordered by: standard name + + Function was called by... + ncalls tottime cumtime + :1() <- + test_cprofile.py:102(__getattr__) <- 16 0.016 0.016 test_cprofile.py:90(subhelper) + 12 0.012 0.012 {hasattr} + test_cprofile.py:17(testfunc) <- 1 0.270 1.000 :1() + test_cprofile.py:27(factorial) <- 1 0.014 0.130 test_cprofile.py:17(testfunc) + 20/3 0.130 0.147 test_cprofile.py:27(factorial) + 2 0.006 0.040 test_cprofile.py:76(helper2_indirect) + test_cprofile.py:40(mul) <- 20 0.020 0.020 test_cprofile.py:27(factorial) + test_cprofile.py:47(helper) <- 2 0.040 0.600 test_cprofile.py:17(testfunc) + test_cprofile.py:65(helper1) <- 4 0.116 0.120 test_cprofile.py:47(helper) + test_cprofile.py:76(helper2_indirect) <- 2 0.000 0.140 test_cprofile.py:47(helper) + test_cprofile.py:80(helper2) <- 6 0.234 0.300 test_cprofile.py:47(helper) + 2 0.078 0.100 test_cprofile.py:76(helper2_indirect) + test_cprofile.py:90(subhelper) <- 8 0.064 0.080 test_cprofile.py:80(helper2) + {hasattr} <- 4 0.000 0.004 test_cprofile.py:65(helper1) + 8 0.000 0.008 test_cprofile.py:80(helper2) + {method 'append' of 'list' objects} <- 4 0.000 0.000 test_cprofile.py:65(helper1) + {method 'disable' of '_lsprof.Profiler' objects} <- + {range} <- 8 0.000 0.000 test_cprofile.py:90(subhelper) + {sys.exc_info} <- 4 0.000 0.000 test_cprofile.py:65(helper1) + + + + >>> stats.print_callees() #doctest: +ELLIPSIS + Ordered by: standard name + + Function called... + ncalls tottime cumtime + :1() -> 1 0.270 1.000 test_cprofile.py:17(testfunc) + test_cprofile.py:102(__getattr__) -> + test_cprofile.py:17(testfunc) -> 1 0.014 0.130 test_cprofile.py:27(factorial) + 2 0.040 0.600 test_cprofile.py:47(helper) + test_cprofile.py:27(factorial) -> 20/3 0.130 0.147 test_cprofile.py:27(factorial) + 20 0.020 0.020 test_cprofile.py:40(mul) + test_cprofile.py:40(mul) -> + test_cprofile.py:47(helper) -> 4 0.116 0.120 test_cprofile.py:65(helper1) + 2 0.000 0.140 test_cprofile.py:76(helper2_indirect) + 6 0.234 0.300 test_cprofile.py:80(helper2) + test_cprofile.py:65(helper1) -> 4 0.000 0.004 {hasattr} + 4 0.000 0.000 {method 'append' of 'list' objects} + 4 0.000 0.000 {sys.exc_info} + test_cprofile.py:76(helper2_indirect) -> 2 0.006 0.040 test_cprofile.py:27(factorial) + 2 0.078 0.100 test_cprofile.py:80(helper2) + test_cprofile.py:80(helper2) -> 8 0.064 0.080 test_cprofile.py:90(subhelper) + 8 0.000 0.008 {hasattr} + test_cprofile.py:90(subhelper) -> 16 0.016 0.016 test_cprofile.py:102(__getattr__) + 8 0.000 0.000 {range} + {hasattr} -> 12 0.012 0.012 test_cprofile.py:102(__getattr__) + {method 'append' of 'list' objects} -> + {method 'disable' of '_lsprof.Profiler' objects} -> + {range} -> + {sys.exc_info} -> + + + + """ + from test import test_cprofile + test.test_support.run_doctest(test_cprofile) + if __name__ == "__main__": test_main() From buildbot at python.org Sat Feb 2 13:05:23 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:05:23 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080202120523.6885F1E4002@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/725 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:06:05 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:06:05 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080202120605.2F25B1E4002@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3016 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_queue ====================================================================== FAIL: test_queue_join (test.test_queue.QueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_queue.py", line 180, in test_queue_join self.queue_join_test(q) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:07:59 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:07:59 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080202120800.073881E4002@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/90 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_queue ====================================================================== FAIL: test_queue_join (test.test_queue.QueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.LifoQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 180, in test_queue_join self.queue_join_test(q) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.PriorityQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:16:07 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:16:07 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080202121607.60F4D1E401F@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2459 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_signal test_smtplib test_socket ====================================================================== FAIL: testSend (test.test_smtplib.DebuggingServerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_smtplib.py", line 257, in testSend self.assertEqual(self.output.getvalue(), mexpect) AssertionError: '---------- MESSAGE FOLLOWS ----------\nA test message\n------------ END MESSAGE ------------\nwarning: unhandled exception\n' != '---------- MESSAGE FOLLOWS ----------\nA test message\n------------ END MESSAGE ------------\n' sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:17:28 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:17:28 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080202121729.2903F1E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/238 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:54:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:54:16 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080202125416.D9EE51E4016@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/518 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_queue ====================================================================== FAIL: test_queue_join (test.test_queue.QueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.LifoQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 180, in test_queue_join self.queue_join_test(q) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.PriorityQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 180, in test_queue_join self.queue_join_test(q) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 13:57:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 12:57:39 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080202125740.00D171E401F@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/585 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 15:12:48 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 14:12:48 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080202141248.8CE201E4016@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/160 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_queue test_socketserver ====================================================================== FAIL: test_queue_join (test.test_queue.QueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 180, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.LifoQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.PriorityQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 2 15:22:44 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 02 Feb 2008 14:22:44 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080202142244.8CB1E1E4016@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_queue test_socketserver ====================================================================== FAIL: test_queue_join (test.test_queue.QueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.LifoQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done ====================================================================== FAIL: test_queue_join (test.test_queue.PriorityQueueTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 179, in test_queue_join self.queue_join_test(q) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_queue.py", line 160, in queue_join_test "q.join() did not block until all tasks were done") AssertionError: q.join() did not block until all tasks were done Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list ====================================================================== ERROR: test_UDPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 218, in test_UDPServers self.dgram_examine) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 177, in run_servers testfunc(proto, addr) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 196, in dgram_examine buf = data = receive(s, 100) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 44, in receive raise RuntimeError, "timed out on %r" % (sock,) RuntimeError: timed out on make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 2 18:16:13 2008 From: python-checkins at python.org (mark.dickinson) Date: Sat, 2 Feb 2008 18:16:13 +0100 (CET) Subject: [Python-checkins] r60530 - in python/trunk/Lib: rational.py test/test_rational.py Message-ID: <20080202171613.842CA1E4018@bag.python.org> Author: mark.dickinson Date: Sat Feb 2 18:16:13 2008 New Revision: 60530 Modified: python/trunk/Lib/rational.py python/trunk/Lib/test/test_rational.py Log: Make the Rational constructor accept '3.' and '.2' as well as '3.2'. Modified: python/trunk/Lib/rational.py ============================================================================== --- python/trunk/Lib/rational.py (original) +++ python/trunk/Lib/rational.py Sat Feb 2 18:16:13 2008 @@ -25,9 +25,18 @@ return a -_RATIONAL_FORMAT = re.compile( - r'^\s*(?P[-+]?)(?P\d+)' - r'(?:/(?P\d+)|\.(?P\d+))?\s*$') +_RATIONAL_FORMAT = re.compile(r""" + \A\s* # optional whitespace at the start, then + (?P[-+]?) # an optional sign, then + (?=\d|\.\d) # lookahead for digit or .digit + (?P\d*) # numerator (possibly empty) + (?: # followed by an optional + /(?P\d+) # / and denominator + | # or + \.(?P\d*) # decimal point and fractional part + )? + \s*\Z # and optional whitespace to finish +""", re.VERBOSE) class Rational(RationalAbc): Modified: python/trunk/Lib/test/test_rational.py ============================================================================== --- python/trunk/Lib/test/test_rational.py (original) +++ python/trunk/Lib/test/test_rational.py Sat Feb 2 18:16:13 2008 @@ -78,6 +78,8 @@ self.assertEquals((16, 5), _components(R(" 3.2 "))) self.assertEquals((-16, 5), _components(R(u" -3.2 "))) + self.assertEquals((-3, 1), _components(R(u" -3. "))) + self.assertEquals((3, 5), _components(R(u" .6 "))) self.assertRaisesMessage( @@ -113,6 +115,10 @@ # Don't accept combinations of decimals and rationals. ValueError, "Invalid literal for Rational: 3.2/7", R, "3.2/7") + self.assertRaisesMessage( + # Allow 3. and .3, but not . + ValueError, "Invalid literal for Rational: .", + R, ".") def testImmutable(self): r = R(7, 3) From python-checkins at python.org Sat Feb 2 19:52:52 2008 From: python-checkins at python.org (neal.norwitz) Date: Sat, 2 Feb 2008 19:52:52 +0100 (CET) Subject: [Python-checkins] r60531 - python/trunk/Misc/build.sh Message-ID: <20080202185252.042591E4018@bag.python.org> Author: neal.norwitz Date: Sat Feb 2 19:52:51 2008 New Revision: 60531 Modified: python/trunk/Misc/build.sh Log: Update the leaky tests (ie, ignore these tests if they report leaks). This version has been running for a while. Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Sat Feb 2 19:52:51 2008 @@ -67,7 +67,7 @@ # Note: test_XXX (none currently) really leak, but are disabled # so we don't send spam. Any test which really leaks should only # be listed here if there are also test cases under Lib/test/leakers. -LEAKY_TESTS="test_(cmd_line|popen2|socket|urllib2_localnet)" +LEAKY_TESTS="test_(cmd_line|popen2|socket|sys|threadsignals|urllib2_localnet)" # Skip these tests altogether when looking for leaks. These tests # do not need to be stored above in LEAKY_TESTS too. From python-checkins at python.org Sat Feb 2 20:11:57 2008 From: python-checkins at python.org (skip.montanaro) Date: Sat, 2 Feb 2008 20:11:57 +0100 (CET) Subject: [Python-checkins] r60533 - python/trunk/Misc/build.sh Message-ID: <20080202191157.C2AF91E4018@bag.python.org> Author: skip.montanaro Date: Sat Feb 2 20:11:57 2008 New Revision: 60533 Modified: python/trunk/Misc/build.sh Log: Split the refleak mail body into two parts, the first being those failing tests which are deemed more important issues, the second those which are known to have difficult to solve problems and are generally expected to leak. Hopefully this doesn't break the script... Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Sat Feb 2 20:11:57 2008 @@ -97,7 +97,17 @@ if [ "$FAILURE_CC" != "" ]; then dest="$dest -c $FAILURE_CC" fi - mutt -s "$FAILURE_SUBJECT $1 ($NUM_FAILURES)" $dest < $2 + if [ "x$3" != "x" ] ; then + (echo "More important issues:" + echo "----------------------" + egrep -v "$3" < $2 + echo "" + echo "Less important issues:" + echo "----------------------" + egrep "$3" < $2) + else + cat $2 + fi | mutt -s "$FAILURE_SUBJECT $1 ($NUM_FAILURES)" $dest fi } @@ -192,9 +202,10 @@ ## ensure that the reflog exists so the grep doesn't fail touch $REFLOG $PYTHON $REGRTEST_ARGS -R 4:3:$REFLOG -u network $LEAKY_SKIPS >& build/$F - NUM_FAILURES=`egrep -vc "($LEAKY_TESTS|sum=0)" $REFLOG` + LEAK_PAT="($LEAKY_TESTS|sum=0)" + NUM_FAILURES=`egrep -vc "$LEAK_PAT" $REFLOG` update_status "Testing refleaks ($NUM_FAILURES failures)" "$F" $start - mail_on_failure "refleak" $REFLOG + mail_on_failure "refleak" $REFLOG "$LEAK_PAT" ## now try to run all the tests F=make-testall.out From nnorwitz at gmail.com Sat Feb 2 23:22:48 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Feb 2008 17:22:48 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080202222248.GA4599@python.psfb.org> test_threadedtempfile leaked [-81, 0, 0] references, sum=-81 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [3, 3, 3] references, sum=9 From nnorwitz at gmail.com Sat Feb 2 23:41:13 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Feb 2008 17:41:13 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080202224113.GA7777@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread writer 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0004-0004-0004-0004-0004' Exception in thread writer 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1006-1006-1006-1006-1006' Exception in thread writer 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2002-2002-2002-2002-2002' test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7761 refs] [7761 refs] [7761 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8138 refs] [8138 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test test_socket_ssl failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py", line 45, in testBasic buf = f.read() File "/tmp/python-test/local/lib/python2.6/ssl.py", line 333, in read data = self._sslobj.read(recv_size) SSLError: [Errno 8] _ssl.c:1276: EOF occurred in violation of protocol test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7756 refs] [7757 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7757 refs] [9376 refs] [7974 refs] [7757 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] . [7756 refs] [7756 refs] this bit of output is from a test of stdout in a different process ... [7756 refs] [7756 refs] [7974 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7756 refs] [7756 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7760 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10884 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_socket_ssl 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [559676 refs] From python-checkins at python.org Sun Feb 3 00:59:22 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 3 Feb 2008 00:59:22 +0100 (CET) Subject: [Python-checkins] r60534 - python/trunk/Lib/test/test_queue.py Message-ID: <20080202235922.190B11E4018@bag.python.org> Author: georg.brandl Date: Sun Feb 3 00:59:21 2008 New Revision: 60534 Modified: python/trunk/Lib/test/test_queue.py Log: Fix a conversion mistake that caused test_queue to fail intermittently. Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Sun Feb 3 00:59:21 2008 @@ -138,13 +138,13 @@ def worker(self, q): while True: - self.x = q.get() - if self.x is None: + x = q.get() + if x is None: q.task_done() return self.cumlock.acquire() try: - self.cum += self.x + self.cum += x finally: self.cumlock.release() q.task_done() @@ -157,7 +157,7 @@ q.put(i) q.join() self.assertEquals(self.cum, sum(range(100)), - "q.join() did not block until all tasks were done") + "q.join() did not block until all tasks were done") for i in (0,1): q.put(None) # instruct the threads to close q.join() # verify that you can join twice From python-checkins at python.org Sun Feb 3 01:04:51 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 3 Feb 2008 01:04:51 +0100 (CET) Subject: [Python-checkins] r60535 - python/trunk/Lib/test/test_socketserver.py Message-ID: <20080203000451.14B851E4018@bag.python.org> Author: georg.brandl Date: Sun Feb 3 01:04:50 2008 New Revision: 60535 Modified: python/trunk/Lib/test/test_socketserver.py Log: Wait for a delay before reaping children -- this should fix the test_socketserver failures on several platforms. Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Sun Feb 3 01:04:50 2008 @@ -125,6 +125,7 @@ self.test_files = [] def tearDown(self): + time.sleep(DELAY) reap_children() for fn in self.test_files: @@ -209,7 +210,7 @@ MyStreamHandler, self.stream_examine) def test_UDPServers(self): - # Test SocketServer.UPDServer + # Test SocketServer.UDPServer servers = [SocketServer.UDPServer, SocketServer.ThreadingUDPServer] if HAVE_FORKING: From buildbot at python.org Sun Feb 3 02:42:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 01:42:16 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080203014216.771D11E4018@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/242 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 03:07:56 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 03:07:56 +0100 (CET) Subject: [Python-checkins] r60536 - python/trunk/configure python/trunk/configure.in Message-ID: <20080203020756.1C7CA1E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 03:07:55 2008 New Revision: 60536 Modified: python/trunk/configure python/trunk/configure.in Log: Fix a minor typo. Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sun Feb 3 03:07:55 2008 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 60464 . +# From configure.in Revision: 60484 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -1313,7 +1313,7 @@ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-universalsdk[SDKDIR] - Build agains Mac OS X 10.4u SDK (ppc/i386) + Build against Mac OS X 10.4u SDK (ppc/i386) --enable-framework[=INSTALLDIR] Build (MacOSX|Darwin) framework --enable-shared disable/enable building shared python library Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sun Feb 3 03:07:55 2008 @@ -61,7 +61,7 @@ CONFIG_ARGS="$ac_configure_args" AC_ARG_ENABLE(universalsdk, - AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)), + AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)), [ case $enableval in yes) From python-checkins at python.org Sun Feb 3 03:08:45 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 03:08:45 +0100 (CET) Subject: [Python-checkins] r60537 - python/trunk/setup.py Message-ID: <20080203020845.A09C61E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 03:08:45 2008 New Revision: 60537 Modified: python/trunk/setup.py Log: Directories from CPPFLAGS and LDFLAGS were being added in the reverse order for searches as to how they were listed in the environment variable. Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sun Feb 3 03:08:45 2008 @@ -327,7 +327,7 @@ parser.add_option(arg_name, dest="dirs", action="append") options = parser.parse_args(env_val.split())[0] if options.dirs: - for directory in options.dirs: + for directory in reversed(options.dirs): add_dir_to_list(dir_list, directory) if os.path.normpath(sys.prefix) != '/usr': From lists at cheimes.de Sun Feb 3 03:21:10 2008 From: lists at cheimes.de (Christian Heimes) Date: Sun, 03 Feb 2008 03:21:10 +0100 Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py In-Reply-To: <20080202114608.23F901E4002@bag.python.org> References: <20080202114608.23F901E4002@bag.python.org> Message-ID: <47A52516.60909@cheimes.de> georg.brandl wrote: > Author: georg.brandl > Date: Sat Feb 2 12:46:07 2008 > New Revision: 60529 > > Added: > python/trunk/Lib/test/test_cprofile.py > - copied, changed from r60520, python/trunk/Lib/test/test_cProfile.py > Removed: > python/trunk/Lib/test/output/test_cProfile > python/trunk/Lib/test/test_cProfile.py > Log: > Rewrite test_cprofile as unittest (and rename the file to be consistent > with all other test files). Written for GHOP by Benjamin Peterson. I don't think it was a good idea to rewrite the test as doc test. The doc test can't be easily updated and they *have* to be updated every time Lib/io.py changes in py3k. Christian From python-checkins at python.org Sun Feb 3 03:34:14 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 03:34:14 +0100 (CET) Subject: [Python-checkins] r60538 - python/trunk/Doc/library/queue.rst Message-ID: <20080203023414.547B81E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 03:34:14 2008 New Revision: 60538 Modified: python/trunk/Doc/library/queue.rst Log: Remove extra tick marks and add a missing closing parenthesis. Modified: python/trunk/Doc/library/queue.rst ============================================================================== --- python/trunk/Doc/library/queue.rst (original) +++ python/trunk/Doc/library/queue.rst Sun Feb 3 03:34:14 2008 @@ -68,7 +68,7 @@ Queue Objects ------------- -Queue objects (:class:``Queue``, :class:``LifoQueue``, or :class:``PriorityQueue`` +Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:`PriorityQueue`) provide the public methods described below. From python-checkins at python.org Sun Feb 3 03:43:02 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 03:43:02 +0100 (CET) Subject: [Python-checkins] r60539 - python/trunk/Lib/test/test_queue.py Message-ID: <20080203024302.1AE9E1E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 03:43:01 2008 New Revision: 60539 Modified: python/trunk/Lib/test/test_queue.py Log: Use context manager for a lock. Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Sun Feb 3 03:43:01 2008 @@ -142,11 +142,8 @@ if x is None: q.task_done() return - self.cumlock.acquire() - try: + with self.cumlock: self.cum += x - finally: - self.cumlock.release() q.task_done() def queue_join_test(self, q): From brett at python.org Sun Feb 3 03:43:32 2008 From: brett at python.org (Brett Cannon) Date: Sat, 2 Feb 2008 18:43:32 -0800 Subject: [Python-checkins] r60534 - python/trunk/Lib/test/test_queue.py In-Reply-To: <20080202235922.190B11E4018@bag.python.org> References: <20080202235922.190B11E4018@bag.python.org> Message-ID: That damn sqlite issue I had held me up between svn updates and so I fixed this after you did. Blah. -Brett On Feb 2, 2008 3:59 PM, georg.brandl wrote: > Author: georg.brandl > Date: Sun Feb 3 00:59:21 2008 > New Revision: 60534 > > Modified: > python/trunk/Lib/test/test_queue.py > Log: > Fix a conversion mistake that caused test_queue to fail intermittently. > > > Modified: python/trunk/Lib/test/test_queue.py > ============================================================================== > --- python/trunk/Lib/test/test_queue.py (original) > +++ python/trunk/Lib/test/test_queue.py Sun Feb 3 00:59:21 2008 > @@ -138,13 +138,13 @@ > > def worker(self, q): > while True: > - self.x = q.get() > - if self.x is None: > + x = q.get() > + if x is None: > q.task_done() > return > self.cumlock.acquire() > try: > - self.cum += self.x > + self.cum += x > finally: > self.cumlock.release() > q.task_done() > @@ -157,7 +157,7 @@ > q.put(i) > q.join() > self.assertEquals(self.cum, sum(range(100)), > - "q.join() did not block until all tasks were done") > + "q.join() did not block until all tasks were done") > for i in (0,1): > q.put(None) # instruct the threads to close > q.join() # verify that you can join twice > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From brett at python.org Sun Feb 3 03:46:25 2008 From: brett at python.org (Brett Cannon) Date: Sat, 2 Feb 2008 18:46:25 -0800 Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py In-Reply-To: <47A52516.60909@cheimes.de> References: <20080202114608.23F901E4002@bag.python.org> <47A52516.60909@cheimes.de> Message-ID: On Feb 2, 2008 6:21 PM, Christian Heimes wrote: > georg.brandl wrote: > > Author: georg.brandl > > Date: Sat Feb 2 12:46:07 2008 > > New Revision: 60529 > > > > Added: > > python/trunk/Lib/test/test_cprofile.py > > - copied, changed from r60520, python/trunk/Lib/test/test_cProfile.py > > Removed: > > python/trunk/Lib/test/output/test_cProfile > > python/trunk/Lib/test/test_cProfile.py > > Log: > > Rewrite test_cprofile as unittest (and rename the file to be consistent > > with all other test files). Written for GHOP by Benjamin Peterson. > > I don't think it was a good idea to rewrite the test as doc test. The > doc test can't be easily updated and they *have* to be updated every > time Lib/io.py changes in py3k. But how is the situation going to be any better using unittest? The thing to remember about this, Christian, is that we had a high schooler do this. It was simpler to say, "take this output-comparing test and move to doctest", than to say, "come up with a completely new way to test this code using unittest". This at least gets us off of output-based testing for this. It can always be reworked later as a unittest if io.py ends up changing that often. -Brett From buildbot at python.org Sun Feb 3 06:09:54 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 05:09:54 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080203050954.A5DBF1E4018@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/164 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_telnetlib.py", line 14, in server serv.bind(("", 9091)) File "", line 1, in bind error: [Errno 48] Address already in use sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 07:58:07 2008 From: python-checkins at python.org (andrew.macintyre) Date: Sun, 3 Feb 2008 07:58:07 +0100 (CET) Subject: [Python-checkins] r60540 - python/trunk/PC/os2emx/Makefile python/trunk/PC/os2emx/README.os2emx python/trunk/PC/os2emx/python25.def Message-ID: <20080203065807.94E831E4018@bag.python.org> Author: andrew.macintyre Date: Sun Feb 3 07:58:06 2008 New Revision: 60540 Modified: python/trunk/PC/os2emx/Makefile python/trunk/PC/os2emx/README.os2emx python/trunk/PC/os2emx/python25.def Log: Update OS/2 EMX build bits for 2.6. Modified: python/trunk/PC/os2emx/Makefile ============================================================================== --- python/trunk/PC/os2emx/Makefile (original) +++ python/trunk/PC/os2emx/Makefile Sun Feb 3 07:58:06 2008 @@ -1,16 +1,16 @@ #####################==================---------------- # -# Top-Level Makefile for Building Python 2.4 for OS/2 using GCC/EMX +# Top-Level Makefile for Building Python 2.6 for OS/2 using GCC/EMX # Originally written by Andrew Zabolotny, for Python 1.5.2 -# Modified by Andrew MacIntyre, for Python 2.5 +# Modified by Andrew MacIntyre, for Python 2.6 # # This makefile was developed for use with [P]GCC/EMX compiler any # version and GNU Make. # -# The output of the build is a largish Python25.DLL containing the +# The output of the build is a largish Python26.DLL containing the # essential modules of Python and a small Python.exe program to start # the interpreter. When embedding Python within another program, only -# Python25.DLL is needed. We also build python_s.a static library (which +# Python26.DLL is needed. We also build python_s.a static library (which # can be converted into OMF (.lib) format using emxomf tool) and both # python.a and python.lib import libraries. Then the optional # extension modules, which are OS/2 DLLs renamed with a PYD file extension. @@ -64,7 +64,7 @@ # === install locations === # default value of PYTHONHOME -LIB_DIR=C:/Python25 +LIB_DIR=C:/Python26 # default is to have everything in or under PYTHONHOME EXE_DIR=$(LIB_DIR) DLL_DIR=$(EXE_DIR) @@ -236,8 +236,8 @@ @echo STACKSIZE 2097152 >>$@ # Output file names -PYTHON_VER= 2.5 -PYTHON_LIB= python25 +PYTHON_VER= 2.6 +PYTHON_LIB= python26 PYTHON.LIB= $(PYTHON_LIB)_s$A PYTHON.IMPLIB= $(PYTHON_LIB)$A ifeq ($(EXEOMF),yes) Modified: python/trunk/PC/os2emx/README.os2emx ============================================================================== --- python/trunk/PC/os2emx/README.os2emx (original) +++ python/trunk/PC/os2emx/README.os2emx Sun Feb 3 07:58:06 2008 @@ -1,4 +1,4 @@ -This is a port of Python 2.5 to OS/2 using the EMX development tools +This is a port of Python 2.6 to OS/2 using the EMX development tools ========================================================================= What's new since the previous release @@ -10,11 +10,11 @@ Licenses and info about Python and EMX -------------------------------------- -Please read the file README.Python-2.5 included in this package for -information about Python 2.5. This file is the README file from the -Python 2.5 source distribution available via http://www.python.org/ -and its mirrors. The file LICENCE.Python-2.5 is the text of the Licence -from the Python 2.5 source distribution. +Please read the file README.Python-2.6 included in this package for +information about Python 2.6. This file is the README file from the +Python 2.6 source distribution available via http://www.python.org/ +and its mirrors. The file LICENCE.Python-2.6 is the text of the Licence +from the Python 2.6 source distribution. Note that the EMX package that this package depends on is released under the GNU General Public Licence. Please refer to the documentation @@ -46,7 +46,7 @@ The best known would be that by Jeff Rush, most recently of version 1.5.2. Jeff used IBM's Visual Age C++ (v3) for his ports, and his -patches have been included in the Python 2.5 source distribution. +patches have been included in the Python 2.6 source distribution. Andy Zabolotny implemented a port of Python v1.5.2 using the EMX development tools. His patches against the Python v1.5.2 source @@ -92,7 +92,7 @@ to compile & link the executable. This is so that fork() works (see "YOU HAVE BEEN WARNED" item 1). -Python25.dll is created as a normal OMF DLL, with an OMF import +Python26.dll is created as a normal OMF DLL, with an OMF import library and module definition file. There is also an a.out (.a) import library to support linking the DLL to a.out executables. The DLL requires the EMX runtime DLLs. @@ -148,7 +148,7 @@ Upstream source patches: -No updates to the Python 2.5 release have become available. +No updates to the Python 2.6 release have become available. Eberhard Mattes' EMXFIX04 update to his EMX 0.9d tools suite includes bug fixes for the BSD DB library. The bsddb module included in this @@ -157,7 +157,7 @@ Library and other distributed Python code: The Python standard library lives in the Lib directory. All the standard -library code included with the Python 2.5 source distribution is included +library code included with the Python 2.6 source distribution is included in the binary archive, with the exception of the dos-8x3 and tkinter subdirectories which have been omitted to reduce the size of the binary archive - the dos-8x3 components are unnecessary duplicates and Tkinter @@ -172,7 +172,7 @@ also been omitted. All subdirectories omitted from the binary archive can be reconstituted -from the Python 2.5 source distribution, if desired. +from the Python 2.6 source distribution, if desired. Support for building Python extensions: @@ -190,15 +190,15 @@ --------- This port is packaged as follows: -- python-2.5-os2emx-bin-03????.zip (binaries, library modules) -- python-2.5-os2emx-src-03???? (patches+makefiles for non-Python code) +- python-2.6-os2emx-bin-03????.zip (binaries, library modules) +- python-2.6-os2emx-src-03???? (patches+makefiles for non-Python code) As all the Python specific patches for the port are now part of the Python release tarball, only the patches and makefiles involved in building external libraries for optional extensions are included in the source archive. -Documentation for the Python language, as well as the Python 2.5 +Documentation for the Python language, as well as the Python 2.6 source distibution, can be obtained from the Python website (http://www.python.org/) or the Python project pages at Sourceforge (http://sf.net/projects/python/). @@ -213,7 +213,7 @@ Unpack this archive, preserving the subdirectories, in the root directory of the drive where you want Python to live. -Add the Python directory (eg C:\Python25) to the PATH and LIBPATH +Add the Python directory (eg C:\Python26) to the PATH and LIBPATH variables in CONFIG.SYS. You should then set the PYTHONHOME and PYTHONPATH environment variables @@ -223,9 +223,9 @@ should be set to the semicolon separated list of principal Python library directories. I use: - SET PYTHONHOME=F:/Python25 - SET PYTHONPATH=F:/Python25/Lib;F:/Python25/Lib/plat-os2emx; - F:/Python25/Lib/lib-dynload;F:/Python25/Lib/site-packages + SET PYTHONHOME=F:/Python26 + SET PYTHONPATH=F:/Python26/Lib;F:/Python26/Lib/plat-os2emx; + F:/Python26/Lib/lib-dynload;F:/Python26/Lib/site-packages NOTE!: the PYTHONPATH setting above is linewrapped for this document - it should all be on one line in CONFIG.SYS! @@ -238,7 +238,7 @@ distribution. This can be used by setting the TERMINFO environment variable to the path of the Terminfo subdirectory below the Python home directory. On my system this looks like: - SET TERMINFO=F:/Python25/Terminfo + SET TERMINFO=F:/Python26/Terminfo For the TERM environment variable, I would try one of the following: SET TERM=ansi @@ -252,8 +252,8 @@ you can change into the Python home directory and run the COMPILEALL.CMD batch file. -You can execute the regression tests included with the Python 2.5 source -distribution by changing to the Python 2.5 home directory and executing the +You can execute the regression tests included with the Python 2.6 source +distribution by changing to the Python 2.6 home directory and executing the REGRTEST.CMD batch file. The following tests are known to fail at this time: - test_mhlib (I don't know of any port of MH to OS/2); @@ -299,7 +299,7 @@ 1. decide if you need to change the location of the Python installation. If you wish to do this, set the value of the Makefile variable LIB_DIR to the directory you wish to use for PYTHONHOME - (eg /usr/local/lib/python2.5). + (eg /usr/local/lib/python2.6). If you want Python to find its library without the PYTHONHOME environment variable set, set the value of the Makefile variable @@ -309,7 +309,7 @@ to be installed in a directory other than the PYTHONHOME directory, set the value of the Makefile variable EXE_DIR to the appropriate directory. -3. If you wish the Python core DLL (python25.dll) to be installed in a +3. If you wish the Python core DLL (python26.dll) to be installed in a directory other than the directory in which the Python executables are installed (by default, the PYTHONHOME directory), set the value of the Makefile variable DLL_DIR to the appropriate directory. This DLL must @@ -698,4 +698,4 @@ E-mail: andymac at bullseye.apana.org.au, or andymac at pcug.org.au Web: http://www.andymac.org/ -23 July, 2006. +28 January, 2008. Modified: python/trunk/PC/os2emx/python25.def ============================================================================== --- python/trunk/PC/os2emx/python25.def (original) +++ python/trunk/PC/os2emx/python25.def Sun Feb 3 07:58:06 2008 @@ -1,54 +1,54 @@ -LIBRARY python25 INITINSTANCE TERMINSTANCE -DESCRIPTION "Python 2.5 Core DLL" +LIBRARY python26 INITINSTANCE TERMINSTANCE +DESCRIPTION "Python 2.6 Core DLL" PROTMODE DATA MULTIPLE NONSHARED EXPORTS -; From python25_s.lib(config) +; From python26_s.lib(config) "_PyImport_Inittab" -; From python25_s.lib(dlfcn) +; From python26_s.lib(dlfcn) ; "dlopen" ; "dlsym" ; "dlclose" ; "dlerror" -; From python25_s.lib(getpathp) +; From python26_s.lib(getpathp) "Py_GetProgramFullPath" "Py_GetPrefix" "Py_GetExecPrefix" "Py_GetPath" -; From python25_s.lib(getbuildinfo) +; From python26_s.lib(getbuildinfo) "Py_GetBuildInfo" "_Py_svnversion" -; From python25_s.lib(main) +; From python26_s.lib(main) "Py_Main" "Py_GetArgcArgv" -; From python25_s.lib(acceler) +; From python26_s.lib(acceler) "PyGrammar_AddAccelerators" "PyGrammar_RemoveAccelerators" -; From python25_s.lib(grammar1) +; From python26_s.lib(grammar1) "PyGrammar_FindDFA" "PyGrammar_LabelRepr" -; From python25_s.lib(listnode) +; From python26_s.lib(listnode) "PyNode_ListTree" -; From python25_s.lib(node) +; From python26_s.lib(node) "PyNode_New" "PyNode_AddChild" "PyNode_Free" -; From python25_s.lib(parser) +; From python26_s.lib(parser) "PyParser_AddToken" "PyParser_New" "PyParser_Delete" -; From python25_s.lib(parsetok) +; From python26_s.lib(parsetok) "Py_TabcheckFlag" "PyParser_ParseString" "PyParser_ParseStringFlagsFilename" @@ -56,18 +56,18 @@ "PyParser_ParseFileFlags" "PyParser_ParseStringFlags" -; From python25_s.lib(bitset) +; From python26_s.lib(bitset) "_Py_newbitset" "_Py_delbitset" "_Py_addbit" "_Py_samebitset" "_Py_mergebitset" -; From python25_s.lib(metagrammar) +; From python26_s.lib(metagrammar) "_Py_meta_grammar" "Py_meta_grammar" -; From python25_s.lib(tokenizer) +; From python26_s.lib(tokenizer) "PyToken_OneChar" "PyToken_TwoChars" "PyToken_ThreeChars" @@ -77,14 +77,14 @@ "PyTokenizer_Get" "_PyParser_TokenNames" -; From python25_s.lib(myreadline) +; From python26_s.lib(myreadline) "_PyOS_ReadlineTState" "PyOS_ReadlineFunctionPointer" "PyOS_StdioReadline" "PyOS_Readline" "PyOS_InputHook" -; From python25_s.lib(abstract) +; From python26_s.lib(abstract) "_PyObject_LengthHint" "PyMapping_Size" "PyObject_CallMethod" @@ -175,13 +175,13 @@ "PyObject_IsInstance" "PyObject_IsSubclass" -; From python25_s.lib(boolobject) +; From python26_s.lib(boolobject) "PyBool_FromLong" "PyBool_Type" "_Py_ZeroStruct" "_Py_TrueStruct" -; From python25_s.lib(bufferobject) +; From python26_s.lib(bufferobject) "PyBuffer_FromObject" "PyBuffer_FromReadWriteObject" "PyBuffer_FromMemory" @@ -189,13 +189,13 @@ "PyBuffer_New" "PyBuffer_Type" -; From python25_s.lib(cellobject) +; From python26_s.lib(cellobject) "PyCell_New" "PyCell_Get" "PyCell_Set" "PyCell_Type" -; From python25_s.lib(classobject) +; From python26_s.lib(classobject) "PyClass_New" "PyClass_IsSubclass" "PyInstance_New" @@ -210,7 +210,7 @@ "PyInstance_Type" "PyMethod_Type" -; From python25_s.lib(cobject) +; From python26_s.lib(cobject) "PyCObject_FromVoidPtr" "PyCObject_FromVoidPtrAndDesc" "PyCObject_AsVoidPtr" @@ -219,13 +219,13 @@ "PyCObject_SetVoidPtr" "PyCObject_Type" -; From python25_s.lib(codeobject) +; From python26_s.lib(codeobject) "PyCode_New" "PyCode_Addr2Line" "PyCode_CheckLineNumber" "PyCode_Type" -; From python25_s.lib(complexobject) +; From python26_s.lib(complexobject) "_Py_c_pow" "_Py_c_sum" "_Py_c_diff" @@ -239,7 +239,7 @@ "PyComplex_AsCComplex" "PyComplex_Type" -; From python25_s.lib(descrobject) +; From python26_s.lib(descrobject) "PyWrapper_New" "PyDescr_NewMethod" "PyDescr_NewClassMethod" @@ -250,7 +250,7 @@ "PyWrapperDescr_Type" "PyProperty_Type" -; From python25_s.lib(dictobject) +; From python26_s.lib(dictobject) "PyDict_New" "PyDict_GetItem" "PyDict_SetItem" @@ -274,11 +274,11 @@ "PyDictIterValue_Type" "PyDictIterItem_Type" -; From python25_s.lib(enumobject) +; From python26_s.lib(enumobject) "PyEnum_Type" "PyReversed_Type" -; From python25_s.lib(fileobject) +; From python26_s.lib(fileobject) "PyFile_FromString" "Py_UniversalNewlineFread" "PyFile_GetLine" @@ -294,7 +294,7 @@ "PyFile_Name" "PyFile_Type" -; From python25_s.lib(floatobject) +; From python26_s.lib(floatobject) "PyFloat_FromString" "PyFloat_AsDouble" "PyFloat_Fini" @@ -309,7 +309,7 @@ "PyFloat_AsStringEx" "PyFloat_Type" -; From python25_s.lib(frameobject) +; From python26_s.lib(frameobject) "PyFrame_New" "PyFrame_FastToLocals" "PyFrame_LocalsToFast" @@ -319,7 +319,7 @@ "PyFrame_BlockPop" "PyFrame_Type" -; From python25_s.lib(funcobject) +; From python26_s.lib(funcobject) "PyFunction_New" "PyFunction_GetCode" "PyFunction_GetGlobals" @@ -334,12 +334,12 @@ "PyClassMethod_Type" "PyStaticMethod_Type" -; From python25_s.lib(genobject) +; From python26_s.lib(genobject) "PyGen_New" "PyGen_NeedsFinalizing" "PyGen_Type" -; From python25_s.lib(intobject) +; From python26_s.lib(intobject) "PyInt_AsLong" "PyInt_AsUnsignedLongMask" "PyInt_AsUnsignedLongLongMask" @@ -354,13 +354,13 @@ "_PyInt_Init" "PyInt_Type" -; From python25_s.lib(iterobject) +; From python26_s.lib(iterobject) "PySeqIter_New" "PyCallIter_New" "PySeqIter_Type" "PyCallIter_Type" -; From python25_s.lib(listobject) +; From python26_s.lib(listobject) "PyList_New" "PyList_Append" "PyList_Size" @@ -378,7 +378,7 @@ "PyListIter_Type" "PyListRevIter_Type" -; From python25_s.lib(longobject) +; From python26_s.lib(longobject) "PyLong_FromDouble" "PyLong_AsLong" "_PyLong_AsSsize_t" @@ -408,7 +408,7 @@ "PyLong_Type" "_PyLong_DigitValue" -; From python25_s.lib(methodobject) +; From python26_s.lib(methodobject) "PyCFunction_Call" "Py_FindMethodInChain" "PyCFunction_GetFunction" @@ -420,7 +420,7 @@ "PyCFunction_New" "PyCFunction_Type" -; From python25_s.lib(moduleobject) +; From python26_s.lib(moduleobject) "PyModule_New" "_PyModule_Clear" "PyModule_GetDict" @@ -428,7 +428,7 @@ "PyModule_GetFilename" "PyModule_Type" -; From python25_s.lib(object) +; From python26_s.lib(object) "Py_DivisionWarningFlag" "PyObject_Str" "PyObject_Repr" @@ -481,15 +481,15 @@ "_PyTrash_delete_nesting" "_PyTrash_delete_later" -; From python25_s.lib(obmalloc) +; From python26_s.lib(obmalloc) "PyObject_Malloc" "PyObject_Free" "PyObject_Realloc" -; From python25_s.lib(rangeobject) +; From python26_s.lib(rangeobject) "PyRange_Type" -; From python25_s.lib(setobject) +; From python26_s.lib(setobject) "PySet_Pop" "PySet_New" "PyFrozenSet_New" @@ -504,7 +504,7 @@ "PySet_Type" "PyFrozenSet_Type" -; From python25_s.lib(sliceobject) +; From python26_s.lib(sliceobject) "_PySlice_FromIndices" "PySlice_GetIndices" "PySlice_GetIndicesEx" @@ -512,7 +512,7 @@ "_Py_EllipsisObject" "PySlice_Type" -; From python25_s.lib(stringobject) +; From python26_s.lib(stringobject) "PyString_FromStringAndSize" "PyString_InternInPlace" "PyString_FromString" @@ -543,12 +543,12 @@ "PyString_Type" "PyBaseString_Type" -; From python25_s.lib(structseq) +; From python26_s.lib(structseq) "PyStructSequence_InitType" "PyStructSequence_New" "PyStructSequence_UnnamedField" -; From python25_s.lib(tupleobject) +; From python26_s.lib(tupleobject) "PyTuple_New" "PyTuple_Pack" "_PyTuple_Resize" @@ -560,7 +560,7 @@ "PyTuple_Type" "PyTupleIter_Type" -; From python25_s.lib(typeobject) +; From python26_s.lib(typeobject) "PyType_IsSubtype" "_PyType_Lookup" "PyType_Ready" @@ -571,7 +571,7 @@ "PyBaseObject_Type" "PySuper_Type" -; From python25_s.lib(unicodeobject) +; From python26_s.lib(unicodeobject) "PyUnicodeUCS2_Resize" "PyUnicodeUCS2_FromOrdinal" "PyUnicodeUCS2_FromObject" @@ -637,7 +637,7 @@ "PyUnicode_AsDecodedObject" "PyUnicode_Type" -; From python25_s.lib(unicodectype) +; From python26_s.lib(unicodectype) "_PyUnicode_TypeRecords" "_PyUnicodeUCS2_ToNumeric" "_PyUnicodeUCS2_IsLowercase" @@ -655,7 +655,7 @@ "_PyUnicodeUCS2_IsNumeric" "_PyUnicodeUCS2_IsAlpha" -; From python25_s.lib(weakrefobject) +; From python26_s.lib(weakrefobject) "PyWeakref_NewRef" "PyWeakref_NewProxy" "PyObject_ClearWeakRefs" @@ -666,7 +666,7 @@ "_PyWeakref_ProxyType" "_PyWeakref_CallableProxyType" -; From python25_s.lib(Python-ast) +; From python26_s.lib(Python-ast) ; "init_ast" "Module" "Interactive" @@ -725,18 +725,18 @@ "alias" "PyAST_mod2obj" -; From python25_s.lib(asdl) +; From python26_s.lib(asdl) "asdl_seq_new" "asdl_int_seq_new" -; From python25_s.lib(ast) +; From python26_s.lib(ast) "PyAST_FromNode" -; From python25_s.lib(bltinmodule) +; From python26_s.lib(bltinmodule) "_PyBuiltin_Init" "Py_FileSystemDefaultEncoding" -; From python25_s.lib(exceptions) +; From python26_s.lib(exceptions) "PyUnicodeEncodeError_GetStart" "PyUnicodeDecodeError_GetStart" "PyUnicodeEncodeError_GetEnd" @@ -812,7 +812,7 @@ "PyExc_ImportWarning" "PyExc_MemoryErrorInst" -; From python25_s.lib(ceval) +; From python26_s.lib(ceval) "PyEval_EvalFrameEx" "PyEval_CallObjectWithKeywords" "PyEval_EvalCodeEx" @@ -851,13 +851,13 @@ "_Py_CheckInterval" "_Py_Ticker" -; From python25_s.lib(compile) +; From python26_s.lib(compile) "_Py_Mangle" "PyAST_Compile" "PyNode_Compile" "Py_OptimizeFlag" -; From python25_s.lib(codecs) +; From python26_s.lib(codecs) "_PyCodec_Lookup" "PyCodec_Encode" "PyCodec_Decode" @@ -876,7 +876,7 @@ "PyCodec_LookupError" "PyCodec_StrictErrors" -; From python25_s.lib(errors) +; From python26_s.lib(errors) "PyErr_SetNone" "PyErr_SetString" "PyErr_GivenExceptionMatches" @@ -902,16 +902,16 @@ "PyErr_Warn" "PyErr_WarnExplicit" -; From python25_s.lib(frozen) +; From python26_s.lib(frozen) "PyImport_FrozenModules" -; From python25_s.lib(frozenmain) +; From python26_s.lib(frozenmain) "Py_FrozenMain" -; From python25_s.lib(future) +; From python26_s.lib(future) "PyFuture_FromAST" -; From python25_s.lib(getargs) +; From python26_s.lib(getargs) "PyArg_Parse" "_PyArg_Parse_SizeT" "PyArg_ParseTuple" @@ -925,25 +925,25 @@ "_PyArg_VaParse_SizeT" "_PyArg_VaParseTupleAndKeywords_SizeT" -; From python25_s.lib(getcompiler) +; From python26_s.lib(getcompiler) "Py_GetCompiler" -; From python25_s.lib(getcopyright) +; From python26_s.lib(getcopyright) "Py_GetCopyright" -; From python25_s.lib(getmtime) +; From python26_s.lib(getmtime) "PyOS_GetLastModificationTime" -; From python25_s.lib(getplatform) +; From python26_s.lib(getplatform) "Py_GetPlatform" -; From python25_s.lib(getversion) +; From python26_s.lib(getversion) "Py_GetVersion" -; From python25_s.lib(graminit) +; From python26_s.lib(graminit) "_PyParser_Grammar" -; From python25_s.lib(import) +; From python26_s.lib(import) "_PyImport_Init" "_PyImportHooks_Init" "PyImport_ImportModule" @@ -970,10 +970,10 @@ "PyImport_Inittab" "_PyImport_Filetab" -; From python25_s.lib(importdl) +; From python26_s.lib(importdl) "_PyImport_LoadDynamicModule" -; From python25_s.lib(marshal) +; From python26_s.lib(marshal) "PyMarshal_ReadLongFromFile" "PyMarshal_WriteObjectToString" "PyMarshal_WriteLongToFile" @@ -984,7 +984,7 @@ "PyMarshal_ReadObjectFromString" "PyMarshal_Init" -; From python25_s.lib(modsupport) +; From python26_s.lib(modsupport) "Py_InitModule4" "Py_BuildValue" "_Py_BuildValue_SizeT" @@ -997,24 +997,24 @@ "PyModule_AddStringConstant" "_Py_PackageContext" -; From python25_s.lib(mysnprintf) +; From python26_s.lib(mysnprintf) "PyOS_snprintf" "PyOS_vsnprintf" -; From python25_s.lib(mystrtoul) +; From python26_s.lib(mystrtoul) "PyOS_strtoul" "PyOS_strtol" -; From python25_s.lib(pyarena) +; From python26_s.lib(pyarena) "PyArena_New" "PyArena_Free" "PyArena_Malloc" "PyArena_AddPyObject" -; From python25_s.lib(pyfpe) +; From python26_s.lib(pyfpe) "PyFPE_dummy" -; From python25_s.lib(pystate) +; From python26_s.lib(pystate) "PyInterpreterState_Clear" "PyThreadState_Clear" "_PyThread_CurrentFrames" @@ -1039,12 +1039,12 @@ "_PyThreadState_Current" "_PyThreadState_GetFrame" -; From python25_s.lib(pystrtod) +; From python26_s.lib(pystrtod) "PyOS_ascii_strtod" "PyOS_ascii_formatd" "PyOS_ascii_atof" -; From python25_s.lib(pythonrun) +; From python26_s.lib(pythonrun) "Py_IgnoreEnvironmentFlag" "Py_DebugFlag" "Py_VerboseFlag" @@ -1106,20 +1106,20 @@ "Py_UnicodeFlag" "_Py_QnewFlag" -; From python25_s.lib(structmember) +; From python26_s.lib(structmember) "PyMember_Get" "PyMember_GetOne" "PyMember_SetOne" "PyMember_Set" -; From python25_s.lib(symtable) +; From python26_s.lib(symtable) "PySymtable_Build" "PySymtable_Free" "PyST_GetScope" "PySymtable_Lookup" "PySTEntry_Type" -; From python25_s.lib(sysmodule) +; From python26_s.lib(sysmodule) "_PySys_Init" "PySys_WriteStderr" "PySys_SetPath" @@ -1133,22 +1133,22 @@ "PySys_ResetWarnOptions" "PySys_AddWarnOption" -; From python25_s.lib(traceback) +; From python26_s.lib(traceback) "PyTraceBack_Here" "PyTraceBack_Print" "PyTraceBack_Type" -; From python25_s.lib(getopt) +; From python26_s.lib(getopt) "_PyOS_GetOpt" "_PyOS_opterr" "_PyOS_optind" "_PyOS_optarg" -; From python25_s.lib(dynload_shlib) +; From python26_s.lib(dynload_shlib) "_PyImport_DynLoadFiletab" "_PyImport_GetDynLoadFunc" -; From python25_s.lib(thread) +; From python26_s.lib(thread) "PyThread_delete_key_value" "PyThread_init_thread" "PyThread_start_new_thread" @@ -1166,7 +1166,7 @@ "PyThread_get_key_value" "PyThread__exit_thread" -; From python25_s.lib(gcmodule) +; From python26_s.lib(gcmodule) ; "initgc" "_PyObject_GC_New" "_PyObject_GC_NewVar" @@ -1182,7 +1182,7 @@ "_PyObject_GC_Del" "_PyGC_generation0" -; From python25_s.lib(signalmodule) +; From python26_s.lib(signalmodule) ; "initsignal" "PyErr_CheckSignals" "PyErr_SetInterrupt" @@ -1191,124 +1191,124 @@ "PyOS_InitInterrupts" "PyOS_AfterFork" -; From python25_s.lib(posixmodule) +; From python26_s.lib(posixmodule) ; "initos2" -; From python25_s.lib(threadmodule) +; From python26_s.lib(threadmodule) ; "initthread" -; From python25_s.lib(arraymodule) +; From python26_s.lib(arraymodule) ; "initarray" ; "array_methods" -; From python25_s.lib(binascii) +; From python26_s.lib(binascii) ; "initbinascii" -; From python25_s.lib(cmathmodule) +; From python26_s.lib(cmathmodule) ; "initcmath" -; From python25_s.lib(_codecsmodule) +; From python26_s.lib(_codecsmodule) ; "init_codecs" -; From python25_s.lib(collectionsmodule) +; From python26_s.lib(collectionsmodule) ; "initcollections" "dequeiter_type" "dequereviter_type" -; From python25_s.lib(cPickle) +; From python26_s.lib(cPickle) ; "initcPickle" ; "fast_save_leave" -; From python25_s.lib(cStringIO) +; From python26_s.lib(cStringIO) ; "initcStringIO" -; From python25_s.lib(_csv) +; From python26_s.lib(_csv) ; "init_csv" -; From python25_s.lib(datetimemodule) +; From python26_s.lib(datetimemodule) ; "initdatetime" -; From python25_s.lib(dlmodule) +; From python26_s.lib(dlmodule) ; "initdl" -; From python25_s.lib(errnomodule) +; From python26_s.lib(errnomodule) ; "initerrno" -; From python25_s.lib(fcntlmodule) +; From python26_s.lib(fcntlmodule) ; "initfcntl" -; From python25_s.lib(_functoolsmodule) +; From python26_s.lib(_functoolsmodule) ; "init_functools" -; From python25_s.lib(_heapqmodule) +; From python26_s.lib(_heapqmodule) ; "init_heapq" -; From python25_s.lib(imageop) +; From python26_s.lib(imageop) ; "initimageop" -; From python25_s.lib(itertoolsmodule) +; From python26_s.lib(itertoolsmodule) ; "inititertools" -; From python25_s.lib(_localemodule) +; From python26_s.lib(_localemodule) ; "init_locale" -; From python25_s.lib(mathmodule) +; From python26_s.lib(mathmodule) ; "initmath" -; From python25_s.lib(md5) +; From python26_s.lib(md5) "md5_finish" "md5_init" "md5_append" -; From python25_s.lib(md5module) +; From python26_s.lib(md5module) ; "init_md5" -; From python25_s.lib(operator) +; From python26_s.lib(operator) ; "initoperator" -; From python25_s.lib(_randommodule) +; From python26_s.lib(_randommodule) ; "init_random" -; From python25_s.lib(rgbimgmodule) +; From python26_s.lib(rgbimgmodule) ; "initrgbimg" -; From python25_s.lib(shamodule) +; From python26_s.lib(shamodule) ; "init_sha" -; From python25_s.lib(sha256module) +; From python26_s.lib(sha256module) ; "init_sha256" -; From python25_s.lib(sha512module) +; From python26_s.lib(sha512module) ; "init_sha512" -; From python25_s.lib(_sre) +; From python26_s.lib(_sre) ; "init_sre" -; From python25_s.lib(stropmodule) +; From python26_s.lib(stropmodule) ; "initstrop" -; From python25_s.lib(_struct) +; From python26_s.lib(_struct) ; "init_struct" -; From python25_s.lib(symtablemodule) +; From python26_s.lib(symtablemodule) ; "init_symtable" -; From python25_s.lib(termios) +; From python26_s.lib(termios) ; "inittermios" -; From python25_s.lib(timemodule) +; From python26_s.lib(timemodule) ; "inittime" "_PyTime_DoubleToTimet" ; "inittimezone" -; From python25_s.lib(timingmodule) +; From python26_s.lib(timingmodule) ; "inittiming" -; From python25_s.lib(_weakref) +; From python26_s.lib(_weakref) ; "init_weakref" -; From python25_s.lib(xxsubtype) +; From python26_s.lib(xxsubtype) ; "initxxsubtype" -; From python25_s.lib(zipimport) +; From python26_s.lib(zipimport) ; "initzipimport" From python-checkins at python.org Sun Feb 3 08:01:11 2008 From: python-checkins at python.org (andrew.macintyre) Date: Sun, 3 Feb 2008 08:01:11 +0100 (CET) Subject: [Python-checkins] r60541 - python/trunk/PC/os2emx/python25.def python/trunk/PC/os2emx/python26.def Message-ID: <20080203070111.BA1911E4018@bag.python.org> Author: andrew.macintyre Date: Sun Feb 3 08:01:11 2008 New Revision: 60541 Added: python/trunk/PC/os2emx/python26.def - copied unchanged from r60540, python/trunk/PC/os2emx/python25.def Removed: python/trunk/PC/os2emx/python25.def Log: Rename module definition file to reflect v2.6. Deleted: /python/trunk/PC/os2emx/python25.def ============================================================================== --- /python/trunk/PC/os2emx/python25.def Sun Feb 3 08:01:11 2008 +++ (empty file) @@ -1,1314 +0,0 @@ -LIBRARY python26 INITINSTANCE TERMINSTANCE -DESCRIPTION "Python 2.6 Core DLL" -PROTMODE -DATA MULTIPLE NONSHARED -EXPORTS - -; From python26_s.lib(config) - "_PyImport_Inittab" - -; From python26_s.lib(dlfcn) -; "dlopen" -; "dlsym" -; "dlclose" -; "dlerror" - -; From python26_s.lib(getpathp) - "Py_GetProgramFullPath" - "Py_GetPrefix" - "Py_GetExecPrefix" - "Py_GetPath" - -; From python26_s.lib(getbuildinfo) - "Py_GetBuildInfo" - "_Py_svnversion" - -; From python26_s.lib(main) - "Py_Main" - "Py_GetArgcArgv" - -; From python26_s.lib(acceler) - "PyGrammar_AddAccelerators" - "PyGrammar_RemoveAccelerators" - -; From python26_s.lib(grammar1) - "PyGrammar_FindDFA" - "PyGrammar_LabelRepr" - -; From python26_s.lib(listnode) - "PyNode_ListTree" - -; From python26_s.lib(node) - "PyNode_New" - "PyNode_AddChild" - "PyNode_Free" - -; From python26_s.lib(parser) - "PyParser_AddToken" - "PyParser_New" - "PyParser_Delete" - -; From python26_s.lib(parsetok) - "Py_TabcheckFlag" - "PyParser_ParseString" - "PyParser_ParseStringFlagsFilename" - "PyParser_ParseFile" - "PyParser_ParseFileFlags" - "PyParser_ParseStringFlags" - -; From python26_s.lib(bitset) - "_Py_newbitset" - "_Py_delbitset" - "_Py_addbit" - "_Py_samebitset" - "_Py_mergebitset" - -; From python26_s.lib(metagrammar) - "_Py_meta_grammar" - "Py_meta_grammar" - -; From python26_s.lib(tokenizer) - "PyToken_OneChar" - "PyToken_TwoChars" - "PyToken_ThreeChars" - "PyTokenizer_FromString" - "PyTokenizer_Free" - "PyTokenizer_FromFile" - "PyTokenizer_Get" - "_PyParser_TokenNames" - -; From python26_s.lib(myreadline) - "_PyOS_ReadlineTState" - "PyOS_ReadlineFunctionPointer" - "PyOS_StdioReadline" - "PyOS_Readline" - "PyOS_InputHook" - -; From python26_s.lib(abstract) - "_PyObject_LengthHint" - "PyMapping_Size" - "PyObject_CallMethod" - "PyObject_GetItem" - "PySequence_GetItem" - "PyObject_SetItem" - "PySequence_SetItem" - "PyObject_DelItem" - "PySequence_DelItem" - "PyNumber_Multiply" - "PyNumber_InPlaceAdd" - "PyNumber_InPlaceMultiply" - "PyNumber_Int" - "PyNumber_Long" - "PyNumber_Float" - "PySequence_Concat" - "PySequence_Repeat" - "PySequence_InPlaceConcat" - "PySequence_InPlaceRepeat" - "PySequence_GetSlice" - "PySequence_SetSlice" - "PySequence_Tuple" - "PyObject_GetIter" - "PyIter_Next" - "PySequence_Fast" - "_PySequence_IterSearch" - "PyObject_CallFunction" - "_PyObject_CallFunction_SizeT" - "_PyObject_CallMethod_SizeT" - "PyObject_CallMethodObjArgs" - "PyObject_CallFunctionObjArgs" - "PyObject_Cmp" - "PyObject_Call" - "PyObject_CallObject" - "PyObject_Type" - "PyObject_Size" - "PyObject_Length" - "PyObject_DelItemString" - "PyObject_AsCharBuffer" - "PyObject_CheckReadBuffer" - "PyObject_AsReadBuffer" - "PyObject_AsWriteBuffer" - "PyNumber_Check" - "PyNumber_Add" - "PyNumber_Subtract" - "PyNumber_Divide" - "PyNumber_FloorDivide" - "PyNumber_TrueDivide" - "PyNumber_Remainder" - "PyNumber_Divmod" - "PyNumber_Power" - "PyNumber_Negative" - "PyNumber_Positive" - "PyNumber_Absolute" - "PyNumber_Invert" - "PyNumber_Lshift" - "PyNumber_Rshift" - "PyNumber_And" - "PyNumber_Xor" - "PyNumber_Or" - "PyNumber_Index" - "PyNumber_InPlaceSubtract" - "PyNumber_InPlaceDivide" - "PyNumber_InPlaceFloorDivide" - "PyNumber_InPlaceTrueDivide" - "PyNumber_InPlaceRemainder" - "PyNumber_InPlacePower" - "PyNumber_InPlaceLshift" - "PyNumber_InPlaceRshift" - "PyNumber_InPlaceAnd" - "PyNumber_InPlaceXor" - "PyNumber_InPlaceOr" - "PySequence_Check" - "PySequence_Size" - "PySequence_Length" - "PySequence_DelSlice" - "PySequence_List" - "PySequence_Count" - "PySequence_Contains" - "PySequence_In" - "PySequence_Index" - "PyMapping_Check" - "PyMapping_Length" - "PyMapping_HasKeyString" - "PyMapping_HasKey" - "PyMapping_GetItemString" - "PyMapping_SetItemString" - "PyObject_IsInstance" - "PyObject_IsSubclass" - -; From python26_s.lib(boolobject) - "PyBool_FromLong" - "PyBool_Type" - "_Py_ZeroStruct" - "_Py_TrueStruct" - -; From python26_s.lib(bufferobject) - "PyBuffer_FromObject" - "PyBuffer_FromReadWriteObject" - "PyBuffer_FromMemory" - "PyBuffer_FromReadWriteMemory" - "PyBuffer_New" - "PyBuffer_Type" - -; From python26_s.lib(cellobject) - "PyCell_New" - "PyCell_Get" - "PyCell_Set" - "PyCell_Type" - -; From python26_s.lib(classobject) - "PyClass_New" - "PyClass_IsSubclass" - "PyInstance_New" - "PyInstance_NewRaw" - "PyMethod_New" - "PyMethod_Function" - "PyMethod_Self" - "PyMethod_Class" - "_PyInstance_Lookup" - "PyMethod_Fini" - "PyClass_Type" - "PyInstance_Type" - "PyMethod_Type" - -; From python26_s.lib(cobject) - "PyCObject_FromVoidPtr" - "PyCObject_FromVoidPtrAndDesc" - "PyCObject_AsVoidPtr" - "PyCObject_GetDesc" - "PyCObject_Import" - "PyCObject_SetVoidPtr" - "PyCObject_Type" - -; From python26_s.lib(codeobject) - "PyCode_New" - "PyCode_Addr2Line" - "PyCode_CheckLineNumber" - "PyCode_Type" - -; From python26_s.lib(complexobject) - "_Py_c_pow" - "_Py_c_sum" - "_Py_c_diff" - "_Py_c_neg" - "_Py_c_prod" - "_Py_c_quot" - "PyComplex_FromCComplex" - "PyComplex_FromDoubles" - "PyComplex_RealAsDouble" - "PyComplex_ImagAsDouble" - "PyComplex_AsCComplex" - "PyComplex_Type" - -; From python26_s.lib(descrobject) - "PyWrapper_New" - "PyDescr_NewMethod" - "PyDescr_NewClassMethod" - "PyDescr_NewMember" - "PyDescr_NewGetSet" - "PyDescr_NewWrapper" - "PyDictProxy_New" - "PyWrapperDescr_Type" - "PyProperty_Type" - -; From python26_s.lib(dictobject) - "PyDict_New" - "PyDict_GetItem" - "PyDict_SetItem" - "PyDict_DelItem" - "PyDict_Clear" - "PyDict_MergeFromSeq2" - "PyDict_Merge" - "PyDict_Keys" - "PyDict_Values" - "PyDict_Contains" - "PyDict_Next" - "PyDict_Items" - "PyDict_Size" - "PyDict_Copy" - "PyDict_Update" - "PyDict_GetItemString" - "PyDict_SetItemString" - "PyDict_DelItemString" - "PyDict_Type" - "PyDictIterKey_Type" - "PyDictIterValue_Type" - "PyDictIterItem_Type" - -; From python26_s.lib(enumobject) - "PyEnum_Type" - "PyReversed_Type" - -; From python26_s.lib(fileobject) - "PyFile_FromString" - "Py_UniversalNewlineFread" - "PyFile_GetLine" - "PyFile_SoftSpace" - "PyFile_WriteObject" - "PyFile_WriteString" - "PyObject_AsFileDescriptor" - "Py_UniversalNewlineFgets" - "PyFile_SetBufSize" - "PyFile_SetEncoding" - "PyFile_FromFile" - "PyFile_AsFile" - "PyFile_Name" - "PyFile_Type" - -; From python26_s.lib(floatobject) - "PyFloat_FromString" - "PyFloat_AsDouble" - "PyFloat_Fini" - "_PyFloat_Pack4" - "_PyFloat_Pack8" - "_PyFloat_Unpack4" - "_PyFloat_Unpack8" - "PyFloat_FromDouble" - "PyFloat_AsReprString" - "PyFloat_AsString" - "_PyFloat_Init" - "PyFloat_AsStringEx" - "PyFloat_Type" - -; From python26_s.lib(frameobject) - "PyFrame_New" - "PyFrame_FastToLocals" - "PyFrame_LocalsToFast" - "_PyFrame_Init" - "PyFrame_Fini" - "PyFrame_BlockSetup" - "PyFrame_BlockPop" - "PyFrame_Type" - -; From python26_s.lib(funcobject) - "PyFunction_New" - "PyFunction_GetCode" - "PyFunction_GetGlobals" - "PyFunction_GetModule" - "PyFunction_GetDefaults" - "PyFunction_SetDefaults" - "PyFunction_GetClosure" - "PyFunction_SetClosure" - "PyClassMethod_New" - "PyStaticMethod_New" - "PyFunction_Type" - "PyClassMethod_Type" - "PyStaticMethod_Type" - -; From python26_s.lib(genobject) - "PyGen_New" - "PyGen_NeedsFinalizing" - "PyGen_Type" - -; From python26_s.lib(intobject) - "PyInt_AsLong" - "PyInt_AsUnsignedLongMask" - "PyInt_AsUnsignedLongLongMask" - "PyInt_FromString" - "PyInt_AsSsize_t" - "PyInt_Fini" - "PyInt_FromUnicode" - "PyInt_FromLong" - "PyInt_FromSize_t" - "PyInt_FromSsize_t" - "PyInt_GetMax" - "_PyInt_Init" - "PyInt_Type" - -; From python26_s.lib(iterobject) - "PySeqIter_New" - "PyCallIter_New" - "PySeqIter_Type" - "PyCallIter_Type" - -; From python26_s.lib(listobject) - "PyList_New" - "PyList_Append" - "PyList_Size" - "PyList_GetItem" - "PyList_SetItem" - "PyList_Insert" - "PyList_GetSlice" - "PyList_SetSlice" - "PyList_Sort" - "PyList_Reverse" - "PyList_AsTuple" - "_PyList_Extend" - "PyList_Fini" - "PyList_Type" - "PyListIter_Type" - "PyListRevIter_Type" - -; From python26_s.lib(longobject) - "PyLong_FromDouble" - "PyLong_AsLong" - "_PyLong_AsSsize_t" - "PyLong_AsUnsignedLong" - "_PyLong_FromByteArray" - "_PyLong_AsByteArray" - "PyLong_AsDouble" - "PyLong_FromLongLong" - "PyLong_AsLongLong" - "PyLong_FromString" - "PyLong_FromLong" - "PyLong_FromUnsignedLong" - "PyLong_AsUnsignedLongMask" - "_PyLong_FromSize_t" - "_PyLong_FromSsize_t" - "_PyLong_AsScaledDouble" - "PyLong_FromVoidPtr" - "PyLong_AsVoidPtr" - "PyLong_FromUnsignedLongLong" - "PyLong_AsUnsignedLongLong" - "PyLong_AsUnsignedLongLongMask" - "PyLong_FromUnicode" - "_PyLong_Sign" - "_PyLong_NumBits" - "_PyLong_New" - "_PyLong_Copy" - "PyLong_Type" - "_PyLong_DigitValue" - -; From python26_s.lib(methodobject) - "PyCFunction_Call" - "Py_FindMethodInChain" - "PyCFunction_GetFunction" - "PyCFunction_GetSelf" - "PyCFunction_GetFlags" - "Py_FindMethod" - "PyCFunction_NewEx" - "PyCFunction_Fini" - "PyCFunction_New" - "PyCFunction_Type" - -; From python26_s.lib(moduleobject) - "PyModule_New" - "_PyModule_Clear" - "PyModule_GetDict" - "PyModule_GetName" - "PyModule_GetFilename" - "PyModule_Type" - -; From python26_s.lib(object) - "Py_DivisionWarningFlag" - "PyObject_Str" - "PyObject_Repr" - "_PyObject_Str" - "PyObject_Unicode" - "PyObject_GetAttr" - "PyObject_IsTrue" - "PyNumber_CoerceEx" - "PyObject_Compare" - "PyObject_RichCompare" - "_Py_HashDouble" - "PyObject_Hash" - "PyObject_SetAttr" - "PyObject_GenericGetAttr" - "PyObject_GenericSetAttr" - "PyCallable_Check" - "PyObject_Dir" - "PyMem_Malloc" - "PyMem_Realloc" - "PyMem_Free" - "PyObject_Print" - "_PyObject_Dump" - "PyObject_RichCompareBool" - "PyObject_GetAttrString" - "PyObject_SetAttrString" - "PyObject_HasAttrString" - "PyObject_HasAttr" - "_PyObject_GetDictPtr" - "PyObject_SelfIter" - "PyObject_Not" - "PyNumber_Coerce" - "Py_ReprEnter" - "Py_ReprLeave" - "_Py_HashPointer" - "Py_IncRef" - "Py_DecRef" - "_PyTrash_deposit_object" - "_PyTrash_destroy_chain" - "PyObject_Init" - "PyObject_InitVar" - "_PyObject_New" - "_PyObject_NewVar" - "_PyObject_Del" - "_Py_ReadyTypes" - "_Py_SwappedOp" - "_Py_NotImplementedStruct" - "_Py_NoneStruct" - "_Py_cobject_hack" - "_Py_abstract_hack" - "_PyTrash_delete_nesting" - "_PyTrash_delete_later" - -; From python26_s.lib(obmalloc) - "PyObject_Malloc" - "PyObject_Free" - "PyObject_Realloc" - -; From python26_s.lib(rangeobject) - "PyRange_Type" - -; From python26_s.lib(setobject) - "PySet_Pop" - "PySet_New" - "PyFrozenSet_New" - "PySet_Size" - "PySet_Clear" - "PySet_Contains" - "PySet_Discard" - "PySet_Add" - "_PySet_Next" - "_PySet_Update" - "PySet_Fini" - "PySet_Type" - "PyFrozenSet_Type" - -; From python26_s.lib(sliceobject) - "_PySlice_FromIndices" - "PySlice_GetIndices" - "PySlice_GetIndicesEx" - "PySlice_New" - "_Py_EllipsisObject" - "PySlice_Type" - -; From python26_s.lib(stringobject) - "PyString_FromStringAndSize" - "PyString_InternInPlace" - "PyString_FromString" - "PyString_FromFormatV" - "PyString_AsString" - "_PyString_Resize" - "PyString_FromFormat" - "PyString_AsDecodedString" - "PyString_AsEncodedString" - "PyString_DecodeEscape" - "PyString_Repr" - "PyString_AsStringAndSize" - "_PyString_FormatLong" - "PyString_Format" - "_Py_ReleaseInternedStrings" - "PyString_Size" - "PyString_Concat" - "PyString_ConcatAndDel" - "_PyString_Eq" - "PyString_InternImmortal" - "PyString_InternFromString" - "_PyString_Join" - "PyString_Decode" - "PyString_Encode" - "PyString_AsEncodedObject" - "PyString_AsDecodedObject" - "PyString_Fini" - "PyString_Type" - "PyBaseString_Type" - -; From python26_s.lib(structseq) - "PyStructSequence_InitType" - "PyStructSequence_New" - "PyStructSequence_UnnamedField" - -; From python26_s.lib(tupleobject) - "PyTuple_New" - "PyTuple_Pack" - "_PyTuple_Resize" - "PyTuple_Size" - "PyTuple_GetItem" - "PyTuple_SetItem" - "PyTuple_GetSlice" - "PyTuple_Fini" - "PyTuple_Type" - "PyTupleIter_Type" - -; From python26_s.lib(typeobject) - "PyType_IsSubtype" - "_PyType_Lookup" - "PyType_Ready" - "PyType_GenericAlloc" - "_PyObject_SlotCompare" - "PyType_GenericNew" - "PyType_Type" - "PyBaseObject_Type" - "PySuper_Type" - -; From python26_s.lib(unicodeobject) - "PyUnicodeUCS2_Resize" - "PyUnicodeUCS2_FromOrdinal" - "PyUnicodeUCS2_FromObject" - "PyUnicodeUCS2_FromEncodedObject" - "PyUnicodeUCS2_Decode" - "PyUnicodeUCS2_GetDefaultEncoding" - "PyUnicodeUCS2_DecodeUTF8" - "PyUnicodeUCS2_DecodeLatin1" - "PyUnicodeUCS2_DecodeASCII" - "PyUnicodeUCS2_AsEncodedString" - "PyUnicodeUCS2_AsUTF8String" - "PyUnicodeUCS2_AsLatin1String" - "PyUnicodeUCS2_AsASCIIString" - "PyUnicode_DecodeUTF7" - "PyUnicode_EncodeUTF7" - "PyUnicodeUCS2_DecodeUTF8Stateful" - "PyUnicodeUCS2_EncodeUTF8" - "PyUnicodeUCS2_DecodeUTF16Stateful" - "PyUnicodeUCS2_AsUTF16String" - "PyUnicodeUCS2_DecodeUnicodeEscape" - "PyUnicodeUCS2_DecodeRawUnicodeEscape" - "PyUnicodeUCS2_EncodeRawUnicodeEscape" - "_PyUnicode_DecodeUnicodeInternal" - "PyUnicodeUCS2_DecodeCharmap" - "PyUnicode_BuildEncodingMap" - "PyUnicodeUCS2_EncodeCharmap" - "PyUnicodeUCS2_TranslateCharmap" - "PyUnicodeUCS2_EncodeDecimal" - "PyUnicodeUCS2_Count" - "PyUnicodeUCS2_Find" - "PyUnicodeUCS2_Join" - "PyUnicodeUCS2_Splitlines" - "PyUnicodeUCS2_Compare" - "PyUnicodeUCS2_Contains" - "PyUnicodeUCS2_Concat" - "_PyUnicode_XStrip" - "PyUnicodeUCS2_Replace" - "PyUnicodeUCS2_Split" - "PyUnicodeUCS2_RSplit" - "PyUnicodeUCS2_Format" - "_PyUnicodeUCS2_Init" - "_PyUnicodeUCS2_Fini" - "PyUnicodeUCS2_FromUnicode" - "PyUnicodeUCS2_AsUnicode" - "PyUnicodeUCS2_GetSize" - "PyUnicodeUCS2_GetMax" - "_PyUnicodeUCS2_AsDefaultEncodedString" - "PyUnicodeUCS2_SetDefaultEncoding" - "PyUnicodeUCS2_Encode" - "PyUnicodeUCS2_AsEncodedObject" - "PyUnicodeUCS2_DecodeUTF16" - "PyUnicodeUCS2_EncodeUTF16" - "PyUnicodeUCS2_AsUnicodeEscapeString" - "PyUnicodeUCS2_EncodeUnicodeEscape" - "PyUnicodeUCS2_AsRawUnicodeEscapeString" - "PyUnicodeUCS2_EncodeLatin1" - "PyUnicodeUCS2_EncodeASCII" - "PyUnicodeUCS2_AsCharmapString" - "PyUnicodeUCS2_Partition" - "PyUnicodeUCS2_RPartition" - "PyUnicodeUCS2_Translate" - "PyUnicodeUCS2_Tailmatch" - "PyUnicode_AsDecodedObject" - "PyUnicode_Type" - -; From python26_s.lib(unicodectype) - "_PyUnicode_TypeRecords" - "_PyUnicodeUCS2_ToNumeric" - "_PyUnicodeUCS2_IsLowercase" - "_PyUnicodeUCS2_IsUppercase" - "_PyUnicodeUCS2_IsTitlecase" - "_PyUnicodeUCS2_IsWhitespace" - "_PyUnicodeUCS2_IsLinebreak" - "_PyUnicodeUCS2_ToLowercase" - "_PyUnicodeUCS2_ToUppercase" - "_PyUnicodeUCS2_ToTitlecase" - "_PyUnicodeUCS2_ToDecimalDigit" - "_PyUnicodeUCS2_ToDigit" - "_PyUnicodeUCS2_IsDecimalDigit" - "_PyUnicodeUCS2_IsDigit" - "_PyUnicodeUCS2_IsNumeric" - "_PyUnicodeUCS2_IsAlpha" - -; From python26_s.lib(weakrefobject) - "PyWeakref_NewRef" - "PyWeakref_NewProxy" - "PyObject_ClearWeakRefs" - "PyWeakref_GetObject" - "_PyWeakref_GetWeakrefCount" - "_PyWeakref_ClearRef" - "_PyWeakref_RefType" - "_PyWeakref_ProxyType" - "_PyWeakref_CallableProxyType" - -; From python26_s.lib(Python-ast) -; "init_ast" - "Module" - "Interactive" - "Expression" - "Suite" - "FunctionDef" - "ClassDef" - "Return" - "Delete" - "Assign" - "AugAssign" - "Print" - "For" - "While" - "If" - "With" - "Raise" - "TryExcept" - "TryFinally" - "Assert" - "Import" - "ImportFrom" - "Exec" - "Global" - "Expr" - "Pass" - "Break" - "Continue" - "BoolOp" - "BinOp" - "UnaryOp" - "Lambda" - "IfExp" - "Dict" - "ListComp" - "GeneratorExp" - "Yield" - "Compare" - "Call" - "Repr" - "Num" - "Str" - "Attribute" - "Subscript" - "Name" - "List" - "Tuple" - "Ellipsis" - "Slice" - "ExtSlice" - "Index" - "comprehension" - "excepthandler" - "arguments" - "keyword" - "alias" - "PyAST_mod2obj" - -; From python26_s.lib(asdl) - "asdl_seq_new" - "asdl_int_seq_new" - -; From python26_s.lib(ast) - "PyAST_FromNode" - -; From python26_s.lib(bltinmodule) - "_PyBuiltin_Init" - "Py_FileSystemDefaultEncoding" - -; From python26_s.lib(exceptions) - "PyUnicodeEncodeError_GetStart" - "PyUnicodeDecodeError_GetStart" - "PyUnicodeEncodeError_GetEnd" - "PyUnicodeDecodeError_GetEnd" - "_PyExc_Init" - "PyUnicodeDecodeError_Create" - "PyUnicodeEncodeError_Create" - "PyUnicodeTranslateError_Create" - "PyUnicodeEncodeError_GetEncoding" - "PyUnicodeDecodeError_GetEncoding" - "PyUnicodeEncodeError_GetObject" - "PyUnicodeDecodeError_GetObject" - "PyUnicodeTranslateError_GetObject" - "PyUnicodeTranslateError_GetStart" - "PyUnicodeEncodeError_SetStart" - "PyUnicodeDecodeError_SetStart" - "PyUnicodeTranslateError_SetStart" - "PyUnicodeTranslateError_GetEnd" - "PyUnicodeEncodeError_SetEnd" - "PyUnicodeDecodeError_SetEnd" - "PyUnicodeTranslateError_SetEnd" - "PyUnicodeEncodeError_GetReason" - "PyUnicodeDecodeError_GetReason" - "PyUnicodeTranslateError_GetReason" - "PyUnicodeEncodeError_SetReason" - "PyUnicodeDecodeError_SetReason" - "PyUnicodeTranslateError_SetReason" - "_PyExc_Fini" - "PyExc_BaseException" - "PyExc_Exception" - "PyExc_StandardError" - "PyExc_TypeError" - "PyExc_StopIteration" - "PyExc_GeneratorExit" - "PyExc_SystemExit" - "PyExc_KeyboardInterrupt" - "PyExc_ImportError" - "PyExc_EnvironmentError" - "PyExc_IOError" - "PyExc_OSError" - "PyExc_EOFError" - "PyExc_RuntimeError" - "PyExc_NotImplementedError" - "PyExc_NameError" - "PyExc_UnboundLocalError" - "PyExc_AttributeError" - "PyExc_IndexError" - "PyExc_SyntaxError" - "PyExc_IndentationError" - "PyExc_TabError" - "PyExc_LookupError" - "PyExc_KeyError" - "PyExc_ValueError" - "PyExc_UnicodeError" - "PyExc_UnicodeEncodeError" - "PyExc_UnicodeDecodeError" - "PyExc_UnicodeTranslateError" - "PyExc_AssertionError" - "PyExc_ArithmeticError" - "PyExc_FloatingPointError" - "PyExc_OverflowError" - "PyExc_ZeroDivisionError" - "PyExc_SystemError" - "PyExc_ReferenceError" - "PyExc_MemoryError" - "PyExc_Warning" - "PyExc_UserWarning" - "PyExc_DeprecationWarning" - "PyExc_PendingDeprecationWarning" - "PyExc_SyntaxWarning" - "PyExc_RuntimeWarning" - "PyExc_FutureWarning" - "PyExc_ImportWarning" - "PyExc_MemoryErrorInst" - -; From python26_s.lib(ceval) - "PyEval_EvalFrameEx" - "PyEval_CallObjectWithKeywords" - "PyEval_EvalCodeEx" - "PyEval_GetFrame" - "PyEval_CallObject" - "PyEval_SetProfile" - "PyEval_SetTrace" - "PyEval_GetBuiltins" - "PyEval_GetGlobals" - "PyEval_GetLocals" - "PyEval_GetRestricted" - "PyEval_MergeCompilerFlags" - "Py_FlushLine" - "Py_AddPendingCall" - "Py_MakePendingCalls" - "Py_SetRecursionLimit" - "Py_GetRecursionLimit" - "_Py_CheckRecursiveCall" - "PyEval_GetFuncName" - "PyEval_GetFuncDesc" - "PyEval_GetCallStats" - "PyEval_EvalFrame" - "PyEval_SaveThread" - "PyEval_RestoreThread" - "PyEval_ThreadsInitialized" - "PyEval_InitThreads" - "PyEval_AcquireLock" - "PyEval_ReleaseLock" - "PyEval_AcquireThread" - "PyEval_ReleaseThread" - "PyEval_ReInitThreads" - "_PyEval_SliceIndex" - "PyEval_EvalCode" - "_PyEval_CallTracing" - "_Py_CheckRecursionLimit" - "_Py_CheckInterval" - "_Py_Ticker" - -; From python26_s.lib(compile) - "_Py_Mangle" - "PyAST_Compile" - "PyNode_Compile" - "Py_OptimizeFlag" - -; From python26_s.lib(codecs) - "_PyCodec_Lookup" - "PyCodec_Encode" - "PyCodec_Decode" - "PyCodec_IgnoreErrors" - "PyCodec_ReplaceErrors" - "PyCodec_XMLCharRefReplaceErrors" - "PyCodec_BackslashReplaceErrors" - "PyCodec_Register" - "PyCodec_Encoder" - "PyCodec_Decoder" - "PyCodec_IncrementalEncoder" - "PyCodec_IncrementalDecoder" - "PyCodec_StreamReader" - "PyCodec_StreamWriter" - "PyCodec_RegisterError" - "PyCodec_LookupError" - "PyCodec_StrictErrors" - -; From python26_s.lib(errors) - "PyErr_SetNone" - "PyErr_SetString" - "PyErr_GivenExceptionMatches" - "PyErr_NormalizeException" - "PyErr_Fetch" - "PyErr_Clear" - "PyErr_NoMemory" - "PyErr_SetFromErrnoWithFilenameObject" - "PyErr_Format" - "PyErr_NewException" - "PyErr_WriteUnraisable" - "PyErr_SyntaxLocation" - "PyErr_ProgramText" - "PyErr_SetObject" - "PyErr_Occurred" - "PyErr_Restore" - "PyErr_ExceptionMatches" - "PyErr_BadArgument" - "PyErr_SetFromErrno" - "PyErr_SetFromErrnoWithFilename" - "PyErr_BadInternalCall" - "_PyErr_BadInternalCall" - "PyErr_Warn" - "PyErr_WarnExplicit" - -; From python26_s.lib(frozen) - "PyImport_FrozenModules" - -; From python26_s.lib(frozenmain) - "Py_FrozenMain" - -; From python26_s.lib(future) - "PyFuture_FromAST" - -; From python26_s.lib(getargs) - "PyArg_Parse" - "_PyArg_Parse_SizeT" - "PyArg_ParseTuple" - "_PyArg_ParseTuple_SizeT" - "PyArg_ParseTupleAndKeywords" - "_PyArg_ParseTupleAndKeywords_SizeT" - "PyArg_UnpackTuple" - "_PyArg_NoKeywords" - "PyArg_VaParse" - "PyArg_VaParseTupleAndKeywords" - "_PyArg_VaParse_SizeT" - "_PyArg_VaParseTupleAndKeywords_SizeT" - -; From python26_s.lib(getcompiler) - "Py_GetCompiler" - -; From python26_s.lib(getcopyright) - "Py_GetCopyright" - -; From python26_s.lib(getmtime) - "PyOS_GetLastModificationTime" - -; From python26_s.lib(getplatform) - "Py_GetPlatform" - -; From python26_s.lib(getversion) - "Py_GetVersion" - -; From python26_s.lib(graminit) - "_PyParser_Grammar" - -; From python26_s.lib(import) - "_PyImport_Init" - "_PyImportHooks_Init" - "PyImport_ImportModule" - "PyImport_Cleanup" - "_PyImport_FixupExtension" - "PyImport_AddModule" - "PyImport_ExecCodeModuleEx" - "PyImport_ImportFrozenModule" - "PyImport_ImportModuleEx" - "PyImport_ImportModuleLevel" - "PyImport_ReloadModule" - "PyImport_Import" -; "initimp" - "_PyImport_Fini" - "PyImport_GetMagicNumber" - "PyImport_ExecCodeModule" - "PyImport_GetModuleDict" - "_PyImport_FindModule" - "_PyImport_IsScript" - "_PyImport_ReInitLock" - "_PyImport_FindExtension" - "PyImport_AppendInittab" - "PyImport_ExtendInittab" - "PyImport_Inittab" - "_PyImport_Filetab" - -; From python26_s.lib(importdl) - "_PyImport_LoadDynamicModule" - -; From python26_s.lib(marshal) - "PyMarshal_ReadLongFromFile" - "PyMarshal_WriteObjectToString" - "PyMarshal_WriteLongToFile" - "PyMarshal_WriteObjectToFile" - "PyMarshal_ReadShortFromFile" - "PyMarshal_ReadObjectFromFile" - "PyMarshal_ReadLastObjectFromFile" - "PyMarshal_ReadObjectFromString" - "PyMarshal_Init" - -; From python26_s.lib(modsupport) - "Py_InitModule4" - "Py_BuildValue" - "_Py_BuildValue_SizeT" - "PyEval_CallFunction" - "PyEval_CallMethod" - "_Py_VaBuildValue_SizeT" - "Py_VaBuildValue" - "PyModule_AddObject" - "PyModule_AddIntConstant" - "PyModule_AddStringConstant" - "_Py_PackageContext" - -; From python26_s.lib(mysnprintf) - "PyOS_snprintf" - "PyOS_vsnprintf" - -; From python26_s.lib(mystrtoul) - "PyOS_strtoul" - "PyOS_strtol" - -; From python26_s.lib(pyarena) - "PyArena_New" - "PyArena_Free" - "PyArena_Malloc" - "PyArena_AddPyObject" - -; From python26_s.lib(pyfpe) - "PyFPE_dummy" - -; From python26_s.lib(pystate) - "PyInterpreterState_Clear" - "PyThreadState_Clear" - "_PyThread_CurrentFrames" - "PyGILState_Ensure" - "PyGILState_Release" - "PyInterpreterState_New" - "PyInterpreterState_Delete" - "PyThreadState_Delete" - "PyThreadState_New" - "PyThreadState_DeleteCurrent" - "PyThreadState_Get" - "PyThreadState_Swap" - "PyThreadState_GetDict" - "PyThreadState_SetAsyncExc" - "PyGILState_GetThisThreadState" - "PyInterpreterState_Head" - "PyInterpreterState_Next" - "PyInterpreterState_ThreadHead" - "PyThreadState_Next" - "_PyGILState_Init" - "_PyGILState_Fini" - "_PyThreadState_Current" - "_PyThreadState_GetFrame" - -; From python26_s.lib(pystrtod) - "PyOS_ascii_strtod" - "PyOS_ascii_formatd" - "PyOS_ascii_atof" - -; From python26_s.lib(pythonrun) - "Py_IgnoreEnvironmentFlag" - "Py_DebugFlag" - "Py_VerboseFlag" - "Py_NoSiteFlag" - "Py_InteractiveFlag" - "Py_FrozenFlag" - "Py_InitializeEx" - "Py_FatalError" - "Py_NewInterpreter" - "PyErr_Print" - "PyRun_InteractiveOneFlags" - "PyParser_ASTFromFile" - "PyRun_SimpleFileExFlags" - "PyRun_FileExFlags" - "Py_Exit" - "PyErr_PrintEx" - "PyErr_Display" - "Py_SetProgramName" - "Py_GetProgramName" - "Py_SetPythonHome" - "Py_GetPythonHome" - "Py_Initialize" - "Py_Finalize" - "Py_IsInitialized" - "Py_EndInterpreter" - "PyRun_AnyFileFlags" - "Py_FdIsInteractive" - "PyRun_InteractiveLoopFlags" - "PyRun_AnyFileExFlags" - "PyRun_SimpleStringFlags" - "PyRun_StringFlags" - "PyParser_ASTFromString" - "PyParser_SimpleParseStringFlags" - "PyParser_SimpleParseFileFlags" - "Py_CompileStringFlags" - "Py_SymtableString" - "Py_AtExit" - "PyOS_getsig" - "PyOS_setsig" - "PyParser_SetError" - "PyModule_GetWarningsModule" - "PyParser_SimpleParseStringFlagsFilename" - "PyParser_SimpleParseStringFilename" - "PyParser_SimpleParseFile" - "PyParser_SimpleParseString" - "PyRun_AnyFile" - "PyRun_AnyFileEx" - "PyRun_File" - "PyRun_FileEx" - "PyRun_FileFlags" - "PyRun_SimpleFile" - "PyRun_SimpleFileEx" - "PyRun_String" - "PyRun_SimpleString" - "Py_CompileString" - "PyRun_InteractiveOne" - "PyRun_InteractiveLoop" - "Py_UseClassExceptionsFlag" - "Py_UnicodeFlag" - "_Py_QnewFlag" - -; From python26_s.lib(structmember) - "PyMember_Get" - "PyMember_GetOne" - "PyMember_SetOne" - "PyMember_Set" - -; From python26_s.lib(symtable) - "PySymtable_Build" - "PySymtable_Free" - "PyST_GetScope" - "PySymtable_Lookup" - "PySTEntry_Type" - -; From python26_s.lib(sysmodule) - "_PySys_Init" - "PySys_WriteStderr" - "PySys_SetPath" - "PySys_SetArgv" - "PySys_WriteStdout" - "Py_SubversionRevision" - "Py_SubversionShortBranch" - "PySys_GetObject" - "PySys_SetObject" - "PySys_GetFile" - "PySys_ResetWarnOptions" - "PySys_AddWarnOption" - -; From python26_s.lib(traceback) - "PyTraceBack_Here" - "PyTraceBack_Print" - "PyTraceBack_Type" - -; From python26_s.lib(getopt) - "_PyOS_GetOpt" - "_PyOS_opterr" - "_PyOS_optind" - "_PyOS_optarg" - -; From python26_s.lib(dynload_shlib) - "_PyImport_DynLoadFiletab" - "_PyImport_GetDynLoadFunc" - -; From python26_s.lib(thread) - "PyThread_delete_key_value" - "PyThread_init_thread" - "PyThread_start_new_thread" - "PyThread_exit_thread" - "PyThread_get_thread_ident" - "PyThread_allocate_lock" - "PyThread_free_lock" - "PyThread_acquire_lock" - "PyThread_release_lock" - "PyThread_get_stacksize" - "PyThread_set_stacksize" - "PyThread_create_key" - "PyThread_delete_key" - "PyThread_set_key_value" - "PyThread_get_key_value" - "PyThread__exit_thread" - -; From python26_s.lib(gcmodule) -; "initgc" - "_PyObject_GC_New" - "_PyObject_GC_NewVar" - "PyGC_Collect" - "_PyObject_GC_Resize" - "_PyObject_GC_Malloc" - "PyObject_GC_Track" - "PyObject_GC_UnTrack" - "PyObject_GC_Del" - "_PyGC_Dump" - "_PyObject_GC_Track" - "_PyObject_GC_UnTrack" - "_PyObject_GC_Del" - "_PyGC_generation0" - -; From python26_s.lib(signalmodule) -; "initsignal" - "PyErr_CheckSignals" - "PyErr_SetInterrupt" - "PyOS_FiniInterrupts" - "PyOS_InterruptOccurred" - "PyOS_InitInterrupts" - "PyOS_AfterFork" - -; From python26_s.lib(posixmodule) -; "initos2" - -; From python26_s.lib(threadmodule) -; "initthread" - -; From python26_s.lib(arraymodule) -; "initarray" -; "array_methods" - -; From python26_s.lib(binascii) -; "initbinascii" - -; From python26_s.lib(cmathmodule) -; "initcmath" - -; From python26_s.lib(_codecsmodule) -; "init_codecs" - -; From python26_s.lib(collectionsmodule) -; "initcollections" - "dequeiter_type" - "dequereviter_type" - -; From python26_s.lib(cPickle) -; "initcPickle" -; "fast_save_leave" - -; From python26_s.lib(cStringIO) -; "initcStringIO" - -; From python26_s.lib(_csv) -; "init_csv" - -; From python26_s.lib(datetimemodule) -; "initdatetime" - -; From python26_s.lib(dlmodule) -; "initdl" - -; From python26_s.lib(errnomodule) -; "initerrno" - -; From python26_s.lib(fcntlmodule) -; "initfcntl" - -; From python26_s.lib(_functoolsmodule) -; "init_functools" - -; From python26_s.lib(_heapqmodule) -; "init_heapq" - -; From python26_s.lib(imageop) -; "initimageop" - -; From python26_s.lib(itertoolsmodule) -; "inititertools" - -; From python26_s.lib(_localemodule) -; "init_locale" - -; From python26_s.lib(mathmodule) -; "initmath" - -; From python26_s.lib(md5) - "md5_finish" - "md5_init" - "md5_append" - -; From python26_s.lib(md5module) -; "init_md5" - -; From python26_s.lib(operator) -; "initoperator" - -; From python26_s.lib(_randommodule) -; "init_random" - -; From python26_s.lib(rgbimgmodule) -; "initrgbimg" - -; From python26_s.lib(shamodule) -; "init_sha" - -; From python26_s.lib(sha256module) -; "init_sha256" - -; From python26_s.lib(sha512module) -; "init_sha512" - -; From python26_s.lib(_sre) -; "init_sre" - -; From python26_s.lib(stropmodule) -; "initstrop" - -; From python26_s.lib(_struct) -; "init_struct" - -; From python26_s.lib(symtablemodule) -; "init_symtable" - -; From python26_s.lib(termios) -; "inittermios" - -; From python26_s.lib(timemodule) -; "inittime" - "_PyTime_DoubleToTimet" -; "inittimezone" - -; From python26_s.lib(timingmodule) -; "inittiming" - -; From python26_s.lib(_weakref) -; "init_weakref" - -; From python26_s.lib(xxsubtype) -; "initxxsubtype" - -; From python26_s.lib(zipimport) -; "initzipimport" From python-checkins at python.org Sun Feb 3 08:07:32 2008 From: python-checkins at python.org (andrew.macintyre) Date: Sun, 3 Feb 2008 08:07:32 +0100 (CET) Subject: [Python-checkins] r60542 - python/trunk/Modules/posixmodule.c Message-ID: <20080203070732.023B61E4018@bag.python.org> Author: andrew.macintyre Date: Sun Feb 3 08:07:31 2008 New Revision: 60542 Modified: python/trunk/Modules/posixmodule.c Log: The wrapper function is supposed to be for spawnvpe() so that's what we should call [this wrapper only available on OS/2]. Backport candidate to 2.5. Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Sun Feb 3 08:07:31 2008 @@ -3538,9 +3538,9 @@ Py_BEGIN_ALLOW_THREADS #if defined(PYCC_GCC) - spawnval = spawnve(mode, path, argvlist, envlist); + spawnval = spawnvpe(mode, path, argvlist, envlist); #else - spawnval = _spawnve(mode, path, argvlist, envlist); + spawnval = _spawnvpe(mode, path, argvlist, envlist); #endif Py_END_ALLOW_THREADS From python-checkins at python.org Sun Feb 3 08:20:39 2008 From: python-checkins at python.org (andrew.macintyre) Date: Sun, 3 Feb 2008 08:20:39 +0100 (CET) Subject: [Python-checkins] r60543 - python/branches/release25-maint/Modules/posixmodule.c Message-ID: <20080203072039.763F41E4018@bag.python.org> Author: andrew.macintyre Date: Sun Feb 3 08:20:39 2008 New Revision: 60543 Modified: python/branches/release25-maint/Modules/posixmodule.c Log: Backport 60542: The wrapper function is supposed to be for spawnvpe() so that's what we should call [this wrapper only available on OS/2]. Modified: python/branches/release25-maint/Modules/posixmodule.c ============================================================================== --- python/branches/release25-maint/Modules/posixmodule.c (original) +++ python/branches/release25-maint/Modules/posixmodule.c Sun Feb 3 08:20:39 2008 @@ -3412,9 +3412,9 @@ Py_BEGIN_ALLOW_THREADS #if defined(PYCC_GCC) - spawnval = spawnve(mode, path, argvlist, envlist); + spawnval = spawnvpe(mode, path, argvlist, envlist); #else - spawnval = _spawnve(mode, path, argvlist, envlist); + spawnval = _spawnvpe(mode, path, argvlist, envlist); #endif Py_END_ALLOW_THREADS From python-checkins at python.org Sun Feb 3 08:20:54 2008 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 3 Feb 2008 08:20:54 +0100 (CET) Subject: [Python-checkins] r60544 - in python/trunk: Misc/NEWS Modules/_bsddb.c Message-ID: <20080203072054.1347B1E4018@bag.python.org> Author: gregory.p.smith Date: Sun Feb 3 08:20:53 2008 New Revision: 60544 Modified: python/trunk/Misc/NEWS python/trunk/Modules/_bsddb.c Log: Merge this fix from the pybsddb tree: r293 | jcea | 2008-01-31 01:08:19 -0800 (Thu, 31 Jan 2008) | 4 lines Solved memory leak when using cursors with databases without environment. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 3 08:20:53 2008 @@ -1270,6 +1270,9 @@ - Bug #1372: zlibmodule.c: int overflow in PyZlib_decompress +- bsddb module: Fix memory leak when using database cursors on + databases without a DBEnv. + Tests ----- Modified: python/trunk/Modules/_bsddb.c ============================================================================== --- python/trunk/Modules/_bsddb.c (original) +++ python/trunk/Modules/_bsddb.c Sun Feb 3 08:20:53 2008 @@ -824,7 +824,6 @@ } if (self->dbc != NULL) { - MYDB_BEGIN_ALLOW_THREADS; /* If the underlying database has been closed, we don't need to do anything. If the environment has been closed we need to leak, as BerkeleyDB will crash trying to access @@ -833,9 +832,14 @@ a database open. */ if (self->mydb->db && self->mydb->myenvobj && !self->mydb->myenvobj->closed) + /* test for: open db + no environment or non-closed environment */ + if (self->mydb->db && (!self->mydb->myenvobj || (self->mydb->myenvobj && + !self->mydb->myenvobj->closed))) { + MYDB_BEGIN_ALLOW_THREADS; err = self->dbc->c_close(self->dbc); + MYDB_END_ALLOW_THREADS; + } self->dbc = NULL; - MYDB_END_ALLOW_THREADS; } Py_XDECREF( self->mydb ); PyObject_Del(self); From python-checkins at python.org Sun Feb 3 08:26:24 2008 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 3 Feb 2008 08:26:24 +0100 (CET) Subject: [Python-checkins] r60545 - in python/branches/release25-maint: Misc/NEWS Modules/_bsddb.c Message-ID: <20080203072624.0EAB41E4018@bag.python.org> Author: gregory.p.smith Date: Sun Feb 3 08:26:23 2008 New Revision: 60545 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/_bsddb.c Log: backport r60544 from trunk: Merge this fix from the pybsddb tree: r293 | jcea | 2008-01-31 01:08:19 -0800 (Thu, 31 Jan 2008) | 4 lines Solved memory leak when using cursors with databases without environment. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sun Feb 3 08:26:23 2008 @@ -244,6 +244,9 @@ - Bug #1372: zlibmodule.c: int overflow in PyZlib_decompress +- bsddb module: Fix memory leak when using database cursors on + databases without a DBEnv. + Documentation ------------- Modified: python/branches/release25-maint/Modules/_bsddb.c ============================================================================== --- python/branches/release25-maint/Modules/_bsddb.c (original) +++ python/branches/release25-maint/Modules/_bsddb.c Sun Feb 3 08:26:23 2008 @@ -913,7 +913,6 @@ #endif if (self->dbc != NULL) { - MYDB_BEGIN_ALLOW_THREADS; /* If the underlying database has been closed, we don't need to do anything. If the environment has been closed we need to leak, as BerkeleyDB will crash trying to access @@ -922,9 +921,14 @@ a database open. */ if (self->mydb->db && self->mydb->myenvobj && !self->mydb->myenvobj->closed) + /* test for: open db + no environment or non-closed environment */ + if (self->mydb->db && (!self->mydb->myenvobj || (self->mydb->myenvobj && + !self->mydb->myenvobj->closed))) { + MYDB_BEGIN_ALLOW_THREADS; err = self->dbc->c_close(self->dbc); + MYDB_END_ALLOW_THREADS; + } self->dbc = NULL; - MYDB_END_ALLOW_THREADS; } Py_XDECREF( self->mydb ); PyObject_Del(self); From python-checkins at python.org Sun Feb 3 09:01:46 2008 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 3 Feb 2008 09:01:46 +0100 (CET) Subject: [Python-checkins] r60546 - python/trunk/setup.py Message-ID: <20080203080146.B436F1E4018@bag.python.org> Author: gregory.p.smith Date: Sun Feb 3 09:01:46 2008 New Revision: 60546 Modified: python/trunk/setup.py Log: remove a repeated occurance of a hardcoded berkeleydb library version number Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sun Feb 3 09:01:46 2008 @@ -727,10 +727,10 @@ for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4,5,6): + for x in range(max_db_ver[1]+1): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) - for x in (2,3): + for x in (3,): std_variants.append(os.path.join(dn, "db3%d"%x)) std_variants.append(os.path.join(dn, "db3.%d"%x)) From python-checkins at python.org Sun Feb 3 09:10:20 2008 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 3 Feb 2008 09:10:20 +0100 (CET) Subject: [Python-checkins] r60547 - python/branches/release25-maint/setup.py Message-ID: <20080203081020.5A6981E4018@bag.python.org> Author: gregory.p.smith Date: Sun Feb 3 09:10:20 2008 New Revision: 60547 Modified: python/branches/release25-maint/setup.py Log: Disable linking against BerkeleyDB 4.6 by default as it has proven to be a buggy release on many platforms. Modified: python/branches/release25-maint/setup.py ============================================================================== --- python/branches/release25-maint/setup.py (original) +++ python/branches/release25-maint/setup.py Sun Feb 3 09:10:20 2008 @@ -608,7 +608,10 @@ # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 6) + max_db_ver = (4, 5) + # NOTE: while the _bsddb.c code links against BerkeleyDB 4.6.x + # we leave that version disabled by default as it has proven to be + # quite a buggy library release on many platforms. min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? @@ -625,7 +628,7 @@ '/sw/include/db3', ] # 4.x minor number specific paths - for x in (0,1,2,3,4,5,6): + for x in range(max_db_ver[1]+1): db_inc_paths.append('/usr/include/db4%d' % x) db_inc_paths.append('/usr/include/db4.%d' % x) db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x) @@ -648,7 +651,7 @@ for dn in inc_dirs: std_variants.append(os.path.join(dn, 'db3')) std_variants.append(os.path.join(dn, 'db4')) - for x in (0,1,2,3,4,5,6): + for x in range(max_db_ver[1]+1): std_variants.append(os.path.join(dn, "db4%d"%x)) std_variants.append(os.path.join(dn, "db4.%d"%x)) for x in (2,3): From buildbot at python.org Sun Feb 3 09:14:25 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 08:14:25 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080203081425.A46211E4018@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2466 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.macintyre BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From martin at v.loewis.de Sun Feb 3 09:17:05 2008 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Sun, 03 Feb 2008 09:17:05 +0100 Subject: [Python-checkins] r60546 - python/trunk/setup.py In-Reply-To: <20080203080146.B436F1E4018@bag.python.org> References: <20080203080146.B436F1E4018@bag.python.org> Message-ID: <47A57881.2000206@v.loewis.de> > remove a repeated occurance of a hardcoded berkeleydb library version number > > - for x in (2,3): > + for x in (3,): > std_variants.append(os.path.join(dn, "db3%d"%x)) > std_variants.append(os.path.join(dn, "db3.%d"%x)) Why does that also remove support for db 3.2? Regards, Martin From buildbot at python.org Sun Feb 3 09:27:54 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 08:27:54 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080203082755.19D3A1E4018@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/592 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.macintyre BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 09:57:59 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 08:57:59 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080203085759.B155D1E4018@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/99 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: gregory.p.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_ctypes make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 10:28:59 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 09:28:59 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 2.5 Message-ID: <20080203092859.85C211E4018@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%202.5/builds/124 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.macintyre BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 10:52:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 09:52:55 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux 2.5 Message-ID: <20080203095255.3A9AD1E4018@bag.python.org> The Buildbot has detected a new failure of ARM Linux 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%202.5/builds/5 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-arm Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.macintyre BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 10:58:03 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 10:58:03 +0100 (CET) Subject: [Python-checkins] r60548 - in python/branches/release25-maint: Misc/NEWS setup.py Message-ID: <20080203095803.5B1DB1E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 10:58:02 2008 New Revision: 60548 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/setup.py Log: Backport r60537: have order of CPPFLAGS and LDFLAGS be honored. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sun Feb 3 10:58:02 2008 @@ -260,6 +260,9 @@ Build ----- +- Have the search path for building extensions follow the declared order in + $CPPFLAGS and $LDFLAGS. + - Bug #1234: Fixed semaphore errors on AIX 5.2 - Bug #1699: Define _BSD_SOURCE only on OpenBSD. Modified: python/branches/release25-maint/setup.py ============================================================================== --- python/branches/release25-maint/setup.py (original) +++ python/branches/release25-maint/setup.py Sun Feb 3 10:58:02 2008 @@ -277,7 +277,7 @@ parser.add_option(arg_name, dest="dirs", action="append") options = parser.parse_args(env_val.split())[0] if options.dirs: - for directory in options.dirs: + for directory in reversed(options.dirs): add_dir_to_list(dir_list, directory) if os.path.normpath(sys.prefix) != '/usr': From python-checkins at python.org Sun Feb 3 10:59:21 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 10:59:21 +0100 (CET) Subject: [Python-checkins] r60549 - python/trunk/Misc/NEWS Message-ID: <20080203095921.DB4A61E4018@bag.python.org> Author: brett.cannon Date: Sun Feb 3 10:59:21 2008 New Revision: 60549 Modified: python/trunk/Misc/NEWS Log: Add an entry for r60537. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 3 10:59:21 2008 @@ -1392,6 +1392,10 @@ Build ----- +- Have the search path for building extensions follow the declared order in + $CPPFLAGS and $LDFLAGS when adding directories from those environment + variables. + - Bug #1983: Added a check to pyport to verify that sizeof(pid_t) is smaller or equal sizeof(long). From nnorwitz at gmail.com Sun Feb 3 11:44:34 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Feb 2008 05:44:34 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080203104434.GA29715@python.psfb.org> More important issues: ---------------------- test_asynchat leaked [-6, -85, 0] references, sum=-91 Less important issues: ---------------------- test_cmd_line leaked [-46, 0, 46] references, sum=0 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [-128, 3, 3] references, sum=-122 From nnorwitz at gmail.com Sun Feb 3 12:07:22 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Feb 2008 06:07:22 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080203110722.GA1774@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7761 refs] [7761 refs] [7761 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8138 refs] [8138 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7756 refs] [7757 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7757 refs] [9376 refs] [7974 refs] [7757 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] [7756 refs] . [7756 refs] [7756 refs] this bit of output is from a test of stdout in a different process ... [7756 refs] [7756 refs] [7974 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7756 refs] [7756 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7760 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10884 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [559677 refs] From buildbot at python.org Sun Feb 3 13:20:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 12:20:04 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20080203122005.128011E4092@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/431 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 13:29:01 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 3 Feb 2008 13:29:01 +0100 (CET) Subject: [Python-checkins] r60550 - python/trunk/Doc/reference/datamodel.rst Message-ID: <20080203122901.052DB1E401A@bag.python.org> Author: georg.brandl Date: Sun Feb 3 13:29:00 2008 New Revision: 60550 Modified: python/trunk/Doc/reference/datamodel.rst Log: #2003: fix sentence. Modified: python/trunk/Doc/reference/datamodel.rst ============================================================================== --- python/trunk/Doc/reference/datamodel.rst (original) +++ python/trunk/Doc/reference/datamodel.rst Sun Feb 3 13:29:00 2008 @@ -1078,7 +1078,7 @@ a single built-in type, called ``instance``. New-style classes were introduced in Python 2.2 to unify classes and types. A -new-style class neither more nor less than a user-defined type. If *x* is an +new-style class is neither more nor less than a user-defined type. If *x* is an instance of a new-style class, then ``type(x)`` is the same as ``x.__class__``. The major motivation for introducing new-style classes is to provide a unified From python-checkins at python.org Sun Feb 3 15:34:19 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 3 Feb 2008 15:34:19 +0100 (CET) Subject: [Python-checkins] r60551 - in python/trunk: Lib/distutils/command/build_ext.py PCbuild/_bsddb.vcproj PCbuild/build.bat PCbuild/readme.txt Message-ID: <20080203143419.3403D1E401F@bag.python.org> Author: christian.heimes Date: Sun Feb 3 15:34:18 2008 New Revision: 60551 Modified: python/trunk/Lib/distutils/command/build_ext.py python/trunk/PCbuild/_bsddb.vcproj python/trunk/PCbuild/build.bat python/trunk/PCbuild/readme.txt Log: Fixed paths to Windows build directories in build_ext.py Use vsbuild instead of devenv in build.bat and _bsddb.vcproj Modified: python/trunk/Lib/distutils/command/build_ext.py ============================================================================== --- python/trunk/Lib/distutils/command/build_ext.py (original) +++ python/trunk/Lib/distutils/command/build_ext.py Sun Feb 3 15:34:18 2008 @@ -182,13 +182,13 @@ self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC')) if MSVC_VERSION == 9: self.library_dirs.append(os.path.join(sys.exec_prefix, - 'PCBuild9')) + 'PCbuild')) elif MSVC_VERSION == 8: self.library_dirs.append(os.path.join(sys.exec_prefix, - 'PCBuild8', 'win32release')) + 'PC', 'VS8.0', 'win32release')) else: self.library_dirs.append(os.path.join(sys.exec_prefix, - 'PCBuild')) + 'PC', 'VS7.1')) # OS/2 (EMX) doesn't support Debug vs Release builds, but has the # import libraries in its "Config" subdirectory Modified: python/trunk/PCbuild/_bsddb.vcproj ============================================================================== --- python/trunk/PCbuild/_bsddb.vcproj (original) +++ python/trunk/PCbuild/_bsddb.vcproj Sun Feb 3 15:34:18 2008 @@ -52,7 +52,7 @@ /> Options -> Projects and Solutions -> VC++ Directories, + Platform: Win32, Show directories for: Executable files). The _bsddb subprojects depends only on the db_static project of Berkeley DB. You have to choose either "Release", "Release AMD64", "Debug" From lists at cheimes.de Sun Feb 3 15:50:21 2008 From: lists at cheimes.de (Christian Heimes) Date: Sun, 03 Feb 2008 15:50:21 +0100 Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py In-Reply-To: References: <20080202114608.23F901E4002@bag.python.org> <47A52516.60909@cheimes.de> Message-ID: <47A5D4AD.4070706@cheimes.de> Brett Cannon wrote: > But how is the situation going to be any better using unittest? It's not. I preferred the old style output comparison test. In general these tests suck but for profile and cprofile it made the job easier. > The thing to remember about this, Christian, is that we had a high > schooler do this. It was simpler to say, "take this output-comparing > test and move to doctest", than to say, "come up with a completely new > way to test this code using unittest". This at least gets us off of > output-based testing for this. It can always be reworked later as a > unittest if io.py ends up changing that often. The student did as he was told to. IMHO the task was a mistake in the first place. This particular test makes my job harder. Christian From buildbot at python.org Sun Feb 3 16:01:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 15:01:37 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20080203150138.247B41E401C@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/1397 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Fehler 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 16:48:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 15:48:10 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080203154810.C32771E401C@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/735 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list sincerely, -The Buildbot From g.brandl at gmx.net Sun Feb 3 16:58:37 2008 From: g.brandl at gmx.net (Georg Brandl) Date: Sun, 03 Feb 2008 16:58:37 +0100 Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py In-Reply-To: <47A5D4AD.4070706@cheimes.de> References: <20080202114608.23F901E4002@bag.python.org> <47A52516.60909@cheimes.de> <47A5D4AD.4070706@cheimes.de> Message-ID: Christian Heimes schrieb: > Brett Cannon wrote: >> But how is the situation going to be any better using unittest? > > It's not. I preferred the old style output comparison test. In general > these tests suck but for profile and cprofile it made the job easier. Nevertheless, we want to get rid of old-style tests completely. I have a proposal - I rewrite the test file as a script so that you can regenerate the output by calling it with an argument. Is that fine with you? Georg -- Thus spake the Lord: Thou shalt indent with four spaces. No more, no less. Four shall be the number of spaces thou shalt indent, and the number of thy indenting shall be four. Eight shalt thou not indent, nor either indent thou two, excepting that thou then proceed to four. Tabs are right out. From buildbot at python.org Sun Feb 3 17:37:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 16:37:46 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080203163747.2AC151E4003@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/167 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 17:42:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 16:42:29 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080203164229.644431E401C@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/14 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 17:53:10 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 3 Feb 2008 17:53:10 +0100 (CET) Subject: [Python-checkins] r60553 - python/trunk/Misc/build.sh Message-ID: <20080203165310.34E601E4033@bag.python.org> Author: neal.norwitz Date: Sun Feb 3 17:53:09 2008 New Revision: 60553 Modified: python/trunk/Misc/build.sh Log: Ignore leaky warnings from test_asynchat Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Sun Feb 3 17:53:09 2008 @@ -67,7 +67,7 @@ # Note: test_XXX (none currently) really leak, but are disabled # so we don't send spam. Any test which really leaks should only # be listed here if there are also test cases under Lib/test/leakers. -LEAKY_TESTS="test_(cmd_line|popen2|socket|sys|threadsignals|urllib2_localnet)" +LEAKY_TESTS="test_(asynchat|cmd_line|popen2|socket|sys|threadsignals|urllib2_localnet)" # Skip these tests altogether when looking for leaks. These tests # do not need to be stored above in LEAKY_TESTS too. From buildbot at python.org Sun Feb 3 18:19:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:19:35 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 3.0 Message-ID: <20080203171935.449EF1E401D@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%203.0/builds/40 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [784673 refs] make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:29:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:29:35 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080203172936.23E3C1E4004@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/522 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [693239 refs] make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:34:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:34:16 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080203173416.AF8681E401D@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/594 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:37:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:37:11 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080203173711.E47021E4004@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/551 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [669826 refs] sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:46:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:46:33 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 3.0 Message-ID: <20080203174634.2666D1E403C@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%203.0/builds/503 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [758352 refs] make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:50:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:50:26 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080203175026.4475A1E4004@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/499 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/Users/buildslave/bb/3.0.psf-g4/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [854838 refs] make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 18:57:07 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 17:57:07 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20080203175708.11DF61E401D@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/479 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 7 tests failed: test_anydbm test_bsddb test_bsddb3 test_mailbox test_shelve test_socketserver test_whichdb ====================================================================== ERROR: test_anydbm_access (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 90, in test_anydbm_access self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_creation (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 63, in test_anydbm_creation f = anydbm.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_keys (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 84, in test_anydbm_keys self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_modification (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 71, in test_anydbm_modification self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_read (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 78, in test_anydbm_read self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') Traceback (most recent call last): File "../lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 90, in test_main run_unittest(suite()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 53, in suite import bsddb.test.test_1413192 File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 38, in context = Context() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 26, in __init__ db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_consistent_factory (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 520, in test_consistent_factory msg2 = box.get_message(key) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\mailbox.py", line 313, in get_message subpath = self._lookup(key) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\mailbox.py", line 482, in _lookup raise KeyError('No message with key: %s' % key) KeyError: 'No message with key: 1202061329.M980000P3112Q201.buildbot' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 717, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 F' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 717, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 \x01' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 940, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo *** EOOH *** From: foo 0 1,, From: foo *** EOOH *** From: foo 1 1,, From: foo *** EOOH *** From: foo 2 1,, From: foo *** EOOH *** From: foo 3 ' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 757, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: 'From MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'From MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:37 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 724, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 741, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\nF' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\nF' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 757, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n' != '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Sun Feb 03 17:55:41 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 724, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 741, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\n\x01' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0\n\n\x01' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\n\x01' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\noriginal 0\n\n\x1f' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\nchanged 0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== ERROR: test_bool (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 122, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_ascii_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 46, in test_ascii_file_shelf s = shelve.open(self.fn, protocol=0) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_binary_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 54, in test_binary_file_shelf s = shelve.open(self.fn, protocol=1) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_proto2_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 62, in test_proto2_file_shelf s = shelve.open(self.fn, protocol=2) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') Traceback (most recent call last): File "../lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax Re-running test 'test_whichdb' in verbose mode ====================================================================== ERROR: test_whichdb (test.test_whichdb.WhichDBTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_whichdb.py", line 32, in test_whichdb f = module.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 19:45:51 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 18:45:51 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20080203184551.BC9881E4036@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/72 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver Traceback (most recent call last): File "./Lib/test/regrtest.py", line 589, in runtest_inner the_package = __import__(abstest, globals(), locals(), []) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 193 print "ADDR =", addr ^ SyntaxError: invalid syntax [763727 refs] make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 20:00:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 19:00:19 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian 3.0 Message-ID: <20080203190019.7A1091E4032@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/270 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 20:51:14 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 3 Feb 2008 20:51:14 +0100 (CET) Subject: [Python-checkins] r60555 - python/trunk/Modules/posixmodule.c Message-ID: <20080203195114.544F51E4021@bag.python.org> Author: christian.heimes Date: Sun Feb 3 20:51:13 2008 New Revision: 60555 Modified: python/trunk/Modules/posixmodule.c Log: Another int -> pid_t case Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Sun Feb 3 20:51:13 2008 @@ -6067,7 +6067,8 @@ static PyObject * posix_tcgetpgrp(PyObject *self, PyObject *args) { - int fd, pgid; + int fd; + pid_t pgid; if (!PyArg_ParseTuple(args, "i:tcgetpgrp", &fd)) return NULL; pgid = tcgetpgrp(fd); From buildbot at python.org Sun Feb 3 21:45:50 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 20:45:50 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 2.5 Message-ID: <20080203204550.A25AC1E401D@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%202.5/builds/10 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.macintyre BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sun Feb 3 22:40:28 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 3 Feb 2008 22:40:28 +0100 (CET) Subject: [Python-checkins] r60556 - tracker/instances/jython Message-ID: <20080203214028.2DE5B1E4007@bag.python.org> Author: martin.v.loewis Date: Sun Feb 3 22:40:27 2008 New Revision: 60556 Added: tracker/instances/jython/ - copied from r60555, tracker/instances/python-dev/ Log: Create the Jython instance as a copy of the python-dev instance. From python-checkins at python.org Sun Feb 3 22:49:11 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 3 Feb 2008 22:49:11 +0100 (CET) Subject: [Python-checkins] r60557 - tracker/instances/jython/detectors/audit2to3.py tracker/instances/jython/detectors/cia.py Message-ID: <20080203214911.D6F4A1E4007@bag.python.org> Author: martin.v.loewis Date: Sun Feb 3 22:49:11 2008 New Revision: 60557 Removed: tracker/instances/jython/detectors/audit2to3.py tracker/instances/jython/detectors/cia.py Log: Remove unused detectors. Deleted: /tracker/instances/jython/detectors/audit2to3.py ============================================================================== --- /tracker/instances/jython/detectors/audit2to3.py Sun Feb 3 22:49:11 2008 +++ (empty file) @@ -1,41 +0,0 @@ -import roundup -import roundup.instance -import sets - -def update2to3(db, cl, nodeid, newvalues): - '''Component 2to3 issues to be assigned to collinwinter unless otherwise - assigned. - ''' - # nodeid will be None if this is a new node - componentIDS=None - if nodeid is not None: - componentIDS = cl.get(nodeid, 'components') - if newvalues.has_key('components'): - componentIDS = newvalues['components'] - if componentIDS and (theComponent in componentIDS): - if not newvalues.has_key('assignee') or \ - newvalues['assignee'] == Nobody: - newvalues['assignee'] = theMan - -def init(db): - global theMan, theComponent, Nobody - theMan = db.user.lookup('collinwinter') - Nobody = db.user.lookup('nobody') - theComponent = db.component.lookup('2to3 (2.x to 3.0 conversion tool)') - - db.issue.audit('create', update2to3) - db.issue.audit('set', update2to3) - -if __name__ == '__main__': - global theMan, theComponent, Nobody - instanceHome='/home/roundup/trackers/tracker' - instance = roundup.instance.open(instanceHome) - db = instance.open('admin') - cl = db.issue - nodeID = '1002' - theMan = db.user.lookup('collinwinter') - Nobody = db.user.lookup('nobody') - theComponent = db.component.lookup('2to3 (2.x to 3.0 conversion tool)') - newvalues = { 'components': [theComponent] , 'assignee': Nobody} - update2to3(db, cl, nodeID, newvalues) - print Nobody, theMan, theComponent, newvalues Deleted: /tracker/instances/jython/detectors/cia.py ============================================================================== --- /tracker/instances/jython/detectors/cia.py Sun Feb 3 22:49:11 2008 +++ (empty file) @@ -1,86 +0,0 @@ -# Reactor for sending changes to CIA.vc -import xmlrpclib -import cgi - -server = "http://CIA.vc" - -parameters = { - 'name':'Roundup Reactor for CIA', - 'revision': "$Revision$"[11:-2], - 'project': 'Python', - 'branch': 'roundup', - 'urlprefix': 'http://bugs.python.org/issue', -} - -max_content = 150 - -TEMPLATE = """ - - - Roundup Reactor for CIA - %(revision)s - - - %(project)s - #%(nodeid)s - %(branch)s - - - - %(author)s - %(file)s - %(log)s - %(urlprefix)s%(nodeid)s - - - -""" - - -def sendcia(db, cl, nodeid, oldvalues): - messages = set(cl.get(nodeid, 'messages')) - if oldvalues: - messages -= set(oldvalues.get('messages',())) - if not messages: - return - messages = list(messages) - - if oldvalues: - oldstatus = oldvalues['status'] - else: - oldstatus = None - newstatus = db.issue.get(nodeid, 'status') - if oldstatus != newstatus: - if oldvalues: - status = db.status.get(newstatus, 'name') - else: - status = 'new' - log = '[' + status + '] ' - else: - log = '' - for msg in messages: - log += db.msg.get(msg, 'content') - if len(log) > max_content: - log = log[:max_content-4] + ' ...' - log = log.replace('\n', ' ') - - params = parameters.copy() - params['file'] = cgi.escape(db.issue.get(nodeid, 'title')) - params['nodeid'] = nodeid - params['author'] = db.user.get(db.getuid(), 'username') - params['log'] = cgi.escape(log) - - payload = TEMPLATE % params - - try: - rpc = xmlrpclib.ServerProxy(server) - rpc.hub.deliver(payload) - except: - # Ignore any errors in sending the CIA; - # if the server is down, that's just bad luck - # XXX might want to do some logging here - pass - -def init(db): - db.issue.react('create', sendcia) - db.issue.react('set', sendcia) From python-checkins at python.org Sun Feb 3 23:04:34 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 3 Feb 2008 23:04:34 +0100 (CET) Subject: [Python-checkins] r60558 - tracker/instances/jython/config.ini.template Message-ID: <20080203220434.511DF1E4007@bag.python.org> Author: martin.v.loewis Date: Sun Feb 3 23:04:34 2008 New Revision: 60558 Modified: tracker/instances/jython/config.ini.template Log: Default some strings to jython. Modified: tracker/instances/jython/config.ini.template ============================================================================== --- tracker/instances/jython/config.ini.template (original) +++ tracker/instances/jython/config.ini.template Sun Feb 3 23:04:34 2008 @@ -115,7 +115,7 @@ # Default: NO DEFAULT #web = NO DEFAULT #web = http://psf.upfronthosting.co.za/roundup/tracker/ -web = http://localhost:9999/python-dev/ +web = http://localhost:9999/jython/ # Email address that mail to roundup should go to. # Default: issue_tracker @@ -160,7 +160,7 @@ # Name of the database to use. # Default: roundup -name = roundup +name = roundup_jython # Database server host. # Default: localhost From python-checkins at python.org Sun Feb 3 23:13:01 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 3 Feb 2008 23:13:01 +0100 (CET) Subject: [Python-checkins] r60559 - tracker/instances/jython/extensions/local_replace.py Message-ID: <20080203221301.CE29F1E4007@bag.python.org> Author: martin.v.loewis Date: Sun Feb 3 23:13:01 2008 New Revision: 60559 Modified: tracker/instances/jython/extensions/local_replace.py Log: Link revisions to fisheye. Modified: tracker/instances/jython/extensions/local_replace.py ============================================================================== --- tracker/instances/jython/extensions/local_replace.py (original) +++ tracker/instances/jython/extensions/local_replace.py Sun Feb 3 23:13:01 2008 @@ -3,13 +3,11 @@ substitutions = [ (re.compile('\#(?P\s*)(?P\d+)'), "#\g\g" ), (re.compile('(?P\s+)revision(?P\s*)(?P\d+)'), - "\grevision\g\g"), + "\grevision\g\g"), (re.compile('(?P\s+)rev(?P\s*)(?P\d+)'), - "\grev\g\g"), + "\grev\g\g"), (re.compile('(?P\s+)(?Pr|r\s+)(?P\d+)'), - "\g\g\g"), - (re.compile('(?P\s+)(?P(Demo|Doc|Grammar|Include|Lib|Mac|Misc|Modules|Parser|PC|PCbuild|Python|RISCOS|Tools)/[-.a-zA-Z0-9]+[a-zA-Z0-9])'), - "\g\g"), + "\g\g\g"), ] def localReplace(message): From python-checkins at python.org Sun Feb 3 23:51:44 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Sun, 3 Feb 2008 23:51:44 +0100 (CET) Subject: [Python-checkins] r60560 - in python/trunk: Doc/c-api/set.rst Include/setobject.h Misc/NEWS Objects/setobject.c Message-ID: <20080203225144.49E3B1E4007@bag.python.org> Author: amaury.forgeotdarc Date: Sun Feb 3 23:51:43 2008 New Revision: 60560 Modified: python/trunk/Doc/c-api/set.rst python/trunk/Include/setobject.h python/trunk/Misc/NEWS python/trunk/Objects/setobject.c Log: Ensure that PySet_Add() operates on a newly created frozenset, like PyTuple_SetItem does. Add PyFrozenSet_Check(), which was not needed before; The list of Py*Set_Check* macros seems to be complete now. Add missing NEWS entries about all this. Modified: python/trunk/Doc/c-api/set.rst ============================================================================== --- python/trunk/Doc/c-api/set.rst (original) +++ python/trunk/Doc/c-api/set.rst Sun Feb 3 23:51:43 2008 @@ -58,6 +58,13 @@ .. versionadded:: 2.6 +.. cfunction:: int PyFrozenSet_Check(PyObject *p) + + Return true if *p* is a :class:`frozenset` object or an instance of a + subtype. + + .. versionadded:: 2.6 + .. cfunction:: int PyAnySet_Check(PyObject *p) Return true if *p* is a :class:`set` object, a :class:`frozenset` object, or an Modified: python/trunk/Include/setobject.h ============================================================================== --- python/trunk/Include/setobject.h (original) +++ python/trunk/Include/setobject.h Sun Feb 3 23:51:43 2008 @@ -74,7 +74,11 @@ PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \ PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type)) #define PySet_Check(ob) \ - (Py_TYPE(ob) == &PySet_Type || PyType_IsSubtype(Py_TYPE(ob), &PySet_Type)) + (Py_TYPE(ob) == &PySet_Type || \ + PyType_IsSubtype(Py_TYPE(ob), &PySet_Type)) +#define PyFrozenSet_Check(ob) \ + (Py_TYPE(ob) == &PyFrozenSet_Type || \\ + PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type)) PyAPI_FUNC(PyObject *) PySet_New(PyObject *); PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *); Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 3 23:51:43 2008 @@ -1471,6 +1471,12 @@ C API ----- +- ``PySet_Add()`` can now modify a newly created frozenset. Similarly to + ``PyTuple_SetItem``, it can be used to populate a brand new frozenset; but + it does not steal a reference to the added item. + +- Added ``PySet_Check()`` and ``PyFrozenSet_Check()`` to the set API. + - Backport of PyUnicode_FromString(), _FromStringAndSize(), _Format and _FormatV from Python 3.0. Made PyLong_AsSsize_t and PyLong_FromSsize_t public functions. Modified: python/trunk/Objects/setobject.c ============================================================================== --- python/trunk/Objects/setobject.c (original) +++ python/trunk/Objects/setobject.c Sun Feb 3 23:51:43 2008 @@ -2188,7 +2188,8 @@ int PySet_Add(PyObject *anyset, PyObject *key) { - if (!PyAnySet_Check(anyset)) { + if (!PySet_Check(anyset) && + (!PyFrozenSet_Check(anyset) || Py_REFCNT(anyset) != 1)) { PyErr_BadInternalCall(); return -1; } @@ -2306,6 +2307,10 @@ f = PyFrozenSet_New(dup); assertRaises(PySet_Clear(f) == -1, PyExc_SystemError); assertRaises(_PySet_Update(f, dup) == -1, PyExc_SystemError); + assert(PySet_Add(f, elem) == 0); + Py_INCREF(f); + assertRaises(PySet_Add(f, elem) == -1, PyExc_SystemError); + Py_DECREF(f); Py_DECREF(f); /* Exercise direct iteration */ From python-checkins at python.org Sun Feb 3 23:57:08 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 3 Feb 2008 23:57:08 +0100 (CET) Subject: [Python-checkins] r60561 - peps/trunk/pep-3108.txt Message-ID: <20080203225708.9DC9C1E4007@bag.python.org> Author: brett.cannon Date: Sun Feb 3 23:57:08 2008 New Revision: 60561 Modified: peps/trunk/pep-3108.txt Log: Minor clarifications. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Sun Feb 3 23:57:08 2008 @@ -521,7 +521,7 @@ Support in the 2to3 refactoring tool for renames will also be used [#2to3]_. Import statements will be rewritten so that only the import statement and none of the rest of the code needs to be touched. This -will be accomplished by using the ``as`` keyword in import statments +will be accomplished by using the ``as`` keyword in import statements to bind in the module namespace to the old name while importing based on the new name. @@ -595,9 +595,8 @@ introduce. In the end, though, not enough support could be pulled together to -warrant moving forward with the idea. In the future either a separate -PEP trying to do a large reorganization of the stdlib or doing it -piece-meal, one package at a time, will be required. +warrant moving forward with the idea. Instead name simplification has +been chosen as the guiding force for PEPs to create. References From buildbot at python.org Sun Feb 3 23:57:28 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:57:28 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080203225728.76B4F1E4007@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3028 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:57:34 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:57:34 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080203225734.3E6D51E4007@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/102 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:57:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:57:35 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20080203225736.147861E4007@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/1399 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:57:52 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:57:52 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080203225753.083B11E4007@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/737 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:58:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:58:01 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080203225801.7A5AF1E4007@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/250 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:58:24 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:58:24 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080203225824.E8A921E4007@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1369 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:58:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:58:26 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080203225826.ECB731E4021@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2773 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:59:27 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:59:27 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080203225927.561BD1E4007@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2470 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 3 23:59:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 22:59:33 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080203225933.315CE1E4007@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/169 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 00:08:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 03 Feb 2008 23:08:02 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080203230802.DEABB1E4030@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/528 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed compile sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 00:11:38 2008 From: python-checkins at python.org (brett.cannon) Date: Mon, 4 Feb 2008 00:11:38 +0100 (CET) Subject: [Python-checkins] r60562 - peps/trunk/pep-3108.txt Message-ID: <20080203231138.D94B01E4007@bag.python.org> Author: brett.cannon Date: Mon Feb 4 00:11:38 2008 New Revision: 60562 Modified: peps/trunk/pep-3108.txt Log: Add the http and xmlrpc packages. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Mon Feb 4 00:11:38 2008 @@ -371,14 +371,11 @@ _winreg winreg (rename also because module has a public interface and thus should not have a leading underscore) -BaseHTTPServer base_http_server Carbon carbon -CGIHTTPServer cgi_http_server ColorPicker colorpicker ConfigParser configparser Cookie cookie copy_reg copyreg -DocXMLRPCServer doc_xmlrpc_server EasyDialogs easydialogs HTMLParser htmlparser MacOS macos @@ -386,8 +383,6 @@ PixMapWrapper pixmap_wrapper Queue queue ScrolledText scrolledtext -SimpleHTTPServer simple_http_server -SimpleXMLRPCServer simple_xmlrpc_server SocketServer socketserver Tix tix Tkinter tkinter @@ -432,6 +427,7 @@ + Added to the 'io' module as stringio. + No public, documented interface ------------------------------- @@ -446,10 +442,11 @@ bdb _bdb markupbase _markupbase [done] opcode _opcode -dummy_thread _dummy_thread (assuming thread - is deprecated) +dummy_thread _dummy_thread [#]_ ============ =============================== +.. [#] Assumes ``thread`` is renamed to ``_thread``. + Poorly chosen names ------------------- @@ -493,6 +490,38 @@ API for both modules has no name conflict. +http package +//////////// + +================= =============================== +Current Name Replacement Name +================= =============================== +httplib http.tools +BaseHTTPServer http.server [2]_ +CGIHTTPServer http.server [2]_ +SimpleHTTPServer http.server [2]_ +cookielib http.cookies +================= =============================== + +.. [2] The ``http.server`` module can combine the specified modules + safely as they have no naming conflicts. + + +xmlrpc package +////////////// + +================== =============================== +Current Name Replacement Name +================== =============================== +xmlrpclib xmlrpc.tools +SimpleXMLRPCServer xmlrpc.server [3]_ +CGIXMLRPCServer xmlrpc.server [3]_ +================== =============================== + +.. [3] The modules being combined into ``xmlrpc.server`` have no + naming conflicts and thus can safely be merged. + + Transition Plan =============== From python-checkins at python.org Mon Feb 4 00:14:32 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 00:14:32 +0100 (CET) Subject: [Python-checkins] r60563 - python/trunk/Include/setobject.h Message-ID: <20080203231432.7502F1E4007@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 00:14:32 2008 New Revision: 60563 Modified: python/trunk/Include/setobject.h Log: Nasty typo in setobject.h Modified: python/trunk/Include/setobject.h ============================================================================== --- python/trunk/Include/setobject.h (original) +++ python/trunk/Include/setobject.h Mon Feb 4 00:14:32 2008 @@ -77,7 +77,7 @@ (Py_TYPE(ob) == &PySet_Type || \ PyType_IsSubtype(Py_TYPE(ob), &PySet_Type)) #define PyFrozenSet_Check(ob) \ - (Py_TYPE(ob) == &PyFrozenSet_Type || \\ + (Py_TYPE(ob) == &PyFrozenSet_Type || \ PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type)) PyAPI_FUNC(PyObject *) PySet_New(PyObject *); From python-checkins at python.org Mon Feb 4 00:15:33 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 00:15:33 +0100 (CET) Subject: [Python-checkins] r60564 - python/trunk/Lib/test/test_mailbox.py Message-ID: <20080203231533.1B96F1E4023@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 00:15:32 2008 New Revision: 60564 Modified: python/trunk/Lib/test/test_mailbox.py Log: Correct test_mailbox on win32: since the test sets a custom 'colon' attribute to the main mailbox, copy it to secondary mailbox instances. Modified: python/trunk/Lib/test/test_mailbox.py ============================================================================== --- python/trunk/Lib/test/test_mailbox.py (original) +++ python/trunk/Lib/test/test_mailbox.py Mon Feb 4 00:15:32 2008 @@ -520,6 +520,7 @@ class FakeMessage(mailbox.MaildirMessage): pass box = mailbox.Maildir(self._path, factory=FakeMessage) + box.colon = self._box.colon msg2 = box.get_message(key) self.assert_(isinstance(msg2, FakeMessage)) From guido at python.org Mon Feb 4 00:30:33 2008 From: guido at python.org (Guido van Rossum) Date: Sun, 3 Feb 2008 15:30:33 -0800 Subject: [Python-checkins] r60529 - in python/trunk/Lib/test: output/test_cProfile test_cProfile.py test_cprofile.py In-Reply-To: <47A5D4AD.4070706@cheimes.de> References: <20080202114608.23F901E4002@bag.python.org> <47A52516.60909@cheimes.de> <47A5D4AD.4070706@cheimes.de> Message-ID: On Feb 3, 2008 6:50 AM, Christian Heimes wrote: > Brett Cannon wrote: > > But how is the situation going to be any better using unittest? > > It's not. I preferred the old style output comparison test. In general > these tests suck but for profile and cprofile it made the job easier. But how is the doctest worse than the original test? -- --Guido van Rossum (home page: http://www.python.org/~guido/) From python-checkins at python.org Mon Feb 4 00:57:24 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 00:57:24 +0100 (CET) Subject: [Python-checkins] r60565 - python/trunk/Lib/test/test_socketserver.py Message-ID: <20080203235724.EB5B81E4007@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 00:57:24 2008 New Revision: 60565 Modified: python/trunk/Lib/test/test_socketserver.py Log: Let test_socketserver pass on win32, which does not have AF_UNIX sockets. Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Mon Feb 4 00:57:24 2008 @@ -51,13 +51,14 @@ SocketServer.DatagramRequestHandler): pass -class ForkingUnixStreamServer(SocketServer.ForkingMixIn, - SocketServer.UnixStreamServer): - pass - -class ForkingUnixDatagramServer(SocketServer.ForkingMixIn, - SocketServer.UnixDatagramServer): - pass +if HAVE_UNIX_SOCKETS: + class ForkingUnixStreamServer(SocketServer.ForkingMixIn, + SocketServer.UnixStreamServer): + pass + + class ForkingUnixDatagramServer(SocketServer.ForkingMixIn, + SocketServer.UnixDatagramServer): + pass class MyMixinServer: From buildbot at python.org Mon Feb 4 01:51:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 00:51:10 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080204005110.6C8B41E4007@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/598 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 02:04:35 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Mon, 4 Feb 2008 02:04:35 +0100 (CET) Subject: [Python-checkins] r60566 - in python/trunk: Include/abstract.h Lib/rational.py Lib/test/test_builtin.py Objects/abstract.c Objects/classobject.c Message-ID: <20080204010435.B12031E4007@bag.python.org> Author: jeffrey.yasskin Date: Mon Feb 4 02:04:35 2008 New Revision: 60566 Modified: python/trunk/Include/abstract.h python/trunk/Lib/rational.py python/trunk/Lib/test/test_builtin.py python/trunk/Objects/abstract.c python/trunk/Objects/classobject.c Log: Make int() and long() fall back to __trunc__(). See issue 2002. Modified: python/trunk/Include/abstract.h ============================================================================== --- python/trunk/Include/abstract.h (original) +++ python/trunk/Include/abstract.h Mon Feb 4 02:04:35 2008 @@ -761,6 +761,19 @@ PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc); /* + Returns the Integral instance converted to an int. The + instance is expected to be int or long or have an __int__ + method. Steals integral's reference. error_format will be + used to create the TypeError if integral isn't actually an + Integral instance. error_format should be a format string + that can accept a char* naming integral's type. + */ + + PyAPI_FUNC(PyObject *) _PyNumber_ConvertIntegralToInt( + PyObject *integral, + const char* error_format); + + /* Returns the object converted to Py_ssize_t by going through PyNumber_Index first. If an overflow error occurs while converting the int-or-long to Py_ssize_t, then the second argument Modified: python/trunk/Lib/rational.py ============================================================================== --- python/trunk/Lib/rational.py (original) +++ python/trunk/Lib/rational.py Mon Feb 4 02:04:35 2008 @@ -424,8 +424,6 @@ else: return a.numerator // a.denominator - __int__ = __trunc__ - def __hash__(self): """hash(self) Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Mon Feb 4 02:04:35 2008 @@ -934,6 +934,14 @@ def test_intconversion(self): # Test __int__() + class ClassicMissingMethods: + pass + self.assertRaises(AttributeError, int, ClassicMissingMethods()) + + class MissingMethods(object): + pass + self.assertRaises(TypeError, int, MissingMethods()) + class Foo0: def __int__(self): return 42 @@ -965,6 +973,49 @@ self.assertEqual(int(Foo4()), 42L) self.assertRaises(TypeError, int, Foo5()) + class Classic: + pass + for base in (object, Classic): + class IntOverridesTrunc(base): + def __int__(self): + return 42 + def __trunc__(self): + return -12 + self.assertEqual(int(IntOverridesTrunc()), 42) + + class JustTrunc(base): + def __trunc__(self): + return 42 + self.assertEqual(int(JustTrunc()), 42) + + for trunc_result_base in (object, Classic): + class Integral(trunc_result_base): + def __int__(self): + return 42 + + class TruncReturnsNonInt(base): + def __trunc__(self): + return Integral() + self.assertEqual(int(TruncReturnsNonInt()), 42) + + class NonIntegral(trunc_result_base): + def __trunc__(self): + # Check that we avoid infinite recursion. + return NonIntegral() + + class TruncReturnsNonIntegral(base): + def __trunc__(self): + return NonIntegral() + try: + int(TruncReturnsNonIntegral()) + except TypeError as e: + self.assertEquals(str(e), + "__trunc__ returned non-Integral" + " (type NonIntegral)") + else: + self.fail("Failed to raise TypeError with %s" % + ((base, trunc_result_base),)) + def test_intern(self): self.assertRaises(TypeError, intern) s = "never interned before" @@ -1207,6 +1258,14 @@ def test_longconversion(self): # Test __long__() + class ClassicMissingMethods: + pass + self.assertRaises(AttributeError, long, ClassicMissingMethods()) + + class MissingMethods(object): + pass + self.assertRaises(TypeError, long, MissingMethods()) + class Foo0: def __long__(self): return 42L @@ -1238,6 +1297,49 @@ self.assertEqual(long(Foo4()), 42) self.assertRaises(TypeError, long, Foo5()) + class Classic: + pass + for base in (object, Classic): + class LongOverridesTrunc(base): + def __long__(self): + return 42 + def __trunc__(self): + return -12 + self.assertEqual(long(LongOverridesTrunc()), 42) + + class JustTrunc(base): + def __trunc__(self): + return 42 + self.assertEqual(long(JustTrunc()), 42) + + for trunc_result_base in (object, Classic): + class Integral(trunc_result_base): + def __int__(self): + return 42 + + class TruncReturnsNonLong(base): + def __trunc__(self): + return Integral() + self.assertEqual(long(TruncReturnsNonLong()), 42) + + class NonIntegral(trunc_result_base): + def __trunc__(self): + # Check that we avoid infinite recursion. + return NonIntegral() + + class TruncReturnsNonIntegral(base): + def __trunc__(self): + return NonIntegral() + try: + long(TruncReturnsNonIntegral()) + except TypeError as e: + self.assertEquals(str(e), + "__trunc__ returned non-Integral" + " (type NonIntegral)") + else: + self.fail("Failed to raise TypeError with %s" % + ((base, trunc_result_base),)) + def test_map(self): self.assertEqual( map(None, 'hello world'), Modified: python/trunk/Objects/abstract.c ============================================================================== --- python/trunk/Objects/abstract.c (original) +++ python/trunk/Objects/abstract.c Mon Feb 4 02:04:35 2008 @@ -1035,12 +1035,64 @@ PyObject * +_PyNumber_ConvertIntegralToInt(PyObject *integral, const char* error_format) +{ + const char *type_name; + static PyObject *int_name = NULL; + if (int_name == NULL) { + int_name = PyString_InternFromString("__int__"); + if (int_name == NULL) + return NULL; + } + + if (integral && (!PyInt_Check(integral) && + !PyLong_Check(integral))) { + /* Don't go through tp_as_number->nb_int to avoid + hitting the classic class fallback to __trunc__. */ + PyObject *int_func = PyObject_GetAttr(integral, int_name); + if (int_func == NULL) { + PyErr_Clear(); /* Raise a different error. */ + goto non_integral_error; + } + Py_DECREF(integral); + integral = PyEval_CallObject(int_func, NULL); + Py_DECREF(int_func); + if (integral && (!PyInt_Check(integral) && + !PyLong_Check(integral))) { + goto non_integral_error; + } + } + return integral; + +non_integral_error: + if (PyInstance_Check(integral)) { + type_name = PyString_AS_STRING(((PyInstanceObject *)integral) + ->in_class->cl_name); + } + else { + type_name = integral->ob_type->tp_name; + } + PyErr_Format(PyExc_TypeError, error_format, type_name); + Py_DECREF(integral); + return NULL; +} + + +PyObject * PyNumber_Int(PyObject *o) { PyNumberMethods *m; + static PyObject *trunc_name = NULL; + PyObject *trunc_func; const char *buffer; Py_ssize_t buffer_len; + if (trunc_name == NULL) { + trunc_name = PyString_InternFromString("__trunc__"); + if (trunc_name == NULL) + return NULL; + } + if (o == NULL) return null_error(); if (PyInt_CheckExact(o)) { @@ -1049,6 +1101,7 @@ } m = o->ob_type->tp_as_number; if (m && m->nb_int) { /* This should include subclasses of int */ + /* Classic classes always take this branch. */ PyObject *res = m->nb_int(o); if (res && (!PyInt_Check(res) && !PyLong_Check(res))) { PyErr_Format(PyExc_TypeError, @@ -1063,6 +1116,18 @@ PyIntObject *io = (PyIntObject*)o; return PyInt_FromLong(io->ob_ival); } + trunc_func = PyObject_GetAttr(o, trunc_name); + if (trunc_func) { + PyObject *truncated = PyEval_CallObject(trunc_func, NULL); + Py_DECREF(trunc_func); + /* __trunc__ is specified to return an Integral type, but + int() needs to return an int. */ + return _PyNumber_ConvertIntegralToInt( + truncated, + "__trunc__ returned non-Integral (type %.200s)"); + } + PyErr_Clear(); /* It's not an error if o.__trunc__ doesn't exist. */ + if (PyString_Check(o)) return int_from_string(PyString_AS_STRING(o), PyString_GET_SIZE(o)); @@ -1102,13 +1167,22 @@ PyNumber_Long(PyObject *o) { PyNumberMethods *m; + static PyObject *trunc_name = NULL; + PyObject *trunc_func; const char *buffer; Py_ssize_t buffer_len; + if (trunc_name == NULL) { + trunc_name = PyString_InternFromString("__trunc__"); + if (trunc_name == NULL) + return NULL; + } + if (o == NULL) return null_error(); m = o->ob_type->tp_as_number; if (m && m->nb_long) { /* This should include subclasses of long */ + /* Classic classes always take this branch. */ PyObject *res = m->nb_long(o); if (res && (!PyInt_Check(res) && !PyLong_Check(res))) { PyErr_Format(PyExc_TypeError, @@ -1121,6 +1195,26 @@ } if (PyLong_Check(o)) /* A long subclass without nb_long */ return _PyLong_Copy((PyLongObject *)o); + trunc_func = PyObject_GetAttr(o, trunc_name); + if (trunc_func) { + PyObject *truncated = PyEval_CallObject(trunc_func, NULL); + PyObject *int_instance; + Py_DECREF(trunc_func); + /* __trunc__ is specified to return an Integral type, + but long() needs to return a long. */ + int_instance = _PyNumber_ConvertIntegralToInt( + truncated, + "__trunc__ returned non-Integral (type %.200s)"); + if (int_instance && PyInt_Check(int_instance)) { + /* Make sure that long() returns a long instance. */ + long value = PyInt_AS_LONG(int_instance); + Py_DECREF(int_instance); + return PyLong_FromLong(value); + } + return int_instance; + } + PyErr_Clear(); /* It's not an error if o.__trunc__ doesn't exist. */ + if (PyString_Check(o)) /* need to do extra error checking that PyLong_FromString() * doesn't do. In particular long('9.5') must raise an Modified: python/trunk/Objects/classobject.c ============================================================================== --- python/trunk/Objects/classobject.c (original) +++ python/trunk/Objects/classobject.c Mon Feb 4 02:04:35 2008 @@ -1798,7 +1798,29 @@ UNARY(instance_invert, "__invert__") -UNARY(instance_int, "__int__") +UNARY(_instance_trunc, "__trunc__") + +static PyObject * +instance_int(PyInstanceObject *self) +{ + PyObject *truncated; + static PyObject *int_name; + if (int_name == NULL) { + int_name = PyString_InternFromString("__int__"); + if (int_name == NULL) + return NULL; + } + if (PyObject_HasAttr((PyObject*)self, int_name)) + return generic_unary_op(self, int_name); + + truncated = _instance_trunc(self); + /* __trunc__ is specified to return an Integral type, but + int() needs to return an int. */ + return _PyNumber_ConvertIntegralToInt( + truncated, + "__trunc__ returned non-Integral (type %.200s)"); +} + UNARY_FB(instance_long, "__long__", instance_int) UNARY(instance_float, "__float__") UNARY(instance_oct, "__oct__") From buildbot at python.org Mon Feb 4 03:23:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 02:23:58 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian trunk Message-ID: <20080204022358.C41721E4007@bag.python.org> The Buildbot has detected a new failure of MIPS Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%20trunk/builds/301 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 03:25:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 02:25:29 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080204022529.C47591E4007@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/530 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_xmlrpc sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 03:51:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 02:51:36 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080204025137.1DFAC1E4007@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2473 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 03:56:03 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 02:56:03 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080204025603.D5A341E402A@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1371 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout ====================================================================== FAIL: testConnectTimeout (test.test_timeout.TimeoutTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_timeout.py", line 122, in testConnectTimeout self.addr_remote) AssertionError: error not raised make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 04:36:32 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 03:36:32 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080204033632.77D041E4007@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/18 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc,jeffrey.yasskin BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 08:13:51 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 07:13:51 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080204071352.23B841E4005@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/29 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 19:00:13 2008 From: python-checkins at python.org (christian.heimes) Date: Mon, 4 Feb 2008 19:00:13 +0100 (CET) Subject: [Python-checkins] r60567 - in python/trunk: Doc/c-api/float.rst Doc/c-api/int.rst Doc/library/sys.rst Include/floatobject.h Include/intobject.h Lib/test/regrtest.py Lib/test/test_sys.py Misc/NEWS Objects/floatobject.c Objects/intobject.c Python/sysmodule.c Message-ID: <20080204180013.CF1B31E4027@bag.python.org> Author: christian.heimes Date: Mon Feb 4 19:00:12 2008 New Revision: 60567 Modified: python/trunk/Doc/c-api/float.rst python/trunk/Doc/c-api/int.rst python/trunk/Doc/library/sys.rst python/trunk/Include/floatobject.h python/trunk/Include/intobject.h python/trunk/Lib/test/regrtest.py python/trunk/Lib/test/test_sys.py python/trunk/Misc/NEWS python/trunk/Objects/floatobject.c python/trunk/Objects/intobject.c python/trunk/Python/sysmodule.c Log: Patch #1953 I implemented the function sys._compact_freelists() and C API functions PyInt_/PyFloat_CompactFreeList() to compact the pre-allocated blocks of ints and floats. They allow the user to reduce the memory usage of a Python process that deals with lots of numbers. The patch also renames sys._cleartypecache to sys._clear_type_cache Modified: python/trunk/Doc/c-api/float.rst ============================================================================== --- python/trunk/Doc/c-api/float.rst (original) +++ python/trunk/Doc/c-api/float.rst Mon Feb 4 19:00:12 2008 @@ -84,3 +84,12 @@ Return the minimum normalized positive float *DBL_MIN* as C :ctype:`double`. .. versionadded:: 2.6 + + +.. cfunction:: void PyFloat_CompactFreeList(size_t *bc, size_t *bf, size_t *sum) + + Compact the float free list. *bc* is the number of allocated blocks before + blocks are freed, *bf* is the number of freed blocks and *sum* is the number + of remaining objects in the blocks. + + .. versionadded:: 2.6 Modified: python/trunk/Doc/c-api/int.rst ============================================================================== --- python/trunk/Doc/c-api/int.rst (original) +++ python/trunk/Doc/c-api/int.rst Mon Feb 4 19:00:12 2008 @@ -120,3 +120,12 @@ Return the system's idea of the largest integer it can handle (:const:`LONG_MAX`, as defined in the system header files). + + +.. cfunction:: void PyInt_CompactFreeList(size_t *bc, size_t *bf, size_t *sum) + + Compact the integer free list. *bc* is the number of allocated blocks before + blocks are freed, *bf* is the number of freed blocks and *sum* is the number + of remaining objects in the blocks. + + .. versionadded:: 2.6 Modified: python/trunk/Doc/library/sys.rst ============================================================================== --- python/trunk/Doc/library/sys.rst (original) +++ python/trunk/Doc/library/sys.rst Mon Feb 4 19:00:12 2008 @@ -58,9 +58,29 @@ A string containing the copyright pertaining to the Python interpreter. -.. function:: _cleartypecache() +.. function:: _compact_freelists() - Clear the internal type lookup cache. + Compact the free lists of integers and floats by deallocating unused blocks. + It can reduce the memory usage of the Python process several tenth of + thousands of integers or floats have been allocated at once. + + The return value is a tuple of tuples each containing three elements, + amount of used objects, total block count before the blocks are deallocated + and amount of freed blocks. The first tuple refers to ints, the second to + floats. + + This function should be used for specialized purposes only. + + .. versionadded:: 2.6 + + +.. function:: _clear_type_cache() + + Clear the internal type cache. The type cache is used to speed up attribute + and method lookups. Use the function *only* to drop unnecessary references + during reference leak debugging. + + This function should be used for internal and specialized purposes only. .. versionadded:: 2.6 Modified: python/trunk/Include/floatobject.h ============================================================================== --- python/trunk/Include/floatobject.h (original) +++ python/trunk/Include/floatobject.h Mon Feb 4 19:00:12 2008 @@ -101,6 +101,8 @@ PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le); PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le); +/* free list api */ +PyAPI_FUNC(void) PyFloat_CompactFreeList(size_t *, size_t *, size_t *); #ifdef __cplusplus } Modified: python/trunk/Include/intobject.h ============================================================================== --- python/trunk/Include/intobject.h (original) +++ python/trunk/Include/intobject.h Mon Feb 4 19:00:12 2008 @@ -59,6 +59,9 @@ PyAPI_FUNC(unsigned long) PyOS_strtoul(char *, char **, int); PyAPI_FUNC(long) PyOS_strtol(char *, char **, int); +/* free list api */ +PyAPI_FUNC(void) PyInt_CompactFreeList(size_t *, size_t *, size_t *); + #ifdef __cplusplus } #endif Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Mon Feb 4 19:00:12 2008 @@ -710,7 +710,7 @@ sys.path_importer_cache.update(pic) # clear type cache - sys._cleartypecache() + sys._clear_type_cache() # Clear ABC registries, restoring previously saved ABC registries. for abc in [getattr(_abcoll, a) for a in _abcoll.__all__]: Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Mon Feb 4 19:00:12 2008 @@ -363,6 +363,24 @@ self.assertEqual(type(getattr(sys.flags, attr)), int, attr) self.assert_(repr(sys.flags)) + def test_clear_type_cache(self): + sys._clear_type_cache() + + def test_compact_freelists(self): + sys._compact_freelists() + r = sys._compact_freelists() + # freed blocks shouldn't change + self.assertEqual(r[0][2], 0) + self.assertEqual(r[1][2], 0) + # fill freelists + ints = list(range(12000)) + floats = [float(i) for i in ints] + del ints + del floats + # should free more than 200 blocks each + r = sys._compact_freelists() + self.assert_(r[0][2] > 200, r[0][2]) + self.assert_(r[1][2] > 200, r[1][2]) def test_main(): test.test_support.run_unittest(SysModuleTest) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Feb 4 19:00:12 2008 @@ -12,6 +12,10 @@ Core and builtins ----------------- +- Patch #1953: Added ??sys._compact_freelists()?? and the C API functions + ??PyInt_CompactFreeList?? and ??PyFloat_CompactFreeList?? + to compact the internal free lists of pre-allocted ints and floats. + - Bug #1983: Fixed return type of fork(), fork1() and forkpty() calls. Python expected the return type int but the fork familie returns pi_t. @@ -21,7 +25,7 @@ - Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection -- Added ``PyType_ClearCache()`` and ``sys._cleartypecache`` to clear the +- Added ``PyType_ClearCache()`` and ``sys._clear_type_cache`` to clear the internal lookup cache for ref leak tests. - Patch #1473257: generator objects gain a gi_code attribute. This is the Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Mon Feb 4 19:00:12 2008 @@ -1609,17 +1609,15 @@ } void -PyFloat_Fini(void) +PyFloat_CompactFreeList(size_t *pbc, size_t *pbf, size_t *bsum) { PyFloatObject *p; PyFloatBlock *list, *next; unsigned i; - int bc, bf; /* block count, number of freed blocks */ - int frem, fsum; /* remaining unfreed floats per block, total */ + size_t bc = 0, bf = 0; /* block count, number of freed blocks */ + size_t fsum = 0; /* total unfreed ints */ + int frem; /* remaining unfreed ints per block */ - bc = 0; - bf = 0; - fsum = 0; list = block_list; block_list = NULL; free_list = NULL; @@ -1654,6 +1652,22 @@ fsum += frem; list = next; } + *pbc = bc; + *pbf = bf; + *bsum = fsum; +} + +void +PyFloat_Fini(void) +{ + PyFloatObject *p; + PyFloatBlock *list; + unsigned i; + size_t bc, bf; /* block count, number of freed blocks */ + size_t fsum; /* total unfreed floats per block */ + + PyFloat_CompactFreeList(&bc, &bf, &fsum); + if (!Py_VerboseFlag) return; fprintf(stderr, "# cleanup floats"); @@ -1662,7 +1676,9 @@ } else { fprintf(stderr, - ": %d unfreed float%s in %d out of %d block%s\n", + ": %" PY_FORMAT_SIZE_T "d unfreed floats%s in %" + PY_FORMAT_SIZE_T "d out of %" + PY_FORMAT_SIZE_T "d block%s\n", fsum, fsum == 1 ? "" : "s", bc - bf, bc, bc == 1 ? "" : "s"); } Modified: python/trunk/Objects/intobject.c ============================================================================== --- python/trunk/Objects/intobject.c (original) +++ python/trunk/Objects/intobject.c Mon Feb 4 19:00:12 2008 @@ -1202,28 +1202,15 @@ } void -PyInt_Fini(void) +PyInt_CompactFreeList(size_t *pbc, size_t *pbf, size_t *bsum) { PyIntObject *p; PyIntBlock *list, *next; - int i; unsigned int ctr; - int bc, bf; /* block count, number of freed blocks */ - int irem, isum; /* remaining unfreed ints per block, total */ + size_t bc = 0, bf = 0; /* block count, number of freed blocks */ + size_t isum = 0; /* total unfreed ints */ + int irem; /* remaining unfreed ints per block */ -#if NSMALLNEGINTS + NSMALLPOSINTS > 0 - PyIntObject **q; - - i = NSMALLNEGINTS + NSMALLPOSINTS; - q = small_ints; - while (--i >= 0) { - Py_XDECREF(*q); - *q++ = NULL; - } -#endif - bc = 0; - bf = 0; - isum = 0; list = block_list; block_list = NULL; free_list = NULL; @@ -1268,6 +1255,33 @@ isum += irem; list = next; } + + *pbc = bc; + *pbf = bf; + *bsum = isum; +} + +void +PyInt_Fini(void) +{ + PyIntObject *p; + PyIntBlock *list; + unsigned int ctr; + size_t bc, bf; /* block count, number of freed blocks */ + size_t isum; /* total unfreed ints per block */ + +#if NSMALLNEGINTS + NSMALLPOSINTS > 0 + int i; + PyIntObject **q; + + i = NSMALLNEGINTS + NSMALLPOSINTS; + q = small_ints; + while (--i >= 0) { + Py_XDECREF(*q); + *q++ = NULL; + } +#endif + PyInt_CompactFreeList(&bc, &bf, &isum); if (!Py_VerboseFlag) return; fprintf(stderr, "# cleanup ints"); @@ -1276,7 +1290,9 @@ } else { fprintf(stderr, - ": %d unfreed int%s in %d out of %d block%s\n", + ": %" PY_FORMAT_SIZE_T "d unfreed ints%s in %" + PY_FORMAT_SIZE_T "d out of %" + PY_FORMAT_SIZE_T "d block%s\n", isum, isum == 1 ? "" : "s", bc - bf, bc, bc == 1 ? "" : "s"); } Modified: python/trunk/Python/sysmodule.c ============================================================================== --- python/trunk/Python/sysmodule.c (original) +++ python/trunk/Python/sysmodule.c Mon Feb 4 19:00:12 2008 @@ -754,17 +754,6 @@ 10. Number of stack pops performed by call_function()" ); -static PyObject * -sys_cleartypecache(PyObject* self, PyObject* args) -{ - PyType_ClearCache(); - Py_RETURN_NONE; -} - -PyDoc_STRVAR(cleartypecache_doc, -"_cleartypecache() -> None\n\ -Clear the internal type lookup cache."); - #ifdef __cplusplus extern "C" { #endif @@ -783,12 +772,44 @@ } #endif +static PyObject * +sys_clear_type_cache(PyObject* self, PyObject* args) +{ + PyType_ClearCache(); + Py_RETURN_NONE; +} + +PyDoc_STRVAR(sys_clear_type_cache__doc__, +"_clear_type_cache() -> None\n\ +Clear the internal type lookup cache."); + + +static PyObject * +sys_compact_freelists(PyObject* self, PyObject* args) +{ + size_t isum, ibc, ibf; + size_t fsum, fbc, fbf; + + PyInt_CompactFreeList(&ibc, &ibf, &isum); + PyFloat_CompactFreeList(&fbc, &fbf, &fsum); + + return Py_BuildValue("(kkk)(kkk)", isum, ibc, ibf, + fsum, fbc, fbf); + +} + +PyDoc_STRVAR(sys_compact_freelists__doc__, +"_compact_freelists() -> ((remaing_objects, total_blocks, freed_blocks), ...)\n\ +Compact the free lists of ints and floats."); + static PyMethodDef sys_methods[] = { /* Might as well keep this in alphabetic order */ {"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS, callstats_doc}, - {"_cleartypecache", sys_cleartypecache, METH_NOARGS, - cleartypecache_doc}, + {"_clear_type_cache", sys_clear_type_cache, METH_NOARGS, + sys_clear_type_cache__doc__}, + {"_compact_freelists", sys_compact_freelists, METH_NOARGS, + sys_compact_freelists__doc__}, {"_current_frames", sys_current_frames, METH_NOARGS, current_frames_doc}, {"displayhook", sys_displayhook, METH_O, displayhook_doc}, From buildbot at python.org Mon Feb 4 19:26:56 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:26:56 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080204182656.6C5E31E4006@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3032 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 19:27:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:27:11 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc trunk Message-ID: <20080204182712.1DAAD1E4006@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%20trunk/builds/1403 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/trunk.loewis-linux/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Fehler 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 19:30:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:30:02 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080204183002.A46FF1E4006@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/106 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 19:39:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:39:04 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080204183905.20BFB1E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/841 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 19:42:15 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:42:15 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080204184215.8DAE51E4006@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/741 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 19:48:38 2008 From: python-checkins at python.org (christian.heimes) Date: Mon, 4 Feb 2008 19:48:38 +0100 (CET) Subject: [Python-checkins] r60568 - python/trunk/Lib/test/test_sys.py Message-ID: <20080204184838.B43FF1E403A@bag.python.org> Author: christian.heimes Date: Mon Feb 4 19:48:38 2008 New Revision: 60568 Modified: python/trunk/Lib/test/test_sys.py Log: Increase debugging to investige failing tests on some build bots Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Mon Feb 4 19:48:38 2008 @@ -379,6 +379,9 @@ del floats # should free more than 200 blocks each r = sys._compact_freelists() + self.assert_(r[0][1] > 200, r[0][1]) + self.assert_(r[1][2] > 200, r[1][1]) + self.assert_(r[0][2] > 200, r[0][2]) self.assert_(r[1][2] > 200, r[1][2]) From buildbot at python.org Mon Feb 4 19:56:27 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 18:56:27 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080204185627.969031E4006@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2777 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 20:02:30 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 19:02:30 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080204190230.773751E4006@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/43 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 20:30:05 2008 From: python-checkins at python.org (christian.heimes) Date: Mon, 4 Feb 2008 20:30:05 +0100 (CET) Subject: [Python-checkins] r60570 - python/trunk/Lib/test/test_sys.py Message-ID: <20080204193005.637F01E4006@bag.python.org> Author: christian.heimes Date: Mon Feb 4 20:30:05 2008 New Revision: 60570 Modified: python/trunk/Lib/test/test_sys.py Log: Small adjustments for test compact freelist test. It's no passing on Windows as well. Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Mon Feb 4 20:30:05 2008 @@ -373,17 +373,17 @@ self.assertEqual(r[0][2], 0) self.assertEqual(r[1][2], 0) # fill freelists - ints = list(range(12000)) + ints = list(range(10000)) floats = [float(i) for i in ints] del ints del floats # should free more than 200 blocks each r = sys._compact_freelists() - self.assert_(r[0][1] > 200, r[0][1]) - self.assert_(r[1][2] > 200, r[1][1]) + self.assert_(r[0][1] > 100, r[0][1]) + self.assert_(r[1][2] > 100, r[1][1]) - self.assert_(r[0][2] > 200, r[0][2]) - self.assert_(r[1][2] > 200, r[1][2]) + self.assert_(r[0][2] > 100, r[0][2]) + self.assert_(r[1][2] > 100, r[1][2]) def test_main(): test.test_support.run_unittest(SysModuleTest) From buildbot at python.org Mon Feb 4 20:31:17 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 19:31:17 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080204193117.78FAD1E401D@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/600 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 20:44:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 19:44:36 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080204194436.678241E4006@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/532 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 21:05:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 20:05:01 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080204200501.ED5BF1E4022@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/172 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_sys.py", line 382, in test_compact_freelists self.assert_(r[0][2] > 200, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 21:09:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 20:09:55 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080204200956.05B3C1E4009@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/488 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 21:32:34 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 20:32:34 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080204203234.A10AF1E4006@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/256 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Mon Feb 4 22:09:37 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Feb 2008 16:09:37 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080204210937.GA19246@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [548597 refs] From nnorwitz at gmail.com Mon Feb 4 22:16:34 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Feb 2008 16:16:34 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080204211634.GA24483@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9521 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [548210 refs] From python-checkins at python.org Mon Feb 4 21:53:14 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 21:53:14 +0100 (CET) Subject: [Python-checkins] r60573 - python/trunk/Misc/NEWS Message-ID: <20080204205314.8B7451E4006@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 21:53:14 2008 New Revision: 60573 Modified: python/trunk/Misc/NEWS Log: Correct quotes in NEWS file Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Feb 4 21:53:14 2008 @@ -12,8 +12,8 @@ Core and builtins ----------------- -- Patch #1953: Added ??sys._compact_freelists()?? and the C API functions - ??PyInt_CompactFreeList?? and ??PyFloat_CompactFreeList?? +- Patch #1953: Added ``sys._compact_freelists()`` and the C API functions + ``PyInt_CompactFreeList`` and ``PyFloat_CompactFreeList`` to compact the internal free lists of pre-allocted ints and floats. - Bug #1983: Fixed return type of fork(), fork1() and forkpty() calls. From buildbot at python.org Mon Feb 4 22:10:51 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 21:10:51 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 3.0 Message-ID: <20080204211052.0ED5C1E4006@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%203.0/builds/43 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_bsddb3 Traceback (most recent call last): File "./Lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_bsddb3.py", line 90, in test_main run_unittest(suite()) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/test/test_bsddb3.py", line 81, in suite module = __import__("bsddb.test."+name, globals(), locals(), name) File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/test/test_associate.py", line 25, in from bsddb import db, dbshelve File "/home/buildbot/slave/py-build/3.0.norwitz-amd64/build/Lib/bsddb/dbshelve.py", line 93, in class DBShelf(DictMixin): NameError: name 'DictMixin' is not defined make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 22:45:05 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 22:45:05 +0100 (CET) Subject: [Python-checkins] r60575 - in python/trunk: Lib/test/test_trace.py Misc/NEWS Python/compile.c Message-ID: <20080204214505.A06281E4006@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 22:45:05 2008 New Revision: 60575 Modified: python/trunk/Lib/test/test_trace.py python/trunk/Misc/NEWS python/trunk/Python/compile.c Log: #1750076: Debugger did not step on every iteration of a while statement. The mapping between bytecode offsets and source lines (lnotab) did not contain an entry for the beginning of the loop. Now it does, and the lnotab can be a bit larger: in particular, several statements on the same line generate several entries. However, this does not bother the settrace function, which will trigger only one 'line' event. The lnotab seems to be exactly the same as with python2.4. Modified: python/trunk/Lib/test/test_trace.py ============================================================================== --- python/trunk/Lib/test/test_trace.py (original) +++ python/trunk/Lib/test/test_trace.py Mon Feb 4 22:45:05 2008 @@ -252,14 +252,16 @@ "\n".join(difflib.ndiff([str(x) for x in expected_events], [str(x) for x in events]))) - - def run_test(self, func): + def run_and_compare(self, func, events): tracer = Tracer() sys.settrace(tracer.trace) func() sys.settrace(None) self.compare_events(func.func_code.co_firstlineno, - tracer.events, func.events) + tracer.events, events) + + def run_test(self, func): + self.run_and_compare(func, func.events) def run_test2(self, func): tracer = Tracer() @@ -321,6 +323,49 @@ self.compare_events(generator_example.__code__.co_firstlineno, tracer.events, generator_example.events) + def test_14_onliner_if(self): + def onliners(): + if True: False + else: True + return 0 + self.run_and_compare( + onliners, + [(0, 'call'), + (1, 'line'), + (3, 'line'), + (3, 'return')]) + + def test_15_loops(self): + # issue1750076: "while" expression is skipped by debugger + def for_example(): + for x in range(2): + pass + self.run_and_compare( + for_example, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (1, 'line'), + (2, 'line'), + (1, 'line'), + (1, 'return')]) + + def while_example(): + # While expression should be traced on every loop + x = 2 + while x > 0: + x -= 1 + self.run_and_compare( + while_example, + [(0, 'call'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (3, 'line'), + (4, 'line'), + (3, 'line'), + (3, 'return')]) + class RaisingTraceFuncTestCase(unittest.TestCase): def trace(self, frame, event, arg): """A trace function that raises an exception in response to a Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Feb 4 22:45:05 2008 @@ -388,6 +388,10 @@ Library ------- +- #175006: The debugger used to skip the condition of a "while" statement + after the first iteration. Now it correctly steps on the expression, and + breakpoints on the "while" statement are honored on each loop. + - #1765140: add an optional delay argument to FileHandler and its subclasses. Defaults to false (existing behaviour), but if true, defers opening the file until the first call to emit(). Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Mon Feb 4 22:45:05 2008 @@ -638,11 +638,16 @@ return b->b_iused++; } -/* Set the i_lineno member of the instruction at offse off if the - line number for the current expression/statement (?) has not +/* Set the i_lineno member of the instruction at offset off if the + line number for the current expression/statement has not already been set. If it has been set, the call has no effect. - Every time a new node is b + The line number is reset in the following cases: + - when entering a new scope + - on each statement + - on each expression that start a new line + - before the "except" clause + - before the "for" and "while" expressions */ static void @@ -1611,9 +1616,8 @@ VISIT(c, expr, s->v.For.iter); ADDOP(c, GET_ITER); compiler_use_next_block(c, start); - /* XXX(nnorwitz): is there a better way to handle this? - for loops are special, we want to be able to trace them - each time around, so we need to set an extra line number. */ + /* for expressions must be traced on each iteration, + so we need to set an extra line number. */ c->u->u_lineno_set = false; ADDOP_JREL(c, FOR_ITER, cleanup); VISIT(c, expr, s->v.For.target); @@ -1660,6 +1664,9 @@ if (!compiler_push_fblock(c, LOOP, loop)) return 0; if (constant == -1) { + /* while expressions must be traced on each iteration, + so we need to set an extra line number. */ + c->u->u_lineno_set = false; VISIT(c, expr, s->v.While.test); ADDOP_JREL(c, JUMP_IF_FALSE, anchor); ADDOP(c, POP_TOP); @@ -1840,8 +1847,8 @@ s->v.TryExcept.handlers, i); if (!handler->type && i < n-1) return compiler_error(c, "default 'except:' must be last"); - c->u->u_lineno_set = false; - c->u->u_lineno = handler->lineno; + c->u->u_lineno_set = false; + c->u->u_lineno = handler->lineno; except = compiler_new_block(c); if (except == NULL) return 0; @@ -3553,12 +3560,6 @@ assert(d_bytecode >= 0); assert(d_lineno >= 0); - /* XXX(nnorwitz): is there a better way to handle this? - for loops are special, we want to be able to trace them - each time around, so we need to set an extra line number. */ - if (d_lineno == 0 && i->i_opcode != FOR_ITER) - return 1; - if (d_bytecode > 255) { int j, nbytes, ncodes = d_bytecode / 255; nbytes = a->a_lnotab_off + 2 * ncodes; From buildbot at python.org Mon Feb 4 22:50:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 21:50:16 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 3.0 Message-ID: <20080204215021.363401E401D@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%203.0/builds/45 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 22:50:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 21:50:16 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080204215021.3EB351E4009@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/502 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 22:50:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 21:50:16 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080204215021.539831E4017@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/526 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 23:00:36 2008 From: python-checkins at python.org (guido.van.rossum) Date: Mon, 4 Feb 2008 23:00:36 +0100 (CET) Subject: [Python-checkins] r60576 - in python/branches/release25-maint: Misc/NEWS Modules/_sre.c Message-ID: <20080204220036.585CE1E4009@bag.python.org> Author: guido.van.rossum Date: Mon Feb 4 23:00:35 2008 New Revision: 60576 Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/_sre.c Log: Backport r59862 (issue #712900): make long regexp matches interruptable by signals. Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Mon Feb 4 23:00:35 2008 @@ -212,6 +212,8 @@ Extension Modules ----------------- +- Backport r59862 (issue #712900): make long regexp matches interruptable. + - #1940: make it possible to use curses.filter() before curses.initscr() as the documentation says. Modified: python/branches/release25-maint/Modules/_sre.c ============================================================================== --- python/branches/release25-maint/Modules/_sre.c (original) +++ python/branches/release25-maint/Modules/_sre.c Mon Feb 4 23:00:35 2008 @@ -99,6 +99,7 @@ #define SRE_ERROR_STATE -2 /* illegal state */ #define SRE_ERROR_RECURSION_LIMIT -3 /* runaway recursion */ #define SRE_ERROR_MEMORY -9 /* out of memory */ +#define SRE_ERROR_INTERRUPTED -10 /* signal handler raised exception */ #if defined(VERBOSE) #define TRACE(v) printf v @@ -809,6 +810,7 @@ Py_ssize_t alloc_pos, ctx_pos = -1; Py_ssize_t i, ret = 0; Py_ssize_t jump; + unsigned int sigcount=0; SRE_MATCH_CONTEXT* ctx; SRE_MATCH_CONTEXT* nextctx; @@ -837,6 +839,9 @@ } for (;;) { + ++sigcount; + if ((0 == (sigcount & 0xfff)) && PyErr_CheckSignals()) + RETURN_ERROR(SRE_ERROR_INTERRUPTED); switch (*ctx->pattern++) { @@ -1834,6 +1839,9 @@ case SRE_ERROR_MEMORY: PyErr_NoMemory(); break; + case SRE_ERROR_INTERRUPTED: + /* An exception has already been raised, so let it fly */ + break; default: /* other error codes indicate compiler/engine bugs */ PyErr_SetString( From buildbot at python.org Mon Feb 4 23:13:17 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 22:13:17 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080204221317.60F4B1E4006@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/555 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver sincerely, -The Buildbot From buildbot at python.org Mon Feb 4 23:30:49 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 22:30:49 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080204223050.0B2131E4006@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/605 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list sincerely, -The Buildbot From python-checkins at python.org Mon Feb 4 23:34:57 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Mon, 4 Feb 2008 23:34:57 +0100 (CET) Subject: [Python-checkins] r60579 - in python/branches/release25-maint: Lib/test/test_trace.py Misc/NEWS Python/compile.c Message-ID: <20080204223457.DCE4B1E4006@bag.python.org> Author: amaury.forgeotdarc Date: Mon Feb 4 23:34:57 2008 New Revision: 60579 Modified: python/branches/release25-maint/Lib/test/test_trace.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Python/compile.c Log: backport of r60575 (issue #1750076): Debugger did not step on every iteration of a while statement. The mapping between bytecode offsets and source lines (lnotab) did not contain an entry for the beginning of the loop. Now it does, and the lnotab can be a bit larger: in particular, several statements on the same line generate several entries. However, this does not bother the settrace function, which will trigger only one 'line' event. The lnotab seems to be exactly the same as with python2.4. Modified: python/branches/release25-maint/Lib/test/test_trace.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_trace.py (original) +++ python/branches/release25-maint/Lib/test/test_trace.py Mon Feb 4 23:34:57 2008 @@ -252,14 +252,16 @@ "\n".join(difflib.ndiff([str(x) for x in expected_events], [str(x) for x in events]))) - - def run_test(self, func): + def run_and_compare(self, func, events): tracer = Tracer() sys.settrace(tracer.trace) func() sys.settrace(None) self.compare_events(func.func_code.co_firstlineno, - tracer.events, func.events) + tracer.events, events) + + def run_test(self, func): + self.run_and_compare(func, func.events) def run_test2(self, func): tracer = Tracer() @@ -307,6 +309,49 @@ self.compare_events(generator_example.func_code.co_firstlineno, tracer.events, generator_example.events) + def test_14_onliner_if(self): + def onliners(): + if True: False + else: True + return 0 + self.run_and_compare( + onliners, + [(0, 'call'), + (1, 'line'), + (3, 'line'), + (3, 'return')]) + + def test_15_loops(self): + # issue1750076: "while" expression is skipped by debugger + def for_example(): + for x in range(2): + pass + self.run_and_compare( + for_example, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (1, 'line'), + (2, 'line'), + (1, 'line'), + (1, 'return')]) + + def while_example(): + # While expression should be traced on every loop + x = 2 + while x > 0: + x -= 1 + self.run_and_compare( + while_example, + [(0, 'call'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (3, 'line'), + (4, 'line'), + (3, 'line'), + (3, 'return')]) + class RaisingTraceFuncTestCase(unittest.TestCase): def trace(self, frame, event, arg): """A trace function that raises an exception in response to a Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Mon Feb 4 23:34:57 2008 @@ -80,6 +80,10 @@ Library ------- +- #175006: The debugger used to skip the condition of a "while" statement + after the first iteration. Now it correctly steps on the expression, and + breakpoints on the "while" statement are honored on each loop. + - The ctypes int types did not accept objects implementing __int__() in the constructor. Modified: python/branches/release25-maint/Python/compile.c ============================================================================== --- python/branches/release25-maint/Python/compile.c (original) +++ python/branches/release25-maint/Python/compile.c Mon Feb 4 23:34:57 2008 @@ -1298,11 +1298,16 @@ return b->b_iused++; } -/* Set the i_lineno member of the instruction at offse off if the - line number for the current expression/statement (?) has not +/* Set the i_lineno member of the instruction at offset off if the + line number for the current expression/statement has not already been set. If it has been set, the call has no effect. - Every time a new node is b + The line number is reset in the following cases: + - when entering a new scope + - on each statement + - on each expression that start a new line + - before the "except" clause + - before the "for" and "while" expressions */ static void @@ -2234,9 +2239,8 @@ VISIT(c, expr, s->v.For.iter); ADDOP(c, GET_ITER); compiler_use_next_block(c, start); - /* XXX(nnorwitz): is there a better way to handle this? - for loops are special, we want to be able to trace them - each time around, so we need to set an extra line number. */ + /* for expressions must be traced on each iteration, + so we need to set an extra line number. */ c->u->u_lineno_set = false; ADDOP_JREL(c, FOR_ITER, cleanup); VISIT(c, expr, s->v.For.target); @@ -2283,6 +2287,9 @@ if (!compiler_push_fblock(c, LOOP, loop)) return 0; if (constant == -1) { + /* while expressions must be traced on each iteration, + so we need to set an extra line number. */ + c->u->u_lineno_set = false; VISIT(c, expr, s->v.While.test); ADDOP_JREL(c, JUMP_IF_FALSE, anchor); ADDOP(c, POP_TOP); @@ -2464,8 +2471,8 @@ s->v.TryExcept.handlers, i); if (!handler->type && i < n-1) return compiler_error(c, "default 'except:' must be last"); - c->u->u_lineno_set = false; - c->u->u_lineno = handler->lineno; + c->u->u_lineno_set = false; + c->u->u_lineno = handler->lineno; except = compiler_new_block(c); if (except == NULL) return 0; @@ -4184,12 +4191,6 @@ assert(d_bytecode >= 0); assert(d_lineno >= 0); - /* XXX(nnorwitz): is there a better way to handle this? - for loops are special, we want to be able to trace them - each time around, so we need to set an extra line number. */ - if (d_lineno == 0 && i->i_opcode != FOR_ITER) - return 1; - if (d_bytecode > 255) { int j, nbytes, ncodes = d_bytecode / 255; nbytes = a->a_lnotab_off + 2 * ncodes; From nnorwitz at gmail.com Tue Feb 5 00:07:51 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Feb 2008 18:07:51 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080204230751.GA4077@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 3: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [560245 refs] From buildbot at python.org Tue Feb 5 00:08:32 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 23:08:32 +0000 Subject: [Python-checkins] buildbot failure in x86 mvlgcc 2.5 Message-ID: <20080204230832.DC0931E4006@bag.python.org> The Buildbot has detected a new failure of x86 mvlgcc 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20mvlgcc%202.5/builds/417 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-linux Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home2/buildbot/slave/2.5.loewis-linux/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' make: *** [buildbottest] Fehler 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 00:13:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 23:13:02 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo 2.5 Message-ID: <20080204231303.43E0F1E4008@bag.python.org> The Buildbot has detected a new failure of x86 gentoo 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%202.5/builds/541 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/unittest.py", line 334, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0004-0004-0004-0004-0004' Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/unittest.py", line 334, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2002-2002-2002-2002-2002' Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 260, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/unittest.py", line 334, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1007-1007-1007-1007-1007' 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/2.5.norwitz-x86/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 00:18:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 23:18:10 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 2.5 Message-ID: <20080204231810.D59071E4006@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%202.5/builds/22 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 00:40:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 23:40:04 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 2.5 Message-ID: <20080204234004.679061E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%202.5/builds/183 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\test\test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 00:41:03 2008 From: python-checkins at python.org (brett.cannon) Date: Tue, 5 Feb 2008 00:41:03 +0100 (CET) Subject: [Python-checkins] r60581 - python/branches/release25-maint/setup.py Message-ID: <20080204234103.0D1B31E4006@bag.python.org> Author: brett.cannon Date: Tue Feb 5 00:41:02 2008 New Revision: 60581 Modified: python/branches/release25-maint/setup.py Log: Turn off a debugging flag. Modified: python/branches/release25-maint/setup.py ============================================================================== --- python/branches/release25-maint/setup.py (original) +++ python/branches/release25-maint/setup.py Tue Feb 5 00:41:02 2008 @@ -755,7 +755,7 @@ dblib_dir = None # The sqlite interface - sqlite_setup_debug = True # verbose debug prints from this script? + sqlite_setup_debug = False # verbose debug prints from this script? # We hunt for #define SQLITE_VERSION "n.n.n" # We need to find >= sqlite version 3.0.8 From brett at python.org Tue Feb 5 00:41:28 2008 From: brett at python.org (Brett Cannon) Date: Mon, 4 Feb 2008 15:41:28 -0800 Subject: [Python-checkins] r60579 - in python/branches/release25-maint: Lib/test/test_trace.py Misc/NEWS Python/compile.c In-Reply-To: <20080204223457.DCE4B1E4006@bag.python.org> References: <20080204223457.DCE4B1E4006@bag.python.org> Message-ID: It looks like this broke test_compile. -Brett On Feb 4, 2008 2:34 PM, amaury.forgeotdarc wrote: > Author: amaury.forgeotdarc > Date: Mon Feb 4 23:34:57 2008 > New Revision: 60579 > > Modified: > python/branches/release25-maint/Lib/test/test_trace.py > python/branches/release25-maint/Misc/NEWS > python/branches/release25-maint/Python/compile.c > Log: > backport of r60575 (issue #1750076): Debugger did not step on every iteration of a while statement. > > The mapping between bytecode offsets and source lines (lnotab) did not contain > an entry for the beginning of the loop. > > Now it does, and the lnotab can be a bit larger: > in particular, several statements on the same line generate several entries. > However, this does not bother the settrace function, which will trigger only > one 'line' event. > > The lnotab seems to be exactly the same as with python2.4. > > > Modified: python/branches/release25-maint/Lib/test/test_trace.py > ============================================================================== > --- python/branches/release25-maint/Lib/test/test_trace.py (original) > +++ python/branches/release25-maint/Lib/test/test_trace.py Mon Feb 4 23:34:57 2008 > @@ -252,14 +252,16 @@ > "\n".join(difflib.ndiff([str(x) for x in expected_events], > [str(x) for x in events]))) > > - > - def run_test(self, func): > + def run_and_compare(self, func, events): > tracer = Tracer() > sys.settrace(tracer.trace) > func() > sys.settrace(None) > self.compare_events(func.func_code.co_firstlineno, > - tracer.events, func.events) > + tracer.events, events) > + > + def run_test(self, func): > + self.run_and_compare(func, func.events) > > def run_test2(self, func): > tracer = Tracer() > @@ -307,6 +309,49 @@ > self.compare_events(generator_example.func_code.co_firstlineno, > tracer.events, generator_example.events) > > + def test_14_onliner_if(self): > + def onliners(): > + if True: False > + else: True > + return 0 > + self.run_and_compare( > + onliners, > + [(0, 'call'), > + (1, 'line'), > + (3, 'line'), > + (3, 'return')]) > + > + def test_15_loops(self): > + # issue1750076: "while" expression is skipped by debugger > + def for_example(): > + for x in range(2): > + pass > + self.run_and_compare( > + for_example, > + [(0, 'call'), > + (1, 'line'), > + (2, 'line'), > + (1, 'line'), > + (2, 'line'), > + (1, 'line'), > + (1, 'return')]) > + > + def while_example(): > + # While expression should be traced on every loop > + x = 2 > + while x > 0: > + x -= 1 > + self.run_and_compare( > + while_example, > + [(0, 'call'), > + (2, 'line'), > + (3, 'line'), > + (4, 'line'), > + (3, 'line'), > + (4, 'line'), > + (3, 'line'), > + (3, 'return')]) > + > class RaisingTraceFuncTestCase(unittest.TestCase): > def trace(self, frame, event, arg): > """A trace function that raises an exception in response to a > > Modified: python/branches/release25-maint/Misc/NEWS > ============================================================================== > --- python/branches/release25-maint/Misc/NEWS (original) > +++ python/branches/release25-maint/Misc/NEWS Mon Feb 4 23:34:57 2008 > @@ -80,6 +80,10 @@ > Library > ------- > > +- #175006: The debugger used to skip the condition of a "while" statement > + after the first iteration. Now it correctly steps on the expression, and > + breakpoints on the "while" statement are honored on each loop. > + > - The ctypes int types did not accept objects implementing > __int__() in the constructor. > > > Modified: python/branches/release25-maint/Python/compile.c > ============================================================================== > --- python/branches/release25-maint/Python/compile.c (original) > +++ python/branches/release25-maint/Python/compile.c Mon Feb 4 23:34:57 2008 > @@ -1298,11 +1298,16 @@ > return b->b_iused++; > } > > -/* Set the i_lineno member of the instruction at offse off if the > - line number for the current expression/statement (?) has not > +/* Set the i_lineno member of the instruction at offset off if the > + line number for the current expression/statement has not > already been set. If it has been set, the call has no effect. > > - Every time a new node is b > + The line number is reset in the following cases: > + - when entering a new scope > + - on each statement > + - on each expression that start a new line > + - before the "except" clause > + - before the "for" and "while" expressions > */ > > static void > @@ -2234,9 +2239,8 @@ > VISIT(c, expr, s->v.For.iter); > ADDOP(c, GET_ITER); > compiler_use_next_block(c, start); > - /* XXX(nnorwitz): is there a better way to handle this? > - for loops are special, we want to be able to trace them > - each time around, so we need to set an extra line number. */ > + /* for expressions must be traced on each iteration, > + so we need to set an extra line number. */ > c->u->u_lineno_set = false; > ADDOP_JREL(c, FOR_ITER, cleanup); > VISIT(c, expr, s->v.For.target); > @@ -2283,6 +2287,9 @@ > if (!compiler_push_fblock(c, LOOP, loop)) > return 0; > if (constant == -1) { > + /* while expressions must be traced on each iteration, > + so we need to set an extra line number. */ > + c->u->u_lineno_set = false; > VISIT(c, expr, s->v.While.test); > ADDOP_JREL(c, JUMP_IF_FALSE, anchor); > ADDOP(c, POP_TOP); > @@ -2464,8 +2471,8 @@ > s->v.TryExcept.handlers, i); > if (!handler->type && i < n-1) > return compiler_error(c, "default 'except:' must be last"); > - c->u->u_lineno_set = false; > - c->u->u_lineno = handler->lineno; > + c->u->u_lineno_set = false; > + c->u->u_lineno = handler->lineno; > except = compiler_new_block(c); > if (except == NULL) > return 0; > @@ -4184,12 +4191,6 @@ > assert(d_bytecode >= 0); > assert(d_lineno >= 0); > > - /* XXX(nnorwitz): is there a better way to handle this? > - for loops are special, we want to be able to trace them > - each time around, so we need to set an extra line number. */ > - if (d_lineno == 0 && i->i_opcode != FOR_ITER) > - return 1; > - > if (d_bytecode > 255) { > int j, nbytes, ncodes = d_bytecode / 255; > nbytes = a->a_lnotab_off + 2 * ncodes; > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From buildbot at python.org Tue Feb 5 00:48:32 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 04 Feb 2008 23:48:32 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian 2.5 Message-ID: <20080204234832.B25551E4006@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%202.5/builds/162 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/2.5.klose-debian-ppc64/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From amauryfa at gmail.com Tue Feb 5 00:49:00 2008 From: amauryfa at gmail.com (Amaury Forgeot d'Arc) Date: Tue, 5 Feb 2008 00:49:00 +0100 Subject: [Python-checkins] r60579 - in python/branches/release25-maint: Lib/test/test_trace.py Misc/NEWS Python/compile.c Message-ID: > It looks like this broke test_compile. Yes, sorry. I jut saw the failure on the buildbots. Correction comes in a few seconds... -- Amaury Forgeot d'Arc From python-checkins at python.org Tue Feb 5 00:51:56 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Tue, 5 Feb 2008 00:51:56 +0100 (CET) Subject: [Python-checkins] r60582 - in python/branches/release25-maint: Lib/test/test_trace.py Python/compile.c Message-ID: <20080204235156.4489F1E4006@bag.python.org> Author: amaury.forgeotdarc Date: Tue Feb 5 00:51:55 2008 New Revision: 60582 Modified: python/branches/release25-maint/Lib/test/test_trace.py python/branches/release25-maint/Python/compile.c Log: No need to emit co_lnotab item when both offsets are zeros. r60579 broke a test test_compile, which seems to test an "implementation detail" IMO. Also test that this correction does not impact the debugger. Modified: python/branches/release25-maint/Lib/test/test_trace.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_trace.py (original) +++ python/branches/release25-maint/Lib/test/test_trace.py Tue Feb 5 00:51:55 2008 @@ -352,6 +352,15 @@ (3, 'line'), (3, 'return')]) + def test_16_blank_lines(self): + exec("def f():\n" + "\n" * 256 + " pass") + self.run_and_compare( + f, + [(0, 'call'), + (257, 'line'), + (257, 'return')]) + + class RaisingTraceFuncTestCase(unittest.TestCase): def trace(self, frame, event, arg): """A trace function that raises an exception in response to a Modified: python/branches/release25-maint/Python/compile.c ============================================================================== --- python/branches/release25-maint/Python/compile.c (original) +++ python/branches/release25-maint/Python/compile.c Tue Feb 5 00:51:55 2008 @@ -4191,6 +4191,9 @@ assert(d_bytecode >= 0); assert(d_lineno >= 0); + if(d_bytecode == 0 && d_lineno == 0) + return 1; + if (d_bytecode > 255) { int j, nbytes, ncodes = d_bytecode / 255; nbytes = a->a_lnotab_off + 2 * ncodes; From buildbot at python.org Tue Feb 5 01:03:49 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 00:03:49 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080205000349.E4E7D1E4008@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/20 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 01:12:13 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 00:12:13 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 2.5 Message-ID: <20080205001213.567FC1E4006@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%202.5/builds/523 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/2.5.loewis-sun/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 01:26:22 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Tue, 5 Feb 2008 01:26:22 +0100 (CET) Subject: [Python-checkins] r60584 - in python/trunk: Lib/test/test_trace.py Python/compile.c Message-ID: <20080205002622.353661E4027@bag.python.org> Author: amaury.forgeotdarc Date: Tue Feb 5 01:26:21 2008 New Revision: 60584 Modified: python/trunk/Lib/test/test_trace.py python/trunk/Python/compile.c Log: Change r60575 broke test_compile: there is no need to emit co_lnotab item when both offsets are zeros. Modified: python/trunk/Lib/test/test_trace.py ============================================================================== --- python/trunk/Lib/test/test_trace.py (original) +++ python/trunk/Lib/test/test_trace.py Tue Feb 5 01:26:21 2008 @@ -366,6 +366,15 @@ (3, 'line'), (3, 'return')]) + def test_16_blank_lines(self): + exec("def f():\n" + "\n" * 256 + " pass") + self.run_and_compare( + f, + [(0, 'call'), + (257, 'line'), + (257, 'return')]) + + class RaisingTraceFuncTestCase(unittest.TestCase): def trace(self, frame, event, arg): """A trace function that raises an exception in response to a Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Tue Feb 5 01:26:21 2008 @@ -3560,6 +3560,9 @@ assert(d_bytecode >= 0); assert(d_lineno >= 0); + if(d_bytecode == 0 && d_lineno == 0) + return 1; + if (d_bytecode > 255) { int j, nbytes, ncodes = d_bytecode / 255; nbytes = a->a_lnotab_off + 2 * ncodes; From buildbot at python.org Tue Feb 5 01:35:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 00:35:29 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 2.5 Message-ID: <20080205003529.6B76D1E4006@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%202.5/builds/167 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compile ====================================================================== FAIL: test_leading_newlines (test.test_compile.TestSpecifics) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-debian-ppc/build/Lib/test/test_compile.py", line 180, in test_leading_newlines self.assertEqual(co.co_lnotab, '') AssertionError: '\x00\x00' != '' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 02:10:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 01:10:57 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080205011057.E04B11E402A@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/529 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/threading.py", line 445, in run self._target(*self._args, **self._kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_ssl.py", line 783, in listener s.bind(('127.0.0.1', TESTPORT)) socket.error: [Errno 98] Address already in use sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 03:32:16 2008 From: python-checkins at python.org (skip.montanaro) Date: Tue, 5 Feb 2008 03:32:16 +0100 (CET) Subject: [Python-checkins] r60587 - python/trunk/Misc/python-mode.el Message-ID: <20080205023216.9A68A1E4006@bag.python.org> Author: skip.montanaro Date: Tue Feb 5 03:32:16 2008 New Revision: 60587 Modified: python/trunk/Misc/python-mode.el Log: sync with most recent version from python-mode sf project Modified: python/trunk/Misc/python-mode.el ============================================================================== --- python/trunk/Misc/python-mode.el (original) +++ python/trunk/Misc/python-mode.el Tue Feb 5 03:32:16 2008 @@ -2,7 +2,8 @@ ;; Copyright (C) 1992,1993,1994 Tim Peters -;; Author: 1995-2002 Barry A. Warsaw +;; Author: 2003-2007 http://sf.net/projects/python-mode +;; 1995-2002 Barry A. Warsaw ;; 1992-1994 Tim Peters ;; Maintainer: python-mode at python.org ;; Created: Feb 1992 @@ -19,19 +20,38 @@ ;;; Commentary: -;; This is a major mode for editing Python programs. It was developed -;; by Tim Peters after an original idea by Michael A. Guravage. Tim -;; subsequently left the net; in 1995, Barry Warsaw inherited the mode -;; and is the current maintainer. Tim's now back but disavows all -;; responsibility for the mode. Smart Tim :-) +;; This is a major mode for editing Python programs. It was developed by Tim +;; Peters after an original idea by Michael A. Guravage. Tim subsequently +;; left the net and in 1995, Barry Warsaw inherited the mode. Tim's now back +;; but disavows all responsibility for the mode. In fact, we suspect he +;; doesn't even use Emacs any more. In 2003, python-mode.el was moved to its +;; own SourceForge project apart from the Python project, and now is +;; maintained by the volunteers at the python-mode at python.org mailing list. -;; pdbtrack support contributed by Ken Manheimer, April 2001. +;; pdbtrack support contributed by Ken Manheimer, April 2001. Skip Montanaro +;; has also contributed significantly to python-mode's development. ;; Please use the SourceForge Python project to submit bugs or ;; patches: ;; ;; http://sourceforge.net/projects/python +;; INSTALLATION: + +;; To install, just drop this file into a directory on your load-path and +;; byte-compile it. To set up Emacs to automatically edit files ending in +;; ".py" using python-mode add the following to your ~/.emacs file (GNU +;; Emacs) or ~/.xemacs/init.el file (XEmacs): +;; (setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist)) +;; (setq interpreter-mode-alist (cons '("python" . python-mode) +;; interpreter-mode-alist)) +;; (autoload 'python-mode "python-mode" "Python editing mode." t) +;; +;; In XEmacs syntax highlighting should be enabled automatically. In GNU +;; Emacs you may have to add these lines to your ~/.emacs file: +;; (global-font-lock-mode t) +;; (setq font-lock-maximum-decoration t) + ;; FOR MORE INFORMATION: ;; There is some information on python-mode.el at @@ -60,6 +80,7 @@ (require 'custom) (require 'cl) (require 'compile) +(require 'ansi-color) ;; user definable variables @@ -70,34 +91,41 @@ :group 'languages :prefix "py-") +(defcustom py-tab-always-indent t + "*Non-nil means TAB in Python mode should always reindent the current line, +regardless of where in the line point is when the TAB command is used." + :type 'boolean + :group 'python) + (defcustom py-python-command "python" "*Shell command used to start Python interpreter." :type 'string :group 'python) -(defcustom py-jpython-command "jpython" - "*Shell command used to start the JPython interpreter." +(make-obsolete-variable 'py-jpython-command 'py-jython-command) +(defcustom py-jython-command "jython" + "*Shell command used to start the Jython interpreter." :type 'string :group 'python - :tag "JPython Command") + :tag "Jython Command") (defcustom py-default-interpreter 'cpython "*Which Python interpreter is used by default. -The value for this variable can be either `cpython' or `jpython'. +The value for this variable can be either `cpython' or `jython'. When the value is `cpython', the variables `py-python-command' and `py-python-command-args' are consulted to determine the interpreter and arguments to use. -When the value is `jpython', the variables `py-jpython-command' and -`py-jpython-command-args' are consulted to determine the interpreter +When the value is `jython', the variables `py-jython-command' and +`py-jython-command-args' are consulted to determine the interpreter and arguments to use. Note that this variable is consulted only the first time that a Python mode buffer is visited during an Emacs session. After that, use \\[py-toggle-shells] to change the interpreter shell." :type '(choice (const :tag "Python (a.k.a. CPython)" cpython) - (const :tag "JPython" jpython)) + (const :tag "Jython" jython)) :group 'python) (defcustom py-python-command-args '("-i") @@ -105,11 +133,12 @@ :type '(repeat string) :group 'python) -(defcustom py-jpython-command-args '("-i") - "*List of string arguments to be used when starting a JPython shell." +(make-obsolete-variable 'py-jpython-command-args 'py-jython-command-args) +(defcustom py-jython-command-args '("-i") + "*List of string arguments to be used when starting a Jython shell." :type '(repeat string) :group 'python - :tag "JPython Command Args") + :tag "Jython Command Args") (defcustom py-indent-offset 4 "*Amount of offset per level of indentation. @@ -248,7 +277,7 @@ :type 'function :group 'python) -(defcustom py-imenu-show-method-args-p nil +(defcustom py-imenu-show-method-args-p nil "*Controls echoing of arguments of functions & methods in the Imenu buffer. When non-nil, arguments are printed." :type 'boolean @@ -275,19 +304,20 @@ 20000 "Maximum number of characters to search for a Java-ish import statement. When `python-mode' tries to calculate the shell to use (either a -CPython or a JPython shell), it looks at the so-called `shebang' line +CPython or a Jython shell), it looks at the so-called `shebang' line -- i.e. #! line. If that's not available, it looks at some of the file heading imports to see if they look Java-like." :type 'integer :group 'python ) -(defcustom py-jpython-packages +(make-obsolete-variable 'py-jpython-packages 'py-jython-packages) +(defcustom py-jython-packages '("java" "javax" "org" "com") - "Imported packages that imply `jpython-mode'." + "Imported packages that imply `jython-mode'." :type '(repeat string) :group 'python) - + ;; Not customizable (defvar py-master-file nil "If non-nil, execute the named file instead of the buffer's file. @@ -317,16 +347,39 @@ :tag "Pychecker Command Args") (defvar py-shell-alist - '(("jpython" . 'jpython) - ("jython" . 'jpython) + '(("jython" . 'jython) ("python" . 'cpython)) "*Alist of interpreters and python shells. Used by `py-choose-shell' to select the appropriate python interpreter mode for a file.") +(defcustom py-shell-input-prompt-1-regexp "^>>> " + "*A regular expression to match the input prompt of the shell." + :type 'string + :group 'python) + +(defcustom py-shell-input-prompt-2-regexp "^[.][.][.] " + "*A regular expression to match the input prompt of the shell after the + first line of input." + :type 'string + :group 'python) + +(defcustom py-shell-switch-buffers-on-execute t + "*Controls switching to the Python buffer where commands are + executed. When non-nil the buffer switches to the Python buffer, if + not no switching occurs." + :type 'boolean + :group 'python) + ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;; NO USER DEFINABLE VARIABLES BEYOND THIS POINT +(defvar py-line-number-offset 0 + "When an exception occurs as a result of py-execute-region, a +subsequent py-up-exception needs the line number where the region +started, in order to jump to the correct file line. This variable is +set in py-execute-region and used in py-jump-to-exception.") + (defconst py-emacs-features (let (features) features) @@ -339,9 +392,31 @@ "Face for pseudo keywords in Python mode, like self, True, False, Ellipsis.") (make-face 'py-pseudo-keyword-face) +;; PEP 318 decorators +(defvar py-decorators-face 'py-decorators-face + "Face method decorators.") +(make-face 'py-decorators-face) + +;; Face for builtins +(defvar py-builtins-face 'py-builtins-face + "Face for builtins like TypeError, object, open, and exec.") +(make-face 'py-builtins-face) + +;; XXX, TODO, and FIXME comments and such +(defvar py-XXX-tag-face 'py-XXX-tag-face + "Face for XXX, TODO, and FIXME tags") +(make-face 'py-XXX-tag-face) + (defun py-font-lock-mode-hook () (or (face-differs-from-default-p 'py-pseudo-keyword-face) - (copy-face 'font-lock-keyword-face 'py-pseudo-keyword-face))) + (copy-face 'font-lock-keyword-face 'py-pseudo-keyword-face)) + (or (face-differs-from-default-p 'py-builtins-face) + (copy-face 'font-lock-keyword-face 'py-builtins-face)) + (or (face-differs-from-default-p 'py-decorators-face) + (copy-face 'py-pseudo-keyword-face 'py-decorators-face)) + (or (face-differs-from-default-p 'py-XXX-tag-face) + (copy-face 'font-lock-comment-face 'py-XXX-tag-face)) + ) (add-hook 'font-lock-mode-hook 'py-font-lock-mode-hook) (defvar python-font-lock-keywords @@ -352,30 +427,17 @@ "from" "global" "if" "import" "in" "is" "lambda" "not" "or" "pass" "print" "raise" - "return" "while" "yield" + "return" "while" "with" "yield" ) "\\|")) (kw2 (mapconcat 'identity '("else:" "except:" "finally:" "try:") "\\|")) (kw3 (mapconcat 'identity - '("ArithmeticError" "AssertionError" - "AttributeError" "DeprecationWarning" "EOFError" - "Ellipsis" "EnvironmentError" "Exception" "False" - "FloatingPointError" "FutureWarning" "IOError" - "ImportError" "IndentationError" "IndexError" - "KeyError" "KeyboardInterrupt" "LookupError" - "MemoryError" "NameError" "None" "NotImplemented" - "NotImplementedError" "OSError" "OverflowError" - "OverflowWarning" "PendingDeprecationWarning" - "ReferenceError" "RuntimeError" "RuntimeWarning" - "StandardError" "StopIteration" "SyntaxError" - "SyntaxWarning" "SystemError" "SystemExit" - "TabError" "True" "TypeError" "UnboundLocalError" - "UnicodeDecodeError" "UnicodeEncodeError" - "UnicodeError" "UnicodeTranslateError" - "UserWarning" "ValueError" "Warning" - "ZeroDivisionError" "__debug__" + ;; Don't include True, False, None, or + ;; Ellipsis in this list, since they are + ;; already defined as pseudo keywords. + '("__debug__" "__import__" "__name__" "abs" "apply" "basestring" "bool" "buffer" "callable" "chr" "classmethod" "cmp" "coerce" "compile" "complex" "copyright" @@ -391,26 +453,52 @@ "super" "tuple" "type" "unichr" "unicode" "vars" "xrange" "zip") "\\|")) + (kw4 (mapconcat 'identity + ;; Exceptions and warnings + '("ArithmeticError" "AssertionError" + "AttributeError" "DeprecationWarning" "EOFError" + "EnvironmentError" "Exception" + "FloatingPointError" "FutureWarning" "IOError" + "ImportError" "IndentationError" "IndexError" + "KeyError" "KeyboardInterrupt" "LookupError" + "MemoryError" "NameError" "NotImplemented" + "NotImplementedError" "OSError" "OverflowError" + "OverflowWarning" "PendingDeprecationWarning" + "ReferenceError" "RuntimeError" "RuntimeWarning" + "StandardError" "StopIteration" "SyntaxError" + "SyntaxWarning" "SystemError" "SystemExit" + "TabError" "TypeError" "UnboundLocalError" + "UnicodeDecodeError" "UnicodeEncodeError" + "UnicodeError" "UnicodeTranslateError" + "UserWarning" "ValueError" "Warning" + "ZeroDivisionError") + "\\|")) ) (list + '("^[ \t]*\\(@.+\\)" 1 'py-decorators-face) ;; keywords - (cons (concat "\\b\\(" kw1 "\\)\\b[ \n\t(]") 1) + (cons (concat "\\<\\(" kw1 "\\)\\>[ \n\t(]") 1) ;; builtins when they don't appear as object attributes - (cons (concat "\\(\\b\\|[.]\\)\\(" kw3 "\\)\\b[ \n\t(]") 2) + (list (concat "\\([^. \t]\\|^\\)[ \t]*\\<\\(" kw3 "\\)\\>[ \n\t(]") 2 + 'py-builtins-face) ;; block introducing keywords with immediately following colons. ;; Yes "except" is in both lists. - (cons (concat "\\b\\(" kw2 "\\)[ \n\t(]") 1) - ;; `as' but only in "import foo as bar" - '("[ \t]*\\(\\bfrom\\b.*\\)?\\bimport\\b.*\\b\\(as\\)\\b" . 2) + (cons (concat "\\<\\(" kw2 "\\)[ \n\t(]") 1) + ;; Exceptions + (list (concat "\\<\\(" kw4 "\\)[ \n\t:,(]") 1 'py-builtins-face) + ;; `as' but only in "import foo as bar" or "with foo as bar" + '("[ \t]*\\(\\.*\\)?\\.*\\<\\(as\\)\\>" . 2) + '("[ \t]*\\.*\\<\\(as\\)\\>" . 1) ;; classes - '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" - 1 font-lock-type-face) + '("\\" 1 py-pseudo-keyword-face) + ;; XXX, TODO, and FIXME tags + '("XXX\\|TODO\\|FIXME" 0 py-XXX-tag-face t) )) "Additional expressions to highlight in Python mode.") (put 'python-mode 'font-lock-defaults '(python-font-lock-keywords)) @@ -421,13 +509,7 @@ Currently-active file is at the head of the list.") (defvar py-pdbtrack-is-tracking-p nil) -(defvar py-pdbtrack-last-grubbed-buffer nil - "Record of the last buffer used when the source path was invalid. -This buffer is consulted before the buffer-list history for satisfying -`py-pdbtrack-grub-for-buffer', since it's the most often the likely -prospect as debugging continues.") -(make-variable-buffer-local 'py-pdbtrack-last-grubbed-buffer) (defvar py-pychecker-history nil) @@ -461,7 +543,7 @@ "\\(" "[^#'\"\n\\]" "\\|" py-stringlit-re "\\)*" "\\\\$") "Regular expression matching Python backslash continuation lines.") - + (defconst py-blank-or-comment-re "[ \t]*\\($\\|#\\)" "Regular expression matching a blank or comment line.") @@ -474,7 +556,7 @@ "\\|") "\\)") "Regular expression matching statements to be dedented one level.") - + (defconst py-block-closing-keywords-re "\\(return\\|raise\\|break\\|continue\\|pass\\)" "Regular expression matching keywords which typically close a block.") @@ -495,30 +577,17 @@ "\\)") "Regular expression matching lines not to dedent after.") -(defconst py-defun-start-re - "^\\([ \t]*\\)def[ \t]+\\([a-zA-Z_0-9]+\\)\\|\\(^[a-zA-Z_0-9]+\\)[ \t]*=" - ;; If you change this, you probably have to change py-current-defun - ;; as well. This is only used by py-current-defun to find the name - ;; for add-log.el. - "Regular expression matching a function, method, or variable assignment.") - -(defconst py-class-start-re "^class[ \t]*\\([a-zA-Z_0-9]+\\)" - ;; If you change this, you probably have to change py-current-defun - ;; as well. This is only used by py-current-defun to find the name - ;; for add-log.el. - "Regular expression for finding a class name.") - -(defconst py-traceback-line-re +(defvar py-traceback-line-re "[ \t]+File \"\\([^\"]+\\)\", line \\([0-9]+\\)" "Regular expression that describes tracebacks.") -;; pdbtrack contants +;; pdbtrack constants (defconst py-pdbtrack-stack-entry-regexp ; "^> \\([^(]+\\)(\\([0-9]+\\))\\([?a-zA-Z0-9_]+\\)()" "^> \\(.*\\)(\\([0-9]+\\))\\([?a-zA-Z0-9_]+\\)()" "Regular expression pdbtrack uses to find a stack trace entry.") -(defconst py-pdbtrack-input-prompt "\n[(<]*pdb[>)]+ " +(defconst py-pdbtrack-input-prompt "\n[(<]*[Pp]db[>)]+ " "Regular expression pdbtrack uses to recognize a pdb prompt.") (defconst py-pdbtrack-track-range 10000 @@ -536,8 +605,9 @@ (defvar python-mode-hook nil "*Hook called by `python-mode'.") -(defvar jpython-mode-hook nil - "*Hook called by `jpython-mode'. `jpython-mode' also calls +(make-obsolete-variable 'jpython-mode-hook 'jython-mode-hook) +(defvar jython-mode-hook nil + "*Hook called by `jython-mode'. `jython-mode' also calls `python-mode-hook'.") (defvar py-shell-hook nil @@ -560,8 +630,6 @@ (define-key py-mode-map "\C-c\C-r" 'py-shift-region-right) (define-key py-mode-map "\C-c<" 'py-shift-region-left) (define-key py-mode-map "\C-c>" 'py-shift-region-right) - ;; paragraph and string filling - (define-key py-mode-map "\eq" 'py-fill-paragraph) ;; subprocess commands (define-key py-mode-map "\C-c\C-c" 'py-execute-buffer) (define-key py-mode-map "\C-c\C-m" 'py-execute-import-or-reload) @@ -624,7 +692,7 @@ ;; expect RET to do a `py-newline-and-indent' and any Emacsers who ;; dislike this are probably knowledgeable enough to do a rebind. ;; However, we do *not* change C-j since many Emacsers have already - ;; swapped RET and C-j and they don't want C-j bound to `newline' to + ;; swapped RET and C-j and they don't want C-j bound to `newline' to ;; change. (define-key py-mode-map "\C-m" 'py-newline-and-indent) ) @@ -742,8 +810,8 @@ (cond ((eq position 'bol) (beginning-of-line)) ((eq position 'eol) (end-of-line)) - ((eq position 'bod) (py-beginning-of-def-or-class)) - ((eq position 'eod) (py-end-of-def-or-class)) + ((eq position 'bod) (py-beginning-of-def-or-class 'either)) + ((eq position 'eod) (py-end-of-def-or-class 'either)) ;; Kind of funny, I know, but useful for py-up-exception. ((eq position 'bob) (beginning-of-buffer)) ((eq position 'eob) (end-of-buffer)) @@ -851,7 +919,7 @@ (defvar py-imenu-method-regexp (concat ; <> - "\\(" ; + "\\(" ; "^[ \t]*" ; new line and maybe whitespace "\\(def[ \t]+" ; function definitions start with def "\\([a-zA-Z0-9_]+\\)" ; name is here @@ -887,7 +955,7 @@ ;; it. (defvar py-imenu-generic-expression (cons - (concat + (concat py-imenu-class-regexp "\\|" ; or... py-imenu-method-regexp @@ -956,7 +1024,7 @@ looking-p def-name prev-name cur-indent def-pos - (class-paren (first py-imenu-generic-parens)) + (class-paren (first py-imenu-generic-parens)) (def-paren (second py-imenu-generic-parens))) (setq looking-p (re-search-forward py-imenu-generic-regexp (point-max) t)) @@ -1011,7 +1079,7 @@ (cons save-elmt sub-method-alist)) index-alist)))) ;; found less indented expression, we're done. - (t + (t (setq looking-p nil) (re-search-backward py-imenu-generic-regexp (point-min) t))) ;; end-cond @@ -1025,7 +1093,7 @@ (defun py-choose-shell-by-shebang () - "Choose CPython or JPython mode by looking at #! on the first line. + "Choose CPython or Jython mode by looking at #! on the first line. Returns the appropriate mode function. Used by `py-choose-shell', and similar to but distinct from `set-auto-mode', though it uses `auto-mode-interpreter-regexp' (if available)." @@ -1049,10 +1117,10 @@ (defun py-choose-shell-by-import () - "Choose CPython or JPython mode based imports. -If a file imports any packages in `py-jpython-packages', within + "Choose CPython or Jython mode based imports. +If a file imports any packages in `py-jython-packages', within `py-import-check-point-max' characters from the start of the file, -return `jpython', otherwise return nil." +return `jython', otherwise return nil." (let (mode) (save-excursion (goto-char (point-min)) @@ -1060,14 +1128,14 @@ (search-forward-regexp "^\\(\\(from\\)\\|\\(import\\)\\) \\([^ \t\n.]+\\)" py-import-check-point-max t)) - (setq mode (and (member (match-string 4) py-jpython-packages) - 'jpython + (setq mode (and (member (match-string 4) py-jython-packages) + 'jython )))) mode)) (defun py-choose-shell () - "Choose CPython or JPython mode. Returns the appropriate mode function. + "Choose CPython or Jython mode. Returns the appropriate mode function. This does the following: - look for an interpreter with `py-choose-shell-by-shebang' - examine imports using `py-choose-shell-by-import' @@ -1116,6 +1184,7 @@ (make-local-variable 'indent-region-function) (make-local-variable 'indent-line-function) (make-local-variable 'add-log-current-defun-function) + (make-local-variable 'fill-paragraph-function) ;; (set-syntax-table py-mode-syntax-table) (setq major-mode 'python-mode @@ -1134,6 +1203,8 @@ indent-line-function 'py-indent-line ;; tell add-log.el how to find the current function/method/variable add-log-current-defun-function 'py-current-defun + + fill-paragraph-function 'py-fill-paragraph ) (use-local-map py-mode-map) ;; add the menu @@ -1173,17 +1244,18 @@ (py-toggle-shells (py-choose-shell)))) -(defun jpython-mode () - "Major mode for editing JPython/Jython files. +(make-obsolete 'jpython-mode 'jython-mode) +(defun jython-mode () + "Major mode for editing Jython/Jython files. This is a simple wrapper around `python-mode'. -It runs `jpython-mode-hook' then calls `python-mode.' +It runs `jython-mode-hook' then calls `python-mode.' It is added to `interpreter-mode-alist' and `py-choose-shell'. " (interactive) (python-mode) - (py-toggle-shells 'jpython) - (when jpython-mode-hook - (run-hooks 'jpython-mode-hook))) + (py-toggle-shells 'jython) + (when jython-mode-hook + (run-hooks 'jython-mode-hook))) ;; It's handy to add recognition of Python files to the @@ -1191,16 +1263,16 @@ ;; can specify different `derived-modes' based on the #! line, but ;; with the latter, we can't. So we just won't add them if they're ;; already added. -(let ((modes '(("jpython" . jpython-mode) - ("jython" . jpython-mode) +;;;###autoload +(let ((modes '(("jython" . jython-mode) ("python" . python-mode)))) (while modes (when (not (assoc (car modes) interpreter-mode-alist)) (push (car modes) interpreter-mode-alist)) (setq modes (cdr modes)))) - +;;;###autoload (when (not (or (rassq 'python-mode auto-mode-alist) - (rassq 'jpython-mode auto-mode-alist))) + (rassq 'jython-mode auto-mode-alist))) (push '("\\.py$" . python-mode) auto-mode-alist)) @@ -1272,7 +1344,8 @@ (procbuf (process-buffer proc)) ; (comint-scroll-to-bottom-on-output t) (msg (format "## working on region in file %s...\n" filename)) - (cmd (format "execfile(r'%s')\n" filename))) + ;; add some comment, so that we can filter it out of history + (cmd (format "execfile(r'%s') # PYTHON-MODE\n" filename))) (unwind-protect (save-excursion (set-buffer procbuf) @@ -1285,12 +1358,13 @@ (defun py-comint-output-filter-function (string) "Watch output for Python prompt and exec next file waiting in queue. This function is appropriate for `comint-output-filter-functions'." - ;; TBD: this should probably use split-string - (when (and (or (string-equal string ">>> ") - (and (>= (length string) 5) - (string-equal (substring string -5) "\n>>> "))) - py-file-queue) - (pop-to-buffer (current-buffer)) + ;;remove ansi terminal escape sequences from string, not sure why they are + ;;still around... + (setq string (ansi-color-filter-apply string)) + (when (and (string-match py-shell-input-prompt-1-regexp string) + py-file-queue) + (if py-shell-switch-buffers-on-execute + (pop-to-buffer (current-buffer))) (py-safe (delete-file (car py-file-queue))) (setq py-file-queue (cdr py-file-queue)) (if py-file-queue @@ -1346,7 +1420,7 @@ (- procmark py-pdbtrack-track-range)) procmark)) - target target_fname target_lineno) + target target_fname target_lineno target_buffer) (if (not (string-match (concat py-pdbtrack-input-prompt "$") block)) (py-pdbtrack-overlay-arrow nil) @@ -1374,8 +1448,7 @@ We look first to visit the file indicated in the trace. Failing that, we look for the most recently visited python-mode buffer -with the same name or having -having the named function. +with the same name or having the named function. If we're unable find the source code we return a string describing the problem as best as we can determine." @@ -1419,11 +1492,10 @@ (defun py-pdbtrack-grub-for-buffer (funcname lineno) "Find most recent buffer itself named or having function funcname. -We first check the last buffer this function found, if any, then walk -throught the buffer-list history for python-mode buffers that are +We walk the buffer-list history for python-mode buffers that are named for funcname or define a function funcname." (let ((buffers (buffer-list)) - curbuf + buf got) (while (and buffers (not got)) (setq buf (car buffers) @@ -1438,7 +1510,7 @@ (buffer-substring (point-min) (point-max)))))) (setq got buf))) - (setq py-pdbtrack-last-grubbed-buffer got))) + got)) (defun py-postprocess-output-buffer (buf) "Highlight exceptions found in BUF. @@ -1468,7 +1540,7 @@ (defconst py-output-buffer "*Python Output*") (make-variable-buffer-local 'py-output-buffer) -;; for toggling between CPython and JPython +;; for toggling between CPython and Jython (defvar py-which-shell nil) (defvar py-which-args py-python-command-args) (defvar py-which-bufname "Python") @@ -1477,14 +1549,14 @@ (make-variable-buffer-local 'py-which-bufname) (defun py-toggle-shells (arg) - "Toggles between the CPython and JPython shells. + "Toggles between the CPython and Jython shells. With positive argument ARG (interactively \\[universal-argument]), -uses the CPython shell, with negative ARG uses the JPython shell, and +uses the CPython shell, with negative ARG uses the Jython shell, and with a zero argument, toggles the shell. Programmatically, ARG can also be one of the symbols `cpython' or -`jpython', equivalent to positive arg and negative arg respectively." +`jython', equivalent to positive arg and negative arg respectively." (interactive "P") ;; default is to toggle (if (null arg) @@ -1497,7 +1569,7 @@ (setq arg -1) (setq arg 1))) ((equal arg 'cpython) (setq arg 1)) - ((equal arg 'jpython) (setq arg -1))) + ((equal arg 'jython) (setq arg -1))) (let (msg) (cond ((< 0 arg) @@ -1505,14 +1577,16 @@ (setq py-which-shell py-python-command py-which-args py-python-command-args py-which-bufname "Python" - msg "CPython" - mode-name "Python")) + msg "CPython") + (if (string-equal py-which-bufname "Jython") + (setq mode-name "Python"))) ((> 0 arg) - (setq py-which-shell py-jpython-command - py-which-args py-jpython-command-args - py-which-bufname "JPython" - msg "JPython" - mode-name "JPython")) + (setq py-which-shell py-jython-command + py-which-args py-jython-command-args + py-which-bufname "Jython" + msg "Jython") + (if (string-equal py-which-bufname "Python") + (setq mode-name "Jython"))) ) (message "Using the %s shell" msg) (setq py-output-buffer (format "*%s Output*" py-which-bufname)))) @@ -1534,9 +1608,9 @@ programmatically, or when running in Emacs 19.34 or older. Note: You can toggle between using the CPython interpreter and the -JPython interpreter by hitting \\[py-toggle-shells]. This toggles +Jython interpreter by hitting \\[py-toggle-shells]. This toggles buffer local variables which control whether all your subshell -interactions happen to the `*JPython*' or `*Python*' buffers (the +interactions happen to the `*Jython*' or `*Python*' buffers (the latter is the name used for the CPython buffer). Warning: Don't use an interactive Python if you change sys.ps1 or @@ -1570,10 +1644,14 @@ (concat (mapconcat 'identity py-which-args " ") " ") )))) - (switch-to-buffer-other-window - (apply 'make-comint py-which-bufname py-which-shell nil args)) + (if (not (equal (buffer-name) "*Python*")) + (switch-to-buffer-other-window + (apply 'make-comint py-which-bufname py-which-shell nil args)) + (apply 'make-comint py-which-bufname py-which-shell nil args)) (make-local-variable 'comint-prompt-regexp) - (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ") + (setq comint-prompt-regexp (concat py-shell-input-prompt-1-regexp "\\|" + py-shell-input-prompt-2-regexp "\\|" + "^([Pp]db) ")) (add-hook 'comint-output-filter-functions 'py-comint-output-filter-function) ;; pdbtrack @@ -1644,11 +1722,13 @@ (setq start (point)) (or (< start end) (error "Region is empty")) + (setq py-line-number-offset (count-lines 1 start)) (let ((needs-if (/= (py-point 'bol) (py-point 'boi)))) (set-buffer buf) (python-mode) (when needs-if - (insert "if 1:\n")) + (insert "if 1:\n") + (setq py-line-number-offset (- py-line-number-offset 1))) (insert-buffer-substring cur start end) ;; Set the shell either to the #! line command, or to the ;; py-which-shell buffer local variable. @@ -1685,8 +1765,9 @@ (setq py-exception-buffer (cons file (current-buffer)))) (t ;; TBD: a horrible hack, but why create new Custom variables? - (let ((cmd (concat shell (if (string-equal py-which-bufname "JPython") - " -" "")))) + (let ((cmd (concat py-which-shell (if (string-equal py-which-bufname + "Jython") + " -" "")))) ;; otherwise either run it synchronously in a subprocess (save-excursion (set-buffer buf) @@ -1720,12 +1801,14 @@ See the `\\[py-execute-region]' docs for an account of some subtleties, including the use of the optional ASYNC argument." (interactive "P") - (if py-master-file - (let* ((filename (expand-file-name py-master-file)) - (buffer (or (get-file-buffer filename) - (find-file-noselect filename)))) - (set-buffer buffer))) - (py-execute-region (point-min) (point-max) async)) + (let ((old-buffer (current-buffer))) + (if py-master-file + (let* ((filename (expand-file-name py-master-file)) + (buffer (or (get-file-buffer filename) + (find-file-noselect filename)))) + (set-buffer buffer))) + (py-execute-region (point-min) (point-max) async) + (pop-to-buffer old-buffer))) (defun py-execute-import-or-reload (&optional async) "Import the current buffer's file in a Python interpreter. @@ -1821,6 +1904,9 @@ (t (find-file (read-file-name "Exception file: " nil file t)))))) + ;; Fiddle about with line number + (setq line (+ py-line-number-offset line)) + (pop-to-buffer buffer) ;; Force Python mode (if (not (eq major-mode 'python-mode)) @@ -2001,16 +2087,29 @@ (interactive "P") (let* ((ci (current-indentation)) (move-to-indentation-p (<= (current-column) ci)) - (need (py-compute-indentation (not arg)))) - ;; see if we need to dedent - (if (py-outdent-p) - (setq need (- need py-indent-offset))) - (if (/= ci need) - (save-excursion - (beginning-of-line) - (delete-horizontal-space) - (indent-to need))) - (if move-to-indentation-p (back-to-indentation)))) + (need (py-compute-indentation (not arg))) + (cc (current-column))) + ;; dedent out a level if previous command was the same unless we're in + ;; column 1 + (if (and (equal last-command this-command) + (/= cc 0)) + (progn + (beginning-of-line) + (delete-horizontal-space) + (indent-to (* (/ (- cc 1) py-indent-offset) py-indent-offset))) + (progn + ;; see if we need to dedent + (if (py-outdent-p) + (setq need (- need py-indent-offset))) + (if (or py-tab-always-indent + move-to-indentation-p) + (progn (if (/= ci need) + (save-excursion + (beginning-of-line) + (delete-horizontal-space) + (indent-to need))) + (if move-to-indentation-p (back-to-indentation))) + (insert-tab)))))) (defun py-newline-and-indent () "Strives to act like the Emacs `newline-and-indent'. @@ -2054,39 +2153,23 @@ ((py-continuation-line-p) (let ((startpos (point)) (open-bracket-pos (py-nesting-level)) - endpos searching found state) + endpos searching found state cind cline) (if open-bracket-pos (progn - ;; align with first item in list; else a normal - ;; indent beyond the line with the open bracket - (goto-char (1+ open-bracket-pos)) ; just beyond bracket - ;; is the first list item on the same line? - (skip-chars-forward " \t") - (if (null (memq (following-char) '(?\n ?# ?\\))) - ; yes, so line up with it - (current-column) - ;; first list item on another line, or doesn't exist yet - (forward-line 1) - (while (and (< (point) startpos) - (looking-at "[ \t]*[#\n\\\\]")) ; skip noise - (forward-line 1)) - (if (and (< (point) startpos) - (/= startpos - (save-excursion - (goto-char (1+ open-bracket-pos)) - (forward-comment (point-max)) - (point)))) - ;; again mimic the first list item - (current-indentation) - ;; else they're about to enter the first item - (goto-char open-bracket-pos) - (setq placeholder (point)) - (py-goto-initial-line) - (py-goto-beginning-of-tqs - (save-excursion (nth 3 (parse-partial-sexp - placeholder (point))))) - (+ (current-indentation) py-indent-offset)))) - + (setq endpos (py-point 'bol)) + (py-goto-initial-line) + (setq cind (current-indentation)) + (setq cline cind) + (dolist (bp + (nth 9 (save-excursion + (parse-partial-sexp (point) endpos))) + cind) + (if (search-forward "\n" bp t) (setq cline cind)) + (goto-char (1+ bp)) + (skip-chars-forward " \t") + (setq cind (if (memq (following-char) '(?\n ?# ?\\)) + (+ cline py-indent-offset) + (current-column))))) ;; else on backslash continuation line (forward-line -1) (if (py-continuation-line-p) ; on at least 3rd line in block @@ -2834,7 +2917,7 @@ ;; ripped from cc-mode (defun py-forward-into-nomenclature (&optional arg) "Move forward to end of a nomenclature section or word. -With \\[universal-argument] (programmatically, optional argument ARG), +With \\[universal-argument] (programmatically, optional argument ARG), do it that many times. A `nomenclature' is a fancy way of saying AWordWithMixedCaseNotUnderscores." @@ -2888,6 +2971,11 @@ ;; Pychecker + +;; hack for FSF Emacs +(unless (fboundp 'read-shell-command) + (defalias 'read-shell-command 'read-string)) + (defun py-pychecker-run (command) "*Run pychecker (default on the file currently visited)." (interactive @@ -3412,7 +3500,7 @@ (defun py-statement-opens-block-p () "Return t iff the current statement opens a block. -I.e., iff it ends with a colon that is not in a comment. Point should +I.e., iff it ends with a colon that is not in a comment. Point should be at the start of a statement." (save-excursion (let ((start (point)) @@ -3496,8 +3584,8 @@ KEY is a regular expression describing a Python keyword. Skip blank lines and non-indenting comments. If the statement found starts with KEY, then stop, otherwise go back to first enclosing block starting -with KEY. If successful, leave point at the start of the KEY line and -return t. Otherwise, leav point at an undefined place and return nil." +with KEY. If successful, leave point at the start of the KEY line and +return t. Otherwise, leave point at an undefined place and return nil." ;; skip blanks and non-indenting # (py-goto-initial-line) (while (and @@ -3505,7 +3593,7 @@ (zerop (forward-line -1))) ; go back nil) (py-goto-initial-line) - (let* ((re (concat "[ \t]*" key "\\b")) + (let* ((re (concat "[ \t]*" key "\\>")) (case-fold-search nil) ; let* so looking-at sees this (found (looking-at re)) (dead nil)) @@ -3531,7 +3619,7 @@ `Keyword' is defined (essentially) as the regular expression ([a-z]+). Returns nil if none was found." (let ((case-fold-search nil)) - (if (looking-at "[ \t]*\\([a-z]+\\)\\b") + (if (looking-at "[ \t]*\\([a-z]+\\)\\>") (intern (buffer-substring (match-beginning 1) (match-end 1))) nil))) @@ -3539,14 +3627,49 @@ "Python value for `add-log-current-defun-function'. This tells add-log.el how to find the current function/method/variable." (save-excursion - (if (re-search-backward py-defun-start-re nil t) - (or (match-string 3) - (let ((method (match-string 2))) - (if (and (not (zerop (length (match-string 1)))) - (re-search-backward py-class-start-re nil t)) - (concat (match-string 1) "." method) - method))) - nil))) + + ;; Move back to start of the current statement. + + (py-goto-initial-line) + (back-to-indentation) + (while (and (or (looking-at py-blank-or-comment-re) + (py-in-literal)) + (not (bobp))) + (backward-to-indentation 1)) + (py-goto-initial-line) + + (let ((scopes "") + (sep "") + dead assignment) + + ;; Check for an assignment. If this assignment exists inside a + ;; def, it will be overwritten inside the while loop. If it + ;; exists at top lever or inside a class, it will be preserved. + + (when (looking-at "[ \t]*\\([a-zA-Z0-9_]+\\)[ \t]*=") + (setq scopes (buffer-substring (match-beginning 1) (match-end 1))) + (setq assignment t) + (setq sep ".")) + + ;; Prepend the name of each outer socpe (def or class). + + (while (not dead) + (if (and (py-go-up-tree-to-keyword "\\(class\\|def\\)") + (looking-at + "[ \t]*\\(class\\|def\\)[ \t]*\\([a-zA-Z0-9_]+\\)[ \t]*")) + (let ((name (buffer-substring (match-beginning 2) (match-end 2)))) + (if (and assignment (looking-at "[ \t]*def")) + (setq scopes name) + (setq scopes (concat name sep scopes)) + (setq sep ".")))) + (setq assignment nil) + (condition-case nil ; Terminate nicely at top level. + (py-goto-block-up 'no-mark) + (error (setq dead t)))) + (if (string= scopes "") + nil + scopes)))) + (defconst py-help-address "python-mode at python.org" @@ -3588,7 +3711,7 @@ "Dear Barry,") ;salutation (if enhancement-p nil (set-mark (point)) - (insert + (insert "Please replace this text with a sufficiently large code sample\n\ and an exact recipe so that I can reproduce your problem. Failure\n\ to do so may mean a greater delay in fixing your bug.\n\n") @@ -3608,7 +3731,7 @@ (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file) ;; Add a designator to the minor mode strings -(or (assq 'py-pdbtrack-minor-mode-string minor-mode-alist) +(or (assq 'py-pdbtrack-is-tracking-p minor-mode-alist) (push '(py-pdbtrack-is-tracking-p py-pdbtrack-minor-mode-string) minor-mode-alist)) @@ -3747,20 +3870,35 @@ If point is inside a string, narrow to that string and fill. " (interactive "P") - (let* ((bod (py-point 'bod)) - (pps (parse-partial-sexp bod (point)))) - (cond - ;; are we inside a comment or on a line with only whitespace before - ;; the comment start? - ((or (nth 4 pps) - (save-excursion (beginning-of-line) (looking-at "[ \t]*#"))) - (py-fill-comment justify)) - ;; are we inside a string? - ((nth 3 pps) - (py-fill-string (nth 8 pps))) - ;; otherwise use the default - (t - (fill-paragraph justify))))) + ;; fill-paragraph will narrow incorrectly + (save-restriction + (widen) + (let* ((bod (py-point 'bod)) + (pps (parse-partial-sexp bod (point)))) + (cond + ;; are we inside a comment or on a line with only whitespace before + ;; the comment start? + ((or (nth 4 pps) + (save-excursion (beginning-of-line) (looking-at "[ \t]*#"))) + (py-fill-comment justify)) + ;; are we inside a string? + ((nth 3 pps) + (py-fill-string (nth 8 pps))) + ;; are we at the opening quote of a string, or in the indentation? + ((save-excursion + (forward-word 1) + (eq (py-in-literal) 'string)) + (save-excursion + (py-fill-string (py-point 'boi)))) + ;; are we at or after the closing quote of a string? + ((save-excursion + (backward-word 1) + (eq (py-in-literal) 'string)) + (save-excursion + (py-fill-string (py-point 'boi)))) + ;; otherwise use the default + (t + (fill-paragraph justify)))))) From buildbot at python.org Tue Feb 5 04:19:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 03:19:36 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080205031937.3537E1E4006@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/531 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 04:41:21 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 03:41:21 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian 3.0 Message-ID: <20080205034121.55FB31E4006@bag.python.org> The Buildbot has detected a new failure of sparc Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%203.0/builds/7 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_bsddb3 ====================================================================== FAIL: test03_repr_closed_db (bsddb.test.test_misc.MiscTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/3.0.klose-debian-sparc/build/Lib/bsddb/test/test_misc.py", line 47, in test03_repr_closed_db self.assertEquals(rp, "{}") AssertionError: '' != '{}' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 05:52:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 04:52:55 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 3.0 Message-ID: <20080205045255.8AB0F1E4006@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%203.0/builds/508 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout ====================================================================== FAIL: testConnectTimeout (test.test_timeout.TimeoutTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_timeout.py", line 122, in testConnectTimeout self.addr_remote) AssertionError: error not raised by connect make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 06:51:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 05:51:58 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080205055158.719841E4008@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/492 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From nnorwitz at gmail.com Tue Feb 5 10:08:22 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 04:08:22 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080205090822.GA4630@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [548835 refs] From nnorwitz at gmail.com Tue Feb 5 10:15:14 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 04:15:14 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080205091514.GA6663@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9521 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [548445 refs] From nnorwitz at gmail.com Tue Feb 5 11:40:34 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 05:40:34 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080205104034.GA24868@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [560475 refs] From buildbot at python.org Tue Feb 5 12:31:21 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 11:31:21 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20080205113121.5859A1E4035@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/77 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 12:51:40 2008 From: python-checkins at python.org (lars.gustaebel) Date: Tue, 5 Feb 2008 12:51:40 +0100 (CET) Subject: [Python-checkins] r60588 - in python/trunk: Lib/tarfile.py Misc/NEWS Message-ID: <20080205115140.7C2D31E400F@bag.python.org> Author: lars.gustaebel Date: Tue Feb 5 12:51:40 2008 New Revision: 60588 Modified: python/trunk/Lib/tarfile.py python/trunk/Misc/NEWS Log: Issue #2004: Use mode 0700 for temporary directories and default permissions for missing directories. Modified: python/trunk/Lib/tarfile.py ============================================================================== --- python/trunk/Lib/tarfile.py (original) +++ python/trunk/Lib/tarfile.py Tue Feb 5 12:51:40 2008 @@ -2021,15 +2021,11 @@ for tarinfo in members: if tarinfo.isdir(): - # Extract directory with a safe mode, so that - # all files below can be extracted as well. - try: - os.makedirs(os.path.join(path, tarinfo.name), 0700) - except EnvironmentError: - pass + # Extract directories with a safe mode. directories.append(tarinfo) - else: - self.extract(tarinfo, path) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 0700 + self.extract(tarinfo, path) # Reverse sort directories. directories.sort(lambda a, b: cmp(a.name, b.name)) @@ -2134,6 +2130,8 @@ # Create all upper directories. upperdirs = os.path.dirname(targetpath) if upperdirs and not os.path.exists(upperdirs): + # Create directories that are not part of the archive with + # default permissions. os.makedirs(upperdirs) if tarinfo.islnk() or tarinfo.issym(): @@ -2170,7 +2168,9 @@ """Make a directory called targetpath. """ try: - os.mkdir(targetpath) + # Use a safe mode for the directory, the real mode is set + # later in _extract_member(). + os.mkdir(targetpath, 0700) except EnvironmentError, e: if e.errno != errno.EEXIST: raise Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Feb 5 12:51:40 2008 @@ -388,6 +388,9 @@ Library ------- +- #2004: tarfile.py: Use mode 0700 for temporary directories and default + permissions for missing directories. + - #175006: The debugger used to skip the condition of a "while" statement after the first iteration. Now it correctly steps on the expression, and breakpoints on the "while" statement are honored on each loop. From python-checkins at python.org Tue Feb 5 13:00:20 2008 From: python-checkins at python.org (lars.gustaebel) Date: Tue, 5 Feb 2008 13:00:20 +0100 (CET) Subject: [Python-checkins] r60589 - in python/branches/release25-maint: Lib/tarfile.py Misc/NEWS Message-ID: <20080205120020.BF8811E4013@bag.python.org> Author: lars.gustaebel Date: Tue Feb 5 13:00:20 2008 New Revision: 60589 Modified: python/branches/release25-maint/Lib/tarfile.py python/branches/release25-maint/Misc/NEWS Log: Issue #1507247, #2004: Use mode 0700 for temporary directories and default permissions for missing directories. (backport from r53526, r60588) Modified: python/branches/release25-maint/Lib/tarfile.py ============================================================================== --- python/branches/release25-maint/Lib/tarfile.py (original) +++ python/branches/release25-maint/Lib/tarfile.py Tue Feb 5 13:00:20 2008 @@ -1509,15 +1509,11 @@ for tarinfo in members: if tarinfo.isdir(): - # Extract directory with a safe mode, so that - # all files below can be extracted as well. - try: - os.makedirs(os.path.join(path, tarinfo.name), 0777) - except EnvironmentError: - pass + # Extract directories with a safe mode. directories.append(tarinfo) - else: - self.extract(tarinfo, path) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 0700 + self.extract(tarinfo, path) # Reverse sort directories. directories.sort(lambda a, b: cmp(a.name, b.name)) @@ -1622,19 +1618,9 @@ # Create all upper directories. upperdirs = os.path.dirname(targetpath) if upperdirs and not os.path.exists(upperdirs): - ti = TarInfo() - ti.name = upperdirs - ti.type = DIRTYPE - ti.mode = 0777 - ti.mtime = tarinfo.mtime - ti.uid = tarinfo.uid - ti.gid = tarinfo.gid - ti.uname = tarinfo.uname - ti.gname = tarinfo.gname - try: - self._extract_member(ti, ti.name) - except: - pass + # Create directories that are not part of the archive with + # default permissions. + os.makedirs(upperdirs) if tarinfo.islnk() or tarinfo.issym(): self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname)) @@ -1670,7 +1656,9 @@ """Make a directory called targetpath. """ try: - os.mkdir(targetpath) + # Use a safe mode for the directory, the real mode is set + # later in _extract_member(). + os.mkdir(targetpath, 0700) except EnvironmentError, e: if e.errno != errno.EEXIST: raise Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Tue Feb 5 13:00:20 2008 @@ -80,6 +80,9 @@ Library ------- +- #1507247, #2004: tarfile.py: Use mode 0700 for temporary directories and + default permissions for missing directories. + - #175006: The debugger used to skip the condition of a "while" statement after the first iteration. Now it correctly steps on the expression, and breakpoints on the "while" statement are honored on each loop. From python-checkins at python.org Tue Feb 5 13:01:24 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 5 Feb 2008 13:01:24 +0100 (CET) Subject: [Python-checkins] r60590 - in python/trunk/Doc: howto/advocacy.rst howto/curses.rst howto/regex.rst howto/unicode.rst library/curses.rst library/re.rst Message-ID: <20080205120124.E8AFA1E4022@bag.python.org> Author: georg.brandl Date: Tue Feb 5 13:01:24 2008 New Revision: 60590 Modified: python/trunk/Doc/howto/advocacy.rst python/trunk/Doc/howto/curses.rst python/trunk/Doc/howto/regex.rst python/trunk/Doc/howto/unicode.rst python/trunk/Doc/library/curses.rst python/trunk/Doc/library/re.rst Log: Convert external links to internal links. Fixes #2010. Modified: python/trunk/Doc/howto/advocacy.rst ============================================================================== --- python/trunk/Doc/howto/advocacy.rst (original) +++ python/trunk/Doc/howto/advocacy.rst Tue Feb 5 13:01:24 2008 @@ -265,7 +265,7 @@ **What are the restrictions on Python's use?** They're practically nonexistent. Consult the :file:`Misc/COPYRIGHT` file in the -source distribution, or http://www.python.org/doc/Copyright.html for the full +source distribution, or the section :ref:`history-and-license` for the full language, but it boils down to three conditions. * You have to leave the copyright notice on the software; if you don't include Modified: python/trunk/Doc/howto/curses.rst ============================================================================== --- python/trunk/Doc/howto/curses.rst (original) +++ python/trunk/Doc/howto/curses.rst Tue Feb 5 13:01:24 2008 @@ -1,3 +1,5 @@ +.. _curses-howto: + ********************************** Curses Programming with Python ********************************** Modified: python/trunk/Doc/howto/regex.rst ============================================================================== --- python/trunk/Doc/howto/regex.rst (original) +++ python/trunk/Doc/howto/regex.rst Tue Feb 5 13:01:24 2008 @@ -1,3 +1,5 @@ +.. _regex-howto: + **************************** Regular Expression HOWTO **************************** Modified: python/trunk/Doc/howto/unicode.rst ============================================================================== --- python/trunk/Doc/howto/unicode.rst (original) +++ python/trunk/Doc/howto/unicode.rst Tue Feb 5 13:01:24 2008 @@ -277,7 +277,7 @@ Encodings are specified as strings containing the encoding's name. Python 2.4 comes with roughly 100 different encodings; see the Python Library Reference at - for a list. Some encodings +:ref:`standard-encodings` for a list. Some encodings have multiple names; for example, 'latin-1', 'iso_8859_1' and '8859' are all synonyms for the same encoding. Modified: python/trunk/Doc/library/curses.rst ============================================================================== --- python/trunk/Doc/library/curses.rst (original) +++ python/trunk/Doc/library/curses.rst Tue Feb 5 13:01:24 2008 @@ -48,9 +48,9 @@ Convenience function to ensure proper terminal setup and resetting on application entry and exit. - `Curses Programming with Python `_ + :ref:`curses-howto` Tutorial material on using curses with Python, by Andrew Kuchling and Eric - Raymond, is available on the Python Web site. + Raymond. The :file:`Demo/curses/` directory in the Python source distribution contains some example programs using the curses bindings provided by this module. Modified: python/trunk/Doc/library/re.rst ============================================================================== --- python/trunk/Doc/library/re.rst (original) +++ python/trunk/Doc/library/re.rst Tue Feb 5 13:01:24 2008 @@ -65,8 +65,7 @@ above, or almost any textbook about compiler construction. A brief explanation of the format of regular expressions follows. For further -information and a gentler presentation, consult the Regular Expression HOWTO, -accessible from http://www.python.org/doc/howto/. +information and a gentler presentation, consult the :ref:`regex-howto`. Regular expressions can contain both special and ordinary characters. Most ordinary characters, like ``'A'``, ``'a'``, or ``'0'``, are the simplest regular From buildbot at python.org Tue Feb 5 13:53:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 12:53:31 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080205125331.497F01E4011@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1377 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: lars.gustaebel,skip.montanaro BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 14:06:43 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 13:06:43 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 2.5 Message-ID: <20080205130643.99A211E4023@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%202.5/builds/129 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: lars.gustaebel BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 14:27:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 13:27:18 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080205132718.7269C1E4011@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/560 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 15:50:40 2008 From: python-checkins at python.org (marc-andre.lemburg) Date: Tue, 5 Feb 2008 15:50:40 +0100 (CET) Subject: [Python-checkins] r60592 - python/trunk/Lib/distutils/sysconfig.py Message-ID: <20080205145040.DFC811E4017@bag.python.org> Author: marc-andre.lemburg Date: Tue Feb 5 15:50:40 2008 New Revision: 60592 Modified: python/trunk/Lib/distutils/sysconfig.py Log: Keep distutils Python 2.1 compatible (or even Python 2.4 in this case). Modified: python/trunk/Lib/distutils/sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/sysconfig.py (original) +++ python/trunk/Lib/distutils/sysconfig.py Tue Feb 5 15:50:40 2008 @@ -37,8 +37,12 @@ # different (hard-wired) directories. # Setup.local is available for Makefile builds including VPATH builds, # Setup.dist is available on Windows -python_build = any(os.path.isfile(os.path.join(project_base, "Modules", fn)) - for fn in ("Setup.dist", "Setup.local")) +def _python_build(): + for fn in ("Setup.dist", "Setup.local"): + if os.path.isfile(os.path.join(project_base, "Modules", fn)): + return True + return False +python_build = _python_build() def get_python_version(): From buildbot at python.org Tue Feb 5 16:19:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 15:19:20 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080205151920.CB8BB1E4017@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/112 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,marc-andre.lemburg BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 16:31:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 15:31:57 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080205153157.F25E21E4026@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/747 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,marc-andre.lemburg BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_socketserver test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 16:36:47 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 15:36:47 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080205153647.5336C1E4023@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/260 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,marc-andre.lemburg BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 16:47:08 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 15:47:08 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080205154709.09B731E4017@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2783 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,marc-andre.lemburg BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 17:06:58 2008 From: python-checkins at python.org (andrew.kuchling) Date: Tue, 5 Feb 2008 17:06:58 +0100 (CET) Subject: [Python-checkins] r60593 - python/trunk/Lib/DocXMLRPCServer.py python/trunk/Lib/pydoc.py Message-ID: <20080205160658.10DE71E4017@bag.python.org> Author: andrew.kuchling Date: Tue Feb 5 17:06:57 2008 New Revision: 60593 Modified: python/trunk/Lib/DocXMLRPCServer.py python/trunk/Lib/pydoc.py Log: Update PEP URL. (This code is duplicated between pydoc and DocXMLRPCServer; maybe it should be refactored as a GHOP project.) 2.5.2 backport candidate. Modified: python/trunk/Lib/DocXMLRPCServer.py ============================================================================== --- python/trunk/Lib/DocXMLRPCServer.py (original) +++ python/trunk/Lib/DocXMLRPCServer.py Tue Feb 5 17:06:57 2008 @@ -30,7 +30,7 @@ results = [] here = 0 - # XXX Note that this regular expressions does not allow for the + # XXX Note that this regular expression does not allow for the # hyperlinking of arbitrary strings being used as method # names. Only methods with names consisting of word characters # and '.'s are hyperlinked. @@ -52,7 +52,7 @@ url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc) results.append('%s' % (url, escape(all))) elif pep: - url = 'http://www.python.org/peps/pep-%04d.html' % int(pep) + url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep) results.append('%s' % (url, escape(all))) elif text[end:end+1] == '(': results.append(self.namelink(name, methods, funcs, classes)) Modified: python/trunk/Lib/pydoc.py ============================================================================== --- python/trunk/Lib/pydoc.py (original) +++ python/trunk/Lib/pydoc.py Tue Feb 5 17:06:57 2008 @@ -540,7 +540,7 @@ url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc) results.append('%s' % (url, escape(all))) elif pep: - url = 'http://www.python.org/peps/pep-%04d' % int(pep) + url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep) results.append('%s' % (url, escape(all))) elif text[end:end+1] == '(': results.append(self.namelink(name, methods, funcs, classes)) From python-checkins at python.org Tue Feb 5 18:27:23 2008 From: python-checkins at python.org (guido.van.rossum) Date: Tue, 5 Feb 2008 18:27:23 +0100 (CET) Subject: [Python-checkins] r60594 - python/branches/release25-maint/Lib/re.py Message-ID: <20080205172723.567931E4017@bag.python.org> Author: guido.van.rossum Date: Tue Feb 5 18:27:23 2008 New Revision: 60594 Modified: python/branches/release25-maint/Lib/re.py Log: In the experimental 'Scanner' feature, the group count was set wrong. Modified: python/branches/release25-maint/Lib/re.py ============================================================================== --- python/branches/release25-maint/Lib/re.py (original) +++ python/branches/release25-maint/Lib/re.py Tue Feb 5 18:27:23 2008 @@ -290,8 +290,8 @@ p.append(sre_parse.SubPattern(s, [ (SUBPATTERN, (len(p)+1, sre_parse.parse(phrase, flags))), ])) + s.groups = len(p)+1 p = sre_parse.SubPattern(s, [(BRANCH, (None, p))]) - s.groups = len(p) self.scanner = sre_compile.compile(p) def scan(self, string): result = [] From python-checkins at python.org Tue Feb 5 18:31:37 2008 From: python-checkins at python.org (guido.van.rossum) Date: Tue, 5 Feb 2008 18:31:37 +0100 (CET) Subject: [Python-checkins] r60595 - python/branches/release25-maint/Lib/re.py Message-ID: <20080205173137.BC6B21E4017@bag.python.org> Author: guido.van.rossum Date: Tue Feb 5 18:31:37 2008 New Revision: 60595 Modified: python/branches/release25-maint/Lib/re.py Log: Backport doc fixes from 2.6. These are all things that were already supported but weren't in the docs, like conditional backreferences. Modified: python/branches/release25-maint/Lib/re.py ============================================================================== --- python/branches/release25-maint/Lib/re.py (original) +++ python/branches/release25-maint/Lib/re.py Tue Feb 5 18:31:37 2008 @@ -29,7 +29,8 @@ The special characters are: "." Matches any character except a newline. "^" Matches the start of the string. - "$" Matches the end of the string. + "$" Matches the end of the string or just before the newline at + the end of the string. "*" Matches 0 or more (greedy) repetitions of the preceding RE. Greedy means that it will match as many repetitions as possible. "+" Matches 1 or more (greedy) repetitions of the preceding RE. @@ -37,7 +38,7 @@ *?,+?,?? Non-greedy versions of the previous three special characters. {m,n} Matches from m to n repetitions of the preceding RE. {m,n}? Non-greedy version of the above. - "\\" Either escapes special characters or signals a special sequence. + "\\" Either escapes special characters or signals a special sequence. [] Indicates a set of characters. A "^" as the first character indicates a complementing set. "|" A|B, creates an RE that will match either A or B. @@ -50,6 +51,10 @@ (?#...) A comment; ignored. (?=...) Matches if ... matches next, but doesn't consume the string. (?!...) Matches if ... doesn't match next. + (?<=...) Matches if preceded by ... (must be fixed length). + (? Author: guido.van.rossum Date: Tue Feb 5 18:32:15 2008 New Revision: 60596 Modified: python/trunk/Lib/re.py Log: In the experimental 'Scanner' feature, the group count was set wrong. Modified: python/trunk/Lib/re.py ============================================================================== --- python/trunk/Lib/re.py (original) +++ python/trunk/Lib/re.py Tue Feb 5 18:32:15 2008 @@ -300,8 +300,8 @@ p.append(sre_parse.SubPattern(s, [ (SUBPATTERN, (len(p)+1, sre_parse.parse(phrase, flags))), ])) + s.groups = len(p)+1 p = sre_parse.SubPattern(s, [(BRANCH, (None, p))]) - s.groups = len(p) self.scanner = sre_compile.compile(p) def scan(self, string): result = [] From python-checkins at python.org Tue Feb 5 19:32:48 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 5 Feb 2008 19:32:48 +0100 (CET) Subject: [Python-checkins] r60599 - python/trunk/Lib/test/test_funcattrs.py Message-ID: <20080205183248.3DBDF1E4017@bag.python.org> Author: georg.brandl Date: Tue Feb 5 19:32:47 2008 New Revision: 60599 Modified: python/trunk/Lib/test/test_funcattrs.py Log: Fix unittest conversion breakage. Modified: python/trunk/Lib/test/test_funcattrs.py ============================================================================== --- python/trunk/Lib/test/test_funcattrs.py (original) +++ python/trunk/Lib/test/test_funcattrs.py Tue Feb 5 19:32:47 2008 @@ -2,16 +2,6 @@ import types import unittest -def cannot_set_attr(obj, name, value, exceptions): - # This method is not called as a test (name doesn't start with 'test'), - # but may be used by other tests. - try: setattr(obj, name, value) - except exceptions: pass - else: self.fail("shouldn't be able to set %s to %r" % (name, value)) - try: delattr(obj, name) - except exceptions: pass - else: self.fail("shouldn't be able to del %s" % name) - class FuncAttrsTest(unittest.TestCase): def setUp(self): class F: @@ -23,6 +13,17 @@ self.fi = F() self.b = b + def cannot_set_attr(self,obj, name, value, exceptions): + # This method is not called as a test (name doesn't start with 'test'), + # but may be used by other tests. + try: setattr(obj, name, value) + except exceptions: pass + else: self.fail("shouldn't be able to set %s to %r" % (name, value)) + try: delattr(obj, name) + except exceptions: pass + else: self.fail("shouldn't be able to del %s" % name) + + class FunctionPropertiesTest(FuncAttrsTest): # Include the external setUp method that is common to all tests def test_module(self): @@ -56,7 +57,7 @@ def test_func_globals(self): self.assertEqual(self.b.func_globals, globals()) - cannot_set_attr(self.b, 'func_globals', 2, TypeError) + self.cannot_set_attr(self.b, 'func_globals', 2, TypeError) def test_func_name(self): self.assertEqual(self.b.__name__, 'b') @@ -68,8 +69,8 @@ self.assertEqual(self.b.__name__, 'd') self.assertEqual(self.b.func_name, 'd') # __name__ and func_name must be a string - cannot_set_attr(self.b, '__name__', 7, TypeError) - cannot_set_attr(self.b, 'func_name', 7, TypeError) + self.cannot_set_attr(self.b, '__name__', 7, TypeError) + self.cannot_set_attr(self.b, 'func_name', 7, TypeError) # __name__ must be available when in restricted mode. Exec will raise # AttributeError if __name__ is not available on f. s = """def f(): pass\nf.__name__""" @@ -77,8 +78,8 @@ # Test on methods, too self.assertEqual(self.f.a.__name__, 'a') self.assertEqual(self.fi.a.__name__, 'a') - cannot_set_attr(self.f.a, "__name__", 'a', AttributeError) - cannot_set_attr(self.fi.a, "__name__", 'a', AttributeError) + self.cannot_set_attr(self.f.a, "__name__", 'a', AttributeError) + self.cannot_set_attr(self.fi.a, "__name__", 'a', AttributeError) def test_func_code(self): num_one, num_two = 7, 8 @@ -135,21 +136,21 @@ def test_im_class(self): self.assertEqual(self.f.a.im_class, self.f) self.assertEqual(self.fi.a.im_class, self.f) - cannot_set_attr(self.f.a, "im_class", self.f, TypeError) - cannot_set_attr(self.fi.a, "im_class", self.f, TypeError) + self.cannot_set_attr(self.f.a, "im_class", self.f, TypeError) + self.cannot_set_attr(self.fi.a, "im_class", self.f, TypeError) def test_im_func(self): self.f.b = self.b self.assertEqual(self.f.b.im_func, self.b) self.assertEqual(self.fi.b.im_func, self.b) - cannot_set_attr(self.f.b, "im_func", self.b, TypeError) - cannot_set_attr(self.fi.b, "im_func", self.b, TypeError) + self.cannot_set_attr(self.f.b, "im_func", self.b, TypeError) + self.cannot_set_attr(self.fi.b, "im_func", self.b, TypeError) def test_im_self(self): self.assertEqual(self.f.a.im_self, None) self.assertEqual(self.fi.a.im_self, self.fi) - cannot_set_attr(self.f.a, "im_self", None, TypeError) - cannot_set_attr(self.fi.a, "im_self", self.fi, TypeError) + self.cannot_set_attr(self.f.a, "im_self", None, TypeError) + self.cannot_set_attr(self.fi.a, "im_self", self.fi, TypeError) def test_im_func_non_method(self): # Behavior should be the same when a method is added via an attr @@ -162,8 +163,8 @@ except AttributeError: pass else: self.fail("using unknown attributes should raise AttributeError") # Test assignment and deletion - cannot_set_attr(self.f.id, 'unknown_attr', 2, AttributeError) - cannot_set_attr(self.fi.id, 'unknown_attr', 2, AttributeError) + self.cannot_set_attr(self.f.id, 'unknown_attr', 2, AttributeError) + self.cannot_set_attr(self.fi.id, 'unknown_attr', 2, AttributeError) def test_implicit_method_properties(self): self.f.a.im_func.known_attr = 7 @@ -202,12 +203,12 @@ class FunctionDictsTest(FuncAttrsTest): def test_setting_dict_to_invalid(self): - cannot_set_attr(self.b, '__dict__', None, TypeError) - cannot_set_attr(self.b, 'func_dict', None, TypeError) + self.cannot_set_attr(self.b, '__dict__', None, TypeError) + self.cannot_set_attr(self.b, 'func_dict', None, TypeError) from UserDict import UserDict d = UserDict({'known_attr': 7}) - cannot_set_attr(self.f.a.im_func, '__dict__', d, TypeError) - cannot_set_attr(self.fi.a.im_func, '__dict__', d, TypeError) + self.cannot_set_attr(self.f.a.im_func, '__dict__', d, TypeError) + self.cannot_set_attr(self.fi.a.im_func, '__dict__', d, TypeError) def test_setting_dict_to_valid(self): d = {'known_attr': 7} @@ -259,8 +260,8 @@ self.assertEqual(self.b.func_doc, docstr) self.assertEqual(self.f.a.__doc__, docstr) self.assertEqual(self.fi.a.__doc__, docstr) - cannot_set_attr(self.f.a, "__doc__", docstr, AttributeError) - cannot_set_attr(self.fi.a, "__doc__", docstr, AttributeError) + self.cannot_set_attr(self.f.a, "__doc__", docstr, AttributeError) + self.cannot_set_attr(self.fi.a, "__doc__", docstr, AttributeError) def test_delete_docstring(self): self.b.__doc__ = "The docstring" From python-checkins at python.org Tue Feb 5 20:03:33 2008 From: python-checkins at python.org (facundo.batista) Date: Tue, 5 Feb 2008 20:03:33 +0100 (CET) Subject: [Python-checkins] r60602 - python/trunk/Lib/test/test_wave.py Message-ID: <20080205190333.218AB1E4010@bag.python.org> Author: facundo.batista Date: Tue Feb 5 20:03:32 2008 New Revision: 60602 Modified: python/trunk/Lib/test/test_wave.py Log: Issue 1951. Converts wave test cases to unittest. Modified: python/trunk/Lib/test/test_wave.py ============================================================================== --- python/trunk/Lib/test/test_wave.py (original) +++ python/trunk/Lib/test/test_wave.py Tue Feb 5 20:03:32 2008 @@ -1,32 +1,45 @@ -from test.test_support import TestFailed, TESTFN +from test.test_support import TESTFN, run_unittest import os import wave - -def check(t, msg=None): - if not t: - raise TestFailed, msg +import unittest nchannels = 2 sampwidth = 2 framerate = 8000 nframes = 100 -f = wave.open(TESTFN, 'wb') -f.setnchannels(nchannels) -f.setsampwidth(sampwidth) -f.setframerate(framerate) -f.setnframes(nframes) -output = '\0' * nframes * nchannels * sampwidth -f.writeframes(output) -f.close() - -f = wave.open(TESTFN, 'rb') -check(nchannels == f.getnchannels(), "nchannels") -check(sampwidth == f.getsampwidth(), "sampwidth") -check(framerate == f.getframerate(), "framerate") -check(nframes == f.getnframes(), "nframes") -input = f.readframes(nframes) -check(input == output, "data") -f.close() +class TestWave(unittest.TestCase): + + def setUp(self): + self.f = None + + def tearDown(self): + if self.f is not None: + self.f.close() + try: + os.remove(TESTFN) + except OSError: + pass + + def test_it(self): + self.f = wave.open(TESTFN, 'wb') + self.f.setnchannels(nchannels) + self.f.setsampwidth(sampwidth) + self.f.setframerate(framerate) + self.f.setnframes(nframes) + output = '\0' * nframes * nchannels * sampwidth + self.f.writeframes(output) + self.f.close() + + self.f = wave.open(TESTFN, 'rb') + self.assertEqual(nchannels, self.f.getnchannels()) + self.assertEqual(sampwidth, self.f.getsampwidth()) + self.assertEqual(framerate, self.f.getframerate()) + self.assertEqual(nframes, self.f.getnframes()) + self.assertEqual(self.f.readframes(nframes), output) + +def main(): + run_unittest(TestWave) -os.remove(TESTFN) +if __name__ == '__main__': + main() From python-checkins at python.org Tue Feb 5 20:07:10 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 5 Feb 2008 20:07:10 +0100 (CET) Subject: [Python-checkins] r60603 - python/trunk/Lib/test/test_wave.py Message-ID: <20080205190710.E30741E4026@bag.python.org> Author: georg.brandl Date: Tue Feb 5 20:07:10 2008 New Revision: 60603 Modified: python/trunk/Lib/test/test_wave.py Log: Actually run the test. Modified: python/trunk/Lib/test/test_wave.py ============================================================================== --- python/trunk/Lib/test/test_wave.py (original) +++ python/trunk/Lib/test/test_wave.py Tue Feb 5 20:07:10 2008 @@ -38,8 +38,8 @@ self.assertEqual(nframes, self.f.getnframes()) self.assertEqual(self.f.readframes(nframes), output) -def main(): +def test_main(): run_unittest(TestWave) if __name__ == '__main__': - main() + test_main() From buildbot at python.org Tue Feb 5 20:08:52 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 19:08:52 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080205190852.787541E4026@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/538 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 2 tests failed: test_docxmlrpc test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 20:24:31 2008 From: python-checkins at python.org (skip.montanaro) Date: Tue, 5 Feb 2008 20:24:31 +0100 (CET) Subject: [Python-checkins] r60604 - python/trunk/Doc/library/stdtypes.rst Message-ID: <20080205192431.510B11E4010@bag.python.org> Author: skip.montanaro Date: Tue Feb 5 20:24:30 2008 New Revision: 60604 Modified: python/trunk/Doc/library/stdtypes.rst Log: correct object name Modified: python/trunk/Doc/library/stdtypes.rst ============================================================================== --- python/trunk/Doc/library/stdtypes.rst (original) +++ python/trunk/Doc/library/stdtypes.rst Tue Feb 5 20:24:30 2008 @@ -1866,7 +1866,7 @@ .. method:: dict.values() Return a copy of the dictionary's list of values. See the note for - :meth:`mapping.items`. + :meth:`dict.items`. .. _bltin-file-objects: From buildbot at python.org Tue Feb 5 20:40:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 19:40:31 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080205194031.DBC641E402A@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/562 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 1 test failed: test_socketserver sincerely, -The Buildbot From buildbot at python.org Tue Feb 5 20:47:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 19:47:20 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080205194720.A5D891E4028@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2481 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_docxmlrpc test_socket ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From python-checkins at python.org Tue Feb 5 20:58:18 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 5 Feb 2008 20:58:18 +0100 (CET) Subject: [Python-checkins] r60605 - in python/trunk: Lib/test/output/test_profile Lib/test/profilee.py Lib/test/test_cprofile.py Lib/test/test_profile.py Lib/test/test_queue.py Misc/NEWS Message-ID: <20080205195818.3A53B1E4010@bag.python.org> Author: georg.brandl Date: Tue Feb 5 20:58:17 2008 New Revision: 60605 Added: python/trunk/Lib/test/profilee.py Removed: python/trunk/Lib/test/output/test_profile Modified: python/trunk/Lib/test/test_cprofile.py (contents, props changed) python/trunk/Lib/test/test_profile.py (contents, props changed) python/trunk/Lib/test/test_queue.py python/trunk/Misc/NEWS Log: * Use the same code to profile for test_profile and test_cprofile. * Convert both to unittest. * Use the same unit testing code. * Include the expected output in both test files. * Make it possible to regenerate the expected output by running the file as a script with an '-r' argument. Deleted: /python/trunk/Lib/test/output/test_profile ============================================================================== --- /python/trunk/Lib/test/output/test_profile Tue Feb 5 20:58:17 2008 +++ (empty file) @@ -1,84 +0,0 @@ -test_profile - 127 function calls (107 primitive calls) in 1.000 CPU seconds - - Ordered by: standard name - - ncalls tottime percall cumtime percall filename:lineno(function) - 4 0.000 0.000 0.000 0.000 :0(append) - 4 0.000 0.000 0.000 0.000 :0(exc_info) - 12 0.000 0.000 0.012 0.001 :0(hasattr) - 8 0.000 0.000 0.000 0.000 :0(range) - 1 0.000 0.000 0.000 0.000 :0(setprofile) - 1 0.000 0.000 1.000 1.000 :1() - 0 0.000 0.000 profile:0(profiler) - 1 0.000 0.000 1.000 1.000 profile:0(testfunc()) - 8 0.064 0.008 0.080 0.010 test_profile.py:103(subhelper) - 28 0.028 0.001 0.028 0.001 test_profile.py:115(__getattr__) - 1 0.270 0.270 1.000 1.000 test_profile.py:30(testfunc) - 23/3 0.150 0.007 0.170 0.057 test_profile.py:40(factorial) - 20 0.020 0.001 0.020 0.001 test_profile.py:53(mul) - 2 0.040 0.020 0.600 0.300 test_profile.py:60(helper) - 4 0.116 0.029 0.120 0.030 test_profile.py:78(helper1) - 2 0.000 0.000 0.140 0.070 test_profile.py:89(helper2_indirect) - 8 0.312 0.039 0.400 0.050 test_profile.py:93(helper2) - - - Ordered by: standard name - -Function called... -:0(append) -> -:0(exc_info) -> -:0(hasattr) -> test_profile.py:115(__getattr__)(12) 0.028 -:0(range) -> -:0(setprofile) -> -:1() -> test_profile.py:30(testfunc)(1) 1.000 -profile:0(profiler) -> profile:0(testfunc())(1) 1.000 -profile:0(testfunc()) -> :0(setprofile)(1) 0.000 - :1()(1) 1.000 -test_profile.py:103(subhelper) -> :0(range)(8) 0.000 - test_profile.py:115(__getattr__)(16) 0.028 -test_profile.py:115(__getattr__) -> -test_profile.py:30(testfunc) -> test_profile.py:40(factorial)(1) 0.170 - test_profile.py:60(helper)(2) 0.600 -test_profile.py:40(factorial) -> test_profile.py:40(factorial)(20) 0.170 - test_profile.py:53(mul)(20) 0.020 -test_profile.py:53(mul) -> -test_profile.py:60(helper) -> test_profile.py:78(helper1)(4) 0.120 - test_profile.py:89(helper2_indirect)(2) 0.140 - test_profile.py:93(helper2)(6) 0.400 -test_profile.py:78(helper1) -> :0(append)(4) 0.000 - :0(exc_info)(4) 0.000 - :0(hasattr)(4) 0.012 -test_profile.py:89(helper2_indirect) -> test_profile.py:40(factorial)(2) 0.170 - test_profile.py:93(helper2)(2) 0.400 -test_profile.py:93(helper2) -> :0(hasattr)(8) 0.012 - test_profile.py:103(subhelper)(8) 0.080 - - - Ordered by: standard name - -Function was called by... -:0(append) <- test_profile.py:78(helper1)(4) 0.120 -:0(exc_info) <- test_profile.py:78(helper1)(4) 0.120 -:0(hasattr) <- test_profile.py:78(helper1)(4) 0.120 - test_profile.py:93(helper2)(8) 0.400 -:0(range) <- test_profile.py:103(subhelper)(8) 0.080 -:0(setprofile) <- profile:0(testfunc())(1) 1.000 -:1() <- profile:0(testfunc())(1) 1.000 -profile:0(profiler) <- -profile:0(testfunc()) <- profile:0(profiler)(1) 0.000 -test_profile.py:103(subhelper) <- test_profile.py:93(helper2)(8) 0.400 -test_profile.py:115(__getattr__) <- :0(hasattr)(12) 0.012 - test_profile.py:103(subhelper)(16) 0.080 -test_profile.py:30(testfunc) <- :1()(1) 1.000 -test_profile.py:40(factorial) <- test_profile.py:30(testfunc)(1) 1.000 - test_profile.py:40(factorial)(20) 0.170 - test_profile.py:89(helper2_indirect)(2) 0.140 -test_profile.py:53(mul) <- test_profile.py:40(factorial)(20) 0.170 -test_profile.py:60(helper) <- test_profile.py:30(testfunc)(2) 1.000 -test_profile.py:78(helper1) <- test_profile.py:60(helper)(4) 0.600 -test_profile.py:89(helper2_indirect) <- test_profile.py:60(helper)(2) 0.600 -test_profile.py:93(helper2) <- test_profile.py:60(helper)(6) 0.600 - test_profile.py:89(helper2_indirect)(2) 0.140 - - Added: python/trunk/Lib/test/profilee.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/profilee.py Tue Feb 5 20:58:17 2008 @@ -0,0 +1,115 @@ +""" +Input for test_profile.py and test_cprofile.py. + +IMPORTANT: This stuff is touchy. If you modify anything above the +test class you'll have to regenerate the stats by running the two +test files. + +*ALL* NUMBERS in the expected output are relevant. If you change +the formatting of pstats, please don't just regenerate the expected +output without checking very carefully that not a single number has +changed. +""" + +import sys + +# In order to have reproducible time, we simulate a timer in the global +# variable 'TICKS', which represents simulated time in milliseconds. +# (We can't use a helper function increment the timer since it would be +# included in the profile and would appear to consume all the time.) +TICKS = 42000 + +def timer(): + return TICKS + +def testfunc(): + # 1 call + # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions + global TICKS + TICKS += 99 + helper() # 300 + helper() # 300 + TICKS += 171 + factorial(14) # 130 + +def factorial(n): + # 23 calls total + # 170 ticks total, 150 ticks local + # 3 primitive calls, 130, 20 and 20 ticks total + # including 116, 17, 17 ticks local + global TICKS + if n > 0: + TICKS += n + return mul(n, factorial(n-1)) + else: + TICKS += 11 + return 1 + +def mul(a, b): + # 20 calls + # 1 tick, local + global TICKS + TICKS += 1 + return a * b + +def helper(): + # 2 calls + # 300 ticks total: 20 ticks local, 260 ticks in subfunctions + global TICKS + TICKS += 1 + helper1() # 30 + TICKS += 2 + helper1() # 30 + TICKS += 6 + helper2() # 50 + TICKS += 3 + helper2() # 50 + TICKS += 2 + helper2() # 50 + TICKS += 5 + helper2_indirect() # 70 + TICKS += 1 + +def helper1(): + # 4 calls + # 30 ticks total: 29 ticks local, 1 tick in subfunctions + global TICKS + TICKS += 10 + hasattr(C(), "foo") # 1 + TICKS += 19 + lst = [] + lst.append(42) # 0 + sys.exc_info() # 0 + +def helper2_indirect(): + helper2() # 50 + factorial(3) # 20 + +def helper2(): + # 8 calls + # 50 ticks local: 39 ticks local, 11 ticks in subfunctions + global TICKS + TICKS += 11 + hasattr(C(), "bar") # 1 + TICKS += 13 + subhelper() # 10 + TICKS += 15 + +def subhelper(): + # 8 calls + # 10 ticks total: 8 ticks local, 2 ticks in subfunctions + global TICKS + TICKS += 2 + for i in range(2): # 0 + try: + C().foo # 1 x 2 + except AttributeError: + TICKS += 3 # 3 x 2 + +class C: + def __getattr__(self, name): + # 28 calls + # 1 tick, local + global TICKS + TICKS += 1 + raise AttributeError Modified: python/trunk/Lib/test/test_cprofile.py ============================================================================== --- python/trunk/Lib/test/test_cprofile.py (original) +++ python/trunk/Lib/test/test_cprofile.py Tue Feb 5 20:58:17 2008 @@ -1,208 +1,112 @@ +"""Test suite for the cProfile module.""" + import sys +from test.test_support import run_unittest + +# rip off all interesting stuff from test_profile import cProfile -import pstats -import test.test_support +from test.test_profile import ProfileTest, regenerate_expected_output -################################# -# Warning! -# This stuff is touchy. If you modify anything above the test_main function, -# you'll have to regenerate the stats for the doctest! -################################ - -TICKS = 42000 - -def timer(): - return TICKS - -def testfunc(): - # 1 call - # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions - global TICKS - TICKS += 99 - helper() # 300 - helper() # 300 - TICKS += 171 - factorial(14) # 130 - -def factorial(n): - # 23 calls total - # 170 ticks total, 150 ticks local - # 3 primitive calls, 130, 20 and 20 ticks total - # including 116, 17, 17 ticks local - global TICKS - if n > 0: - TICKS += n - return mul(n, factorial(n-1)) - else: - TICKS += 11 - return 1 +class CProfileTest(ProfileTest): + profilerclass = cProfile.Profile -def mul(a, b): - # 20 calls - # 1 tick, local - global TICKS - TICKS += 1 - return a * b - -def helper(): - # 2 calls - # 300 ticks total: 20 ticks local, 260 ticks in subfunctions - global TICKS - TICKS += 1 - helper1() # 30 - TICKS += 2 - helper1() # 30 - TICKS += 6 - helper2() # 50 - TICKS += 3 - helper2() # 50 - TICKS += 2 - helper2() # 50 - TICKS += 5 - helper2_indirect() # 70 - TICKS += 1 - -def helper1(): - # 4 calls - # 30 ticks total: 29 ticks local, 1 tick in subfunctions - global TICKS - TICKS += 10 - hasattr(C(), "foo") # 1 - TICKS += 19 - lst = [] - lst.append(42) # 0 - sys.exc_info() # 0 - -def helper2_indirect(): - helper2() # 50 - factorial(3) # 20 - -def helper2(): - # 8 calls - # 50 ticks local: 39 ticks local, 11 ticks in subfunctions - global TICKS - TICKS += 11 - hasattr(C(), "bar") # 1 - TICKS += 13 - subhelper() # 10 - TICKS += 15 - -def subhelper(): - # 8 calls - # 10 ticks total: 8 ticks local, 2 ticks in subfunctions - global TICKS - TICKS += 2 - for i in range(2): # 0 - try: - C().foo # 1 x 2 - except AttributeError: - TICKS += 3 # 3 x 2 - -class C: - def __getattr__(self, name): - # 28 calls - # 1 tick, local - global TICKS - TICKS += 1 - raise AttributeError def test_main(): - """ - >>> prof = cProfile.Profile(timer, 0.001) - >>> prof.runctx("testfunc()", globals(), locals()) #doctest: +ELLIPSIS - - >>> timer() - 43000 - >>> stats = pstats.Stats(prof) - >>> stats.strip_dirs().sort_stats("stdname") #doctest: +ELLIPSIS - - >>> stats.print_stats() #doctest: +ELLIPSIS - 126 function calls (106 primitive calls) in 1.000 CPU seconds - - Ordered by: standard name - - ncalls tottime percall cumtime percall filename:lineno(function) - 1 0.000 0.000 1.000 1.000 :1() - 28 0.028 0.001 0.028 0.001 test_cprofile.py:102(__getattr__) - 1 0.270 0.270 1.000 1.000 test_cprofile.py:17(testfunc) - 23/3 0.150 0.007 0.170 0.057 test_cprofile.py:27(factorial) - 20 0.020 0.001 0.020 0.001 test_cprofile.py:40(mul) - 2 0.040 0.020 0.600 0.300 test_cprofile.py:47(helper) - 4 0.116 0.029 0.120 0.030 test_cprofile.py:65(helper1) - 2 0.000 0.000 0.140 0.070 test_cprofile.py:76(helper2_indirect) - 8 0.312 0.039 0.400 0.050 test_cprofile.py:80(helper2) - 8 0.064 0.008 0.080 0.010 test_cprofile.py:90(subhelper) - 12 0.000 0.000 0.012 0.001 {hasattr} - 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} - 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} - 8 0.000 0.000 0.000 0.000 {range} - 4 0.000 0.000 0.000 0.000 {sys.exc_info} - - - - >>> stats.print_callers() #doctest: +ELLIPSIS - Ordered by: standard name - - Function was called by... - ncalls tottime cumtime - :1() <- - test_cprofile.py:102(__getattr__) <- 16 0.016 0.016 test_cprofile.py:90(subhelper) - 12 0.012 0.012 {hasattr} - test_cprofile.py:17(testfunc) <- 1 0.270 1.000 :1() - test_cprofile.py:27(factorial) <- 1 0.014 0.130 test_cprofile.py:17(testfunc) - 20/3 0.130 0.147 test_cprofile.py:27(factorial) - 2 0.006 0.040 test_cprofile.py:76(helper2_indirect) - test_cprofile.py:40(mul) <- 20 0.020 0.020 test_cprofile.py:27(factorial) - test_cprofile.py:47(helper) <- 2 0.040 0.600 test_cprofile.py:17(testfunc) - test_cprofile.py:65(helper1) <- 4 0.116 0.120 test_cprofile.py:47(helper) - test_cprofile.py:76(helper2_indirect) <- 2 0.000 0.140 test_cprofile.py:47(helper) - test_cprofile.py:80(helper2) <- 6 0.234 0.300 test_cprofile.py:47(helper) - 2 0.078 0.100 test_cprofile.py:76(helper2_indirect) - test_cprofile.py:90(subhelper) <- 8 0.064 0.080 test_cprofile.py:80(helper2) - {hasattr} <- 4 0.000 0.004 test_cprofile.py:65(helper1) - 8 0.000 0.008 test_cprofile.py:80(helper2) - {method 'append' of 'list' objects} <- 4 0.000 0.000 test_cprofile.py:65(helper1) - {method 'disable' of '_lsprof.Profiler' objects} <- - {range} <- 8 0.000 0.000 test_cprofile.py:90(subhelper) - {sys.exc_info} <- 4 0.000 0.000 test_cprofile.py:65(helper1) - - - - >>> stats.print_callees() #doctest: +ELLIPSIS - Ordered by: standard name - - Function called... - ncalls tottime cumtime - :1() -> 1 0.270 1.000 test_cprofile.py:17(testfunc) - test_cprofile.py:102(__getattr__) -> - test_cprofile.py:17(testfunc) -> 1 0.014 0.130 test_cprofile.py:27(factorial) - 2 0.040 0.600 test_cprofile.py:47(helper) - test_cprofile.py:27(factorial) -> 20/3 0.130 0.147 test_cprofile.py:27(factorial) - 20 0.020 0.020 test_cprofile.py:40(mul) - test_cprofile.py:40(mul) -> - test_cprofile.py:47(helper) -> 4 0.116 0.120 test_cprofile.py:65(helper1) - 2 0.000 0.140 test_cprofile.py:76(helper2_indirect) - 6 0.234 0.300 test_cprofile.py:80(helper2) - test_cprofile.py:65(helper1) -> 4 0.000 0.004 {hasattr} - 4 0.000 0.000 {method 'append' of 'list' objects} - 4 0.000 0.000 {sys.exc_info} - test_cprofile.py:76(helper2_indirect) -> 2 0.006 0.040 test_cprofile.py:27(factorial) - 2 0.078 0.100 test_cprofile.py:80(helper2) - test_cprofile.py:80(helper2) -> 8 0.064 0.080 test_cprofile.py:90(subhelper) - 8 0.000 0.008 {hasattr} - test_cprofile.py:90(subhelper) -> 16 0.016 0.016 test_cprofile.py:102(__getattr__) - 8 0.000 0.000 {range} - {hasattr} -> 12 0.012 0.012 test_cprofile.py:102(__getattr__) - {method 'append' of 'list' objects} -> - {method 'disable' of '_lsprof.Profiler' objects} -> - {range} -> - {sys.exc_info} -> - - - - """ - from test import test_cprofile - test.test_support.run_doctest(test_cprofile) + run_unittest(CProfileTest) + +def main(): + if '-r' not in sys.argv: + test_main() + else: + regenerate_expected_output(__file__, CProfileTest) + + +# Don't remove this comment. Everything below it is auto-generated. +#--cut-------------------------------------------------------------------------- +CProfileTest.expected_output['print_stats'] = """\ + 126 function calls (106 primitive calls) in 1.000 CPU seconds + + Ordered by: standard name + + ncalls tottime percall cumtime percall filename:lineno(function) + 1 0.000 0.000 1.000 1.000 :1() + 28 0.028 0.001 0.028 0.001 profilee.py:110(__getattr__) + 1 0.270 0.270 1.000 1.000 profilee.py:25(testfunc) + 23/3 0.150 0.007 0.170 0.057 profilee.py:35(factorial) + 20 0.020 0.001 0.020 0.001 profilee.py:48(mul) + 2 0.040 0.020 0.600 0.300 profilee.py:55(helper) + 4 0.116 0.029 0.120 0.030 profilee.py:73(helper1) + 2 0.000 0.000 0.140 0.070 profilee.py:84(helper2_indirect) + 8 0.312 0.039 0.400 0.050 profilee.py:88(helper2) + 8 0.064 0.008 0.080 0.010 profilee.py:98(subhelper) + 12 0.000 0.000 0.012 0.001 {hasattr} + 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} + 8 0.000 0.000 0.000 0.000 {range} + 4 0.000 0.000 0.000 0.000 {sys.exc_info} + + +""" +CProfileTest.expected_output['print_callers'] = """\ + Ordered by: standard name + +Function was called by... + ncalls tottime cumtime +:1() <- +profilee.py:110(__getattr__) <- 16 0.016 0.016 profilee.py:98(subhelper) + 12 0.012 0.012 {hasattr} +profilee.py:25(testfunc) <- 1 0.270 1.000 :1() +profilee.py:35(factorial) <- 1 0.014 0.130 profilee.py:25(testfunc) + 20/3 0.130 0.147 profilee.py:35(factorial) + 2 0.006 0.040 profilee.py:84(helper2_indirect) +profilee.py:48(mul) <- 20 0.020 0.020 profilee.py:35(factorial) +profilee.py:55(helper) <- 2 0.040 0.600 profilee.py:25(testfunc) +profilee.py:73(helper1) <- 4 0.116 0.120 profilee.py:55(helper) +profilee.py:84(helper2_indirect) <- 2 0.000 0.140 profilee.py:55(helper) +profilee.py:88(helper2) <- 6 0.234 0.300 profilee.py:55(helper) + 2 0.078 0.100 profilee.py:84(helper2_indirect) +profilee.py:98(subhelper) <- 8 0.064 0.080 profilee.py:88(helper2) +{hasattr} <- 4 0.000 0.004 profilee.py:73(helper1) + 8 0.000 0.008 profilee.py:88(helper2) +{method 'append' of 'list' objects} <- 4 0.000 0.000 profilee.py:73(helper1) +{method 'disable' of '_lsprof.Profiler' objects} <- +{range} <- 8 0.000 0.000 profilee.py:98(subhelper) +{sys.exc_info} <- 4 0.000 0.000 profilee.py:73(helper1) + + +""" +CProfileTest.expected_output['print_callees'] = """\ + Ordered by: standard name + +Function called... + ncalls tottime cumtime +:1() -> 1 0.270 1.000 profilee.py:25(testfunc) +profilee.py:110(__getattr__) -> +profilee.py:25(testfunc) -> 1 0.014 0.130 profilee.py:35(factorial) + 2 0.040 0.600 profilee.py:55(helper) +profilee.py:35(factorial) -> 20/3 0.130 0.147 profilee.py:35(factorial) + 20 0.020 0.020 profilee.py:48(mul) +profilee.py:48(mul) -> +profilee.py:55(helper) -> 4 0.116 0.120 profilee.py:73(helper1) + 2 0.000 0.140 profilee.py:84(helper2_indirect) + 6 0.234 0.300 profilee.py:88(helper2) +profilee.py:73(helper1) -> 4 0.000 0.004 {hasattr} + 4 0.000 0.000 {method 'append' of 'list' objects} + 4 0.000 0.000 {sys.exc_info} +profilee.py:84(helper2_indirect) -> 2 0.006 0.040 profilee.py:35(factorial) + 2 0.078 0.100 profilee.py:88(helper2) +profilee.py:88(helper2) -> 8 0.064 0.080 profilee.py:98(subhelper) + 8 0.000 0.008 {hasattr} +profilee.py:98(subhelper) -> 16 0.016 0.016 profilee.py:110(__getattr__) + 8 0.000 0.000 {range} +{hasattr} -> 12 0.012 0.012 profilee.py:110(__getattr__) +{method 'append' of 'list' objects} -> +{method 'disable' of '_lsprof.Profiler' objects} -> +{range} -> +{sys.exc_info} -> + + +""" if __name__ == "__main__": - test_main() + main() Modified: python/trunk/Lib/test/test_profile.py ============================================================================== --- python/trunk/Lib/test/test_profile.py (original) +++ python/trunk/Lib/test/test_profile.py Tue Feb 5 20:58:17 2008 @@ -1,123 +1,166 @@ """Test suite for the profile module.""" -import profile, pstats, sys +import os +import sys +import pstats +import unittest +from StringIO import StringIO +from test.test_support import run_unittest + +import profile +from test.profilee import testfunc, timer + + +class ProfileTest(unittest.TestCase): + + profilerclass = profile.Profile + methodnames = ['print_stats', 'print_callers', 'print_callees'] + expected_output = {} + + @classmethod + def do_profiling(cls): + results = [] + prof = cls.profilerclass(timer, 0.001) + prof.runctx("testfunc()", globals(), locals()) + results.append(timer()) + for methodname in cls.methodnames: + s = StringIO() + stats = pstats.Stats(prof, stream=s) + stats.strip_dirs().sort_stats("stdname") + getattr(stats, methodname)() + results.append(s.getvalue()) + return results + + def test_cprofile(self): + results = self.do_profiling() + self.assertEqual(results[0], 43000) + for i, method in enumerate(self.methodnames): + self.assertEqual(results[i+1], self.expected_output[method], + "Stats.%s output for %s doesn't fit expectation!" % + (method, self.profilerclass.__name__)) + + +def regenerate_expected_output(filename, cls): + filename = filename.rstrip('co') + print 'Regenerating %s...' % filename + results = cls.do_profiling() + + newfile = [] + with open(filename, 'r') as f: + for line in f: + newfile.append(line) + if line[:6] == '#--cut': + break + + with open(filename, 'w') as f: + f.writelines(newfile) + for i, method in enumerate(cls.methodnames): + f.write('%s.expected_output[%r] = """\\\n%s"""\n' % ( + cls.__name__, method, results[i+1])) + f.write('\nif __name__ == "__main__":\n main()\n') -# In order to have reproducible time, we simulate a timer in the global -# variable 'ticks', which represents simulated time in milliseconds. -# (We can't use a helper function increment the timer since it would be -# included in the profile and would appear to consume all the time.) -ticks = 0 - -# IMPORTANT: this is an output test. *ALL* NUMBERS in the expected -# output are relevant. If you change the formatting of pstats, -# please don't just regenerate output/test_profile without checking -# very carefully that not a single number has changed. def test_main(): - global ticks - ticks = 42000 - prof = profile.Profile(timer) - prof.runctx("testfunc()", globals(), locals()) - assert ticks == 43000, ticks - st = pstats.Stats(prof) - st.strip_dirs().sort_stats('stdname').print_stats() - st.print_callees() - st.print_callers() - -def timer(): - return ticks*0.001 - -def testfunc(): - # 1 call - # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions - global ticks - ticks += 99 - helper() # 300 - helper() # 300 - ticks += 171 - factorial(14) # 130 - -def factorial(n): - # 23 calls total - # 170 ticks total, 150 ticks local - # 3 primitive calls, 130, 20 and 20 ticks total - # including 116, 17, 17 ticks local - global ticks - if n > 0: - ticks += n - return mul(n, factorial(n-1)) + run_unittest(ProfileTest) + +def main(): + if '-r' not in sys.argv: + test_main() else: - ticks += 11 - return 1 + regenerate_expected_output(__file__, ProfileTest) + + +# Don't remove this comment. Everything below it is auto-generated. +#--cut-------------------------------------------------------------------------- +ProfileTest.expected_output['print_stats'] = """\ + 127 function calls (107 primitive calls) in 999.749 CPU seconds + + Ordered by: standard name + + ncalls tottime percall cumtime percall filename:lineno(function) + 4 -0.004 -0.001 -0.004 -0.001 :0(append) + 4 -0.004 -0.001 -0.004 -0.001 :0(exc_info) + 12 -0.024 -0.002 11.964 0.997 :0(hasattr) + 8 -0.008 -0.001 -0.008 -0.001 :0(range) + 1 0.000 0.000 0.000 0.000 :0(setprofile) + 1 -0.002 -0.002 999.751 999.751 :1() + 0 0.000 0.000 profile:0(profiler) + 1 -0.002 -0.002 999.749 999.749 profile:0(testfunc()) + 28 27.972 0.999 27.972 0.999 profilee.py:110(__getattr__) + 1 269.996 269.996 999.753 999.753 profilee.py:25(testfunc) + 23/3 149.937 6.519 169.917 56.639 profilee.py:35(factorial) + 20 19.980 0.999 19.980 0.999 profilee.py:48(mul) + 2 39.986 19.993 599.814 299.907 profilee.py:55(helper) + 4 115.984 28.996 119.964 29.991 profilee.py:73(helper1) + 2 -0.006 -0.003 139.942 69.971 profilee.py:84(helper2_indirect) + 8 311.976 38.997 399.896 49.987 profilee.py:88(helper2) + 8 63.968 7.996 79.944 9.993 profilee.py:98(subhelper) + + +""" +ProfileTest.expected_output['print_callers'] = """\ + Ordered by: standard name + +Function was called by... +:0(append) <- profilee.py:73(helper1)(4) 119.964 +:0(exc_info) <- profilee.py:73(helper1)(4) 119.964 +:0(hasattr) <- profilee.py:73(helper1)(4) 119.964 + profilee.py:88(helper2)(8) 399.896 +:0(range) <- profilee.py:98(subhelper)(8) 79.944 +:0(setprofile) <- profile:0(testfunc())(1) 999.749 +:1() <- profile:0(testfunc())(1) 999.749 +profile:0(profiler) <- +profile:0(testfunc()) <- profile:0(profiler)(1) 0.000 +profilee.py:110(__getattr__) <- :0(hasattr)(12) 11.964 + profilee.py:98(subhelper)(16) 79.944 +profilee.py:25(testfunc) <- :1()(1) 999.751 +profilee.py:35(factorial) <- profilee.py:25(testfunc)(1) 999.753 + profilee.py:35(factorial)(20) 169.917 + profilee.py:84(helper2_indirect)(2) 139.942 +profilee.py:48(mul) <- profilee.py:35(factorial)(20) 169.917 +profilee.py:55(helper) <- profilee.py:25(testfunc)(2) 999.753 +profilee.py:73(helper1) <- profilee.py:55(helper)(4) 599.814 +profilee.py:84(helper2_indirect) <- profilee.py:55(helper)(2) 599.814 +profilee.py:88(helper2) <- profilee.py:55(helper)(6) 599.814 + profilee.py:84(helper2_indirect)(2) 139.942 +profilee.py:98(subhelper) <- profilee.py:88(helper2)(8) 399.896 + + +""" +ProfileTest.expected_output['print_callees'] = """\ + Ordered by: standard name + +Function called... +:0(append) -> +:0(exc_info) -> +:0(hasattr) -> profilee.py:110(__getattr__)(12) 27.972 +:0(range) -> +:0(setprofile) -> +:1() -> profilee.py:25(testfunc)(1) 999.753 +profile:0(profiler) -> profile:0(testfunc())(1) 999.749 +profile:0(testfunc()) -> :0(setprofile)(1) 0.000 + :1()(1) 999.751 +profilee.py:110(__getattr__) -> +profilee.py:25(testfunc) -> profilee.py:35(factorial)(1) 169.917 + profilee.py:55(helper)(2) 599.814 +profilee.py:35(factorial) -> profilee.py:35(factorial)(20) 169.917 + profilee.py:48(mul)(20) 19.980 +profilee.py:48(mul) -> +profilee.py:55(helper) -> profilee.py:73(helper1)(4) 119.964 + profilee.py:84(helper2_indirect)(2) 139.942 + profilee.py:88(helper2)(6) 399.896 +profilee.py:73(helper1) -> :0(append)(4) -0.004 + :0(exc_info)(4) -0.004 + :0(hasattr)(4) 11.964 +profilee.py:84(helper2_indirect) -> profilee.py:35(factorial)(2) 169.917 + profilee.py:88(helper2)(2) 399.896 +profilee.py:88(helper2) -> :0(hasattr)(8) 11.964 + profilee.py:98(subhelper)(8) 79.944 +profilee.py:98(subhelper) -> :0(range)(8) -0.008 + profilee.py:110(__getattr__)(16) 27.972 + -def mul(a, b): - # 20 calls - # 1 tick, local - global ticks - ticks += 1 - return a * b - -def helper(): - # 2 calls - # 300 ticks total: 20 ticks local, 260 ticks in subfunctions - global ticks - ticks += 1 - helper1() # 30 - ticks += 2 - helper1() # 30 - ticks += 6 - helper2() # 50 - ticks += 3 - helper2() # 50 - ticks += 2 - helper2() # 50 - ticks += 5 - helper2_indirect() # 70 - ticks += 1 - -def helper1(): - # 4 calls - # 30 ticks total: 29 ticks local, 1 tick in subfunctions - global ticks - ticks += 10 - hasattr(C(), "foo") # 1 - ticks += 19 - lst = [] - lst.append(42) # 0 - sys.exc_info() # 0 - -def helper2_indirect(): - helper2() # 50 - factorial(3) # 20 - -def helper2(): - # 8 calls - # 50 ticks local: 39 ticks local, 11 ticks in subfunctions - global ticks - ticks += 11 - hasattr(C(), "bar") # 1 - ticks += 13 - subhelper() # 10 - ticks += 15 - -def subhelper(): - # 8 calls - # 10 ticks total: 8 ticks local, 2 ticks in subfunctions - global ticks - ticks += 2 - for i in range(2): # 0 - try: - C().foo # 1 x 2 - except AttributeError: - ticks += 3 # 3 x 2 - -class C: - def __getattr__(self, name): - # 28 calls - # 1 tick, local - global ticks - ticks += 1 - raise AttributeError +""" if __name__ == "__main__": - test_main() + main() Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Tue Feb 5 20:58:17 2008 @@ -9,6 +9,10 @@ QUEUE_SIZE = 5 +def qfull(q): + return q.maxsize > 0 and q.qsize() == q.maxsize + + # A thread to run a function that unclogs a blocked Queue. class _TriggerThread(threading.Thread): def __init__(self, fn, args): @@ -86,7 +90,7 @@ self.cumlock = threading.Lock() def simple_queue_test(self, q): - if not q.empty(): + if q.qsize(): raise RuntimeError, "Call this function with an empty queue" # I guess we better check things actually queue correctly a little :) q.put(111) @@ -100,10 +104,10 @@ "Didn't seem to queue the correct data!") for i in range(QUEUE_SIZE-1): q.put(i) - self.assert_(not q.empty(), "Queue should not be empty") - self.assert_(not q.full(), "Queue should not be full") + self.assert_(q.qsize(), "Queue should not be empty") + self.assert_(not qfull(q), "Queue should not be full") q.put("last") - self.assert_(q.full(), "Queue should be full") + self.assert_(qfull(q), "Queue should be full") try: q.put("full", block=0) self.fail("Didn't appear to block with a full queue") @@ -120,7 +124,7 @@ # Empty it for i in range(QUEUE_SIZE): q.get() - self.assert_(q.empty(), "Queue should be empty") + self.assert_(not q.qsize(), "Queue should be empty") try: q.get(block=0) self.fail("Didn't appear to block with an empty queue") @@ -224,7 +228,7 @@ class FailingQueueTest(unittest.TestCase, BlockingTestMixin): def failing_queue_test(self, q): - if not q.empty(): + if q.qsize(): raise RuntimeError, "Call this function with an empty queue" for i in range(QUEUE_SIZE-1): q.put(i) @@ -242,7 +246,7 @@ except FailingQueueException: pass q.put("last") - self.assert_(q.full(), "Queue should be full") + self.assert_(qfull(q), "Queue should be full") # Test a failing blocking put q.fail_next_put = True try: @@ -264,17 +268,17 @@ # Check the Queue isn't damaged. # put failed, but get succeeded - re-add q.put("last") - self.assert_(q.full(), "Queue should be full") + self.assert_(qfull(q), "Queue should be full") q.get() - self.assert_(not q.full(), "Queue should not be full") + self.assert_(not qfull(q), "Queue should not be full") q.put("last") - self.assert_(q.full(), "Queue should be full") + self.assert_(qfull(q), "Queue should be full") # Test a blocking put self.do_blocking_test(q.put, ("full",), q.get, ()) # Empty it for i in range(QUEUE_SIZE): q.get() - self.assert_(q.empty(), "Queue should be empty") + self.assert_(not q.qsize(), "Queue should be empty") q.put("first") q.fail_next_get = True try: @@ -282,16 +286,16 @@ self.fail("The queue didn't fail when it should have") except FailingQueueException: pass - self.assert_(not q.empty(), "Queue should not be empty") + self.assert_(q.qsize(), "Queue should not be empty") q.fail_next_get = True try: q.get(timeout=0.1) self.fail("The queue didn't fail when it should have") except FailingQueueException: pass - self.assert_(not q.empty(), "Queue should not be empty") + self.assert_(q.qsize(), "Queue should not be empty") q.get() - self.assert_(q.empty(), "Queue should be empty") + self.assert_(not q.qsize(), "Queue should be empty") q.fail_next_get = True try: self.do_exceptional_blocking_test(q.get, (), q.put, ('empty',), @@ -300,9 +304,9 @@ except FailingQueueException: pass # put succeeded, but get failed. - self.assert_(not q.empty(), "Queue should not be empty") + self.assert_(q.qsize(), "Queue should not be empty") q.get() - self.assert_(q.empty(), "Queue should be empty") + self.assert_(not q.qsize(), "Queue should be empty") def test_failing_queue(self): # Test to make sure a queue is functioning correctly. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Feb 5 20:58:17 2008 @@ -1287,6 +1287,8 @@ Tests ----- +- Refactor test_profile and test_cprofile to use the same code to profile. + - Make test_runpy reentrant by fixing _check_module to clear out any module being tested. Was causing an error by __import__ doing a reload on the second run and thus suppressing bytecode recreation. From python-checkins at python.org Tue Feb 5 21:13:46 2008 From: python-checkins at python.org (brett.cannon) Date: Tue, 5 Feb 2008 21:13:46 +0100 (CET) Subject: [Python-checkins] r60606 - peps/trunk/pep-3108.txt Message-ID: <20080205201346.24CE11E4010@bag.python.org> Author: brett.cannon Date: Tue Feb 5 21:13:45 2008 New Revision: 60606 Modified: peps/trunk/pep-3108.txt Log: Rename proposed http.tools and xmlrpc.tools to http.client and xmlrpc.client, respectively. Both actually contain code for clients and not just a mish-mash of tools. Also remove the proposed http.cookies module until a decision is made on how to handle Cookie/cookielib (cookie.server/cookie.client?). Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Tue Feb 5 21:13:45 2008 @@ -496,11 +496,10 @@ ================= =============================== Current Name Replacement Name ================= =============================== -httplib http.tools +httplib http.client BaseHTTPServer http.server [2]_ CGIHTTPServer http.server [2]_ SimpleHTTPServer http.server [2]_ -cookielib http.cookies ================= =============================== .. [2] The ``http.server`` module can combine the specified modules @@ -513,7 +512,7 @@ ================== =============================== Current Name Replacement Name ================== =============================== -xmlrpclib xmlrpc.tools +xmlrpclib xmlrpc.client SimpleXMLRPCServer xmlrpc.server [3]_ CGIXMLRPCServer xmlrpc.server [3]_ ================== =============================== From nnorwitz at gmail.com Tue Feb 5 22:08:17 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 16:08:17 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080205210817.GA23519@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [550385 refs] From buildbot at python.org Tue Feb 5 21:46:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 20:46:35 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080205204636.149F21E4010@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/610 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From nnorwitz at gmail.com Tue Feb 5 22:15:11 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 16:15:11 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080205211511.GA25511@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9521 refs] test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [549995 refs] From buildbot at python.org Tue Feb 5 21:55:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 05 Feb 2008 20:55:33 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080205205534.1FDFF1E4030@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/535 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "./Lib/test/regrtest.py", line 173, in from test import test_support File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_support.py", line 122 (port, file=sys.__stderr__)) ^ SyntaxError: invalid syntax make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Tue Feb 5 23:29:58 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 17:29:58 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080205222958.GA31512@python.psfb.org> More important issues: ---------------------- test_poplib leaked [0, 0, 97] references, sum=97 Less important issues: ---------------------- test_popen2 leaked [23, -23, 0] references, sum=0 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [3, 3, 134] references, sum=140 From nnorwitz at gmail.com Tue Feb 5 23:48:41 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Feb 2008 17:48:41 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080205224841.GA2202@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 3: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 314 tests OK. 2 tests failed: test_docxmlrpc test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [562027 refs] From buildbot at python.org Wed Feb 6 01:06:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 00:06:26 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 3.0 Message-ID: <20080206000626.C88D71E4010@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%203.0/builds/456 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_bsddb3 ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 217, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test_close_when_done (test.test_asynchat.TestAsynchat_WithPoll) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/test/test_asynchat.py", line 217, in test_close_when_done self.assertTrue(len(s.buffer) > 0) AssertionError: None ====================================================================== FAIL: test03_repr_closed_db (bsddb.test.test_misc.MiscTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/3.0.bolen-freebsd/build/Lib/bsddb/test/test_misc.py", line 47, in test03_repr_closed_db self.assertEquals(rp, "{}") AssertionError: '' != '{}' sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 01:06:45 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 00:06:45 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20080206000646.5A74D1E4010@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/489 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 6 tests failed: test_anydbm test_bsddb test_bsddb3 test_mailbox test_shelve test_whichdb ====================================================================== ERROR: test_anydbm_access (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 90, in test_anydbm_access self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_creation (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 63, in test_anydbm_creation f = anydbm.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_keys (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 84, in test_anydbm_keys self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_modification (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 71, in test_anydbm_modification self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_read (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 78, in test_anydbm_read self.init_db() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') Traceback (most recent call last): File "../lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 90, in test_main run_unittest(suite()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_bsddb3.py", line 53, in suite import bsddb.test.test_1413192 File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 38, in context = Context() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\test\test_1413192.py", line 26, in __init__ db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 718, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 F' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 718, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 \x01' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 941, in tearDown self._delete_recursively(self._path) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo *** EOOH *** From: foo 0 1,, From: foo *** EOOH *** From: foo 1 1,, From: foo *** EOOH *** From: foo 2 1,, From: foo *** EOOH *** From: foo 3 ' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 758, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: 'From MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'From MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:47 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 725, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 742, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\nF' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\nF' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 758, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n' != '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Wed Feb 06 00:04:54 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 725, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 742, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\n\x01' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0\n\n\x01' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\n\x01' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\noriginal 0\n\n\x1f' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\nchanged 0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== ERROR: test_bool (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_ascii_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 51, in test_ascii_file_shelf s = shelve.open(self.fn, protocol=0) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_binary_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 59, in test_binary_file_shelf s = shelve.open(self.fn, protocol=1) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_proto2_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_shelve.py", line 67, in test_proto2_file_shelf s = shelve.open(self.fn, protocol=2) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_whichdb (test.test_whichdb.WhichDBTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\test\test_whichdb.py", line 32, in test_whichdb f = module.open(_fname, 'c') File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "E:\cygwin\home\db3l\buildarea\3.0.bolen-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 02:02:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 01:02:35 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian 3.0 Message-ID: <20080206010235.99C301E4014@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/275 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 03:23:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 02:23:26 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20080206022327.324281E4010@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/81 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/home/pybot/buildarea/3.0.klose-ubuntu-sparc/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_ctypes test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 03:43:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 02:43:31 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080206024331.2164D1E4014@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2759 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_docxmlrpc test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 04:03:09 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 03:03:09 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080206030309.727881E4010@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2788 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0004-0004-0004-0004-0004' Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1006-1006-1006-1006-1006' Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2002-2002-2002-2002-2002' 2 tests failed: test_docxmlrpc test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 04:10:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 03:10:18 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080206031018.A546B1E4010@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2484 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_docxmlrpc test_smtplib test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 04:32:51 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 03:32:51 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080206033251.B0AA11E4028@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/498 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_timeout make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 05:19:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 04:19:58 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080206041959.174801E4010@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/179 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_docxmlrpc ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 05:52:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 04:52:33 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080206045233.7479D1E4014@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/26 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_docxmlrpc test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Wed Feb 6 10:08:18 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 04:08:18 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080206090818.GA2695@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [550448 refs] From nnorwitz at gmail.com Wed Feb 6 10:15:13 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 04:15:13 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080206091513.GA4687@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9521 refs] test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [550060 refs] From nnorwitz at gmail.com Wed Feb 6 11:40:28 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 05:40:28 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080206104028.GA22865@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 314 tests OK. 2 tests failed: test_docxmlrpc test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [562094 refs] From python-checkins at python.org Wed Feb 6 13:44:35 2008 From: python-checkins at python.org (christian.heimes) Date: Wed, 6 Feb 2008 13:44:35 +0100 (CET) Subject: [Python-checkins] r60614 - in python/trunk: Misc/NEWS Objects/classobject.c Objects/methodobject.c Message-ID: <20080206124435.62AF71E401F@bag.python.org> Author: christian.heimes Date: Wed Feb 6 13:44:34 2008 New Revision: 60614 Modified: python/trunk/Misc/NEWS python/trunk/Objects/classobject.c python/trunk/Objects/methodobject.c Log: Limit free list of method and builtin function objects to 256 entries each. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Feb 6 13:44:34 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Limit free list of method and builtin function objects to 256 entries + each. + - Patch #1953: Added ``sys._compact_freelists()`` and the C API functions ``PyInt_CompactFreeList`` and ``PyFloat_CompactFreeList`` to compact the internal free lists of pre-allocted ints and floats. Modified: python/trunk/Objects/classobject.c ============================================================================== --- python/trunk/Objects/classobject.c (original) +++ python/trunk/Objects/classobject.c Wed Feb 6 13:44:34 2008 @@ -4,10 +4,16 @@ #include "Python.h" #include "structmember.h" +/* Free list for method objects to safe malloc/free overhead + * The im_self element is used to chain the elements. + */ +static PyMethodObject *free_list; +static int numfree = 0; +#define MAXFREELIST 256 + #define TP_DESCR_GET(t) \ (PyType_HasFeature(t, Py_TPFLAGS_HAVE_CLASS) ? (t)->tp_descr_get : NULL) - /* Forward */ static PyObject *class_lookup(PyClassObject *, PyObject *, PyClassObject **); @@ -2193,8 +2199,6 @@ In case (b), im_self is NULL */ -static PyMethodObject *free_list; - PyObject * PyMethod_New(PyObject *func, PyObject *self, PyObject *klass) { @@ -2207,6 +2211,7 @@ if (im != NULL) { free_list = (PyMethodObject *)(im->im_self); PyObject_INIT(im, &PyMethod_Type); + numfree--; } else { im = PyObject_GC_New(PyMethodObject, &PyMethod_Type); @@ -2332,8 +2337,14 @@ Py_DECREF(im->im_func); Py_XDECREF(im->im_self); Py_XDECREF(im->im_class); - im->im_self = (PyObject *)free_list; - free_list = im; + if (numfree < MAXFREELIST) { + im->im_self = (PyObject *)free_list; + free_list = im; + numfree++; + } + else { + PyObject_GC_Del(im); + } } static int @@ -2620,5 +2631,7 @@ PyMethodObject *im = free_list; free_list = (PyMethodObject *)(im->im_self); PyObject_GC_Del(im); + numfree--; } + assert(numfree == 0); } Modified: python/trunk/Objects/methodobject.c ============================================================================== --- python/trunk/Objects/methodobject.c (original) +++ python/trunk/Objects/methodobject.c Wed Feb 6 13:44:34 2008 @@ -4,7 +4,12 @@ #include "Python.h" #include "structmember.h" +/* Free list for method objects to safe malloc/free overhead + * The m_self element is used to chain the objects. + */ static PyCFunctionObject *free_list = NULL; +static int numfree = 0; +#define MAXFREELIST 256 PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) @@ -14,6 +19,7 @@ if (op != NULL) { free_list = (PyCFunctionObject *)(op->m_self); PyObject_INIT(op, &PyCFunction_Type); + numfree--; } else { op = PyObject_GC_New(PyCFunctionObject, &PyCFunction_Type); @@ -125,8 +131,14 @@ _PyObject_GC_UNTRACK(m); Py_XDECREF(m->m_self); Py_XDECREF(m->m_module); - m->m_self = (PyObject *)free_list; - free_list = m; + if (numfree < MAXFREELIST) { + m->m_self = (PyObject *)free_list; + free_list = m; + numfree++; + } + else { + PyObject_GC_Del(m); + } } static PyObject * @@ -346,14 +358,16 @@ PyCFunctionObject *v = free_list; free_list = (PyCFunctionObject *)(v->m_self); PyObject_GC_Del(v); + numfree--; } + assert(numfree == 0); } /* PyCFunction_New() is now just a macro that calls PyCFunction_NewEx(), but it's part of the API so we need to keep a function around that existing C extensions can call. */ - + #undef PyCFunction_New PyAPI_FUNC(PyObject *) PyCFunction_New(PyMethodDef *, PyObject *); From buildbot at python.org Wed Feb 6 14:08:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 13:08:20 +0000 Subject: [Python-checkins] buildbot failure in alpha Debian 3.0 Message-ID: <20080206130820.952271E4021@bag.python.org> The Buildbot has detected a new failure of alpha Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%203.0/builds/27 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-alpha Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Wed Feb 6 14:33:45 2008 From: python-checkins at python.org (christian.heimes) Date: Wed, 6 Feb 2008 14:33:45 +0100 (CET) Subject: [Python-checkins] r60616 - in python/trunk: Misc/NEWS Objects/classobject.c Objects/dictobject.c Objects/frameobject.c Objects/listobject.c Objects/methodobject.c Objects/setobject.c Objects/tupleobject.c Objects/unicodeobject.c Message-ID: <20080206133345.280D41E4021@bag.python.org> Author: christian.heimes Date: Wed Feb 6 14:33:44 2008 New Revision: 60616 Modified: python/trunk/Misc/NEWS python/trunk/Objects/classobject.c python/trunk/Objects/dictobject.c python/trunk/Objects/frameobject.c python/trunk/Objects/listobject.c python/trunk/Objects/methodobject.c python/trunk/Objects/setobject.c python/trunk/Objects/tupleobject.c python/trunk/Objects/unicodeobject.c Log: Unified naming convention for free lists and their limits. All free lists in Object/ are named ``free_list``, the counter ``numfree`` and the upper limit is a macro ``PyName_MAXFREELIST`` inside an #ifndef block. The chances should make it easier to adjust Python for platforms with less memory, e.g. mobile phones. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Feb 6 14:33:44 2008 @@ -1487,6 +1487,10 @@ C API ----- +- Unified naming convention for free lists and their limits. All free lists + in Object/ are named ``free_list``, the counter ``numfree`` and the upper + limit is a macro ``PyName_MAXFREELIST`` inside an #ifndef block. + - ``PySet_Add()`` can now modify a newly created frozenset. Similarly to ``PyTuple_SetItem``, it can be used to populate a brand new frozenset; but it does not steal a reference to the added item. Modified: python/trunk/Objects/classobject.c ============================================================================== --- python/trunk/Objects/classobject.c (original) +++ python/trunk/Objects/classobject.c Wed Feb 6 14:33:44 2008 @@ -9,7 +9,9 @@ */ static PyMethodObject *free_list; static int numfree = 0; -#define MAXFREELIST 256 +#ifndef PyMethod_MAXFREELIST +#define PyMethod_MAXFREELIST 256 +#endif #define TP_DESCR_GET(t) \ (PyType_HasFeature(t, Py_TPFLAGS_HAVE_CLASS) ? (t)->tp_descr_get : NULL) @@ -2337,7 +2339,7 @@ Py_DECREF(im->im_func); Py_XDECREF(im->im_self); Py_XDECREF(im->im_class); - if (numfree < MAXFREELIST) { + if (numfree < PyMethod_MAXFREELIST) { im->im_self = (PyObject *)free_list; free_list = im; numfree++; Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Wed Feb 6 14:33:44 2008 @@ -183,9 +183,11 @@ } while(0) /* Dictionary reuse scheme to save calls to malloc, free, and memset */ -#define MAXFREEDICTS 80 -static PyDictObject *free_dicts[MAXFREEDICTS]; -static int num_free_dicts = 0; +#ifndef PyDict_MAXFREELIST +#define PyDict_MAXFREELIST 80 +#endif +static PyDictObject *free_list[PyDict_MAXFREELIST]; +static int numfree = 0; PyObject * PyDict_New(void) @@ -199,8 +201,8 @@ Py_AtExit(show_counts); #endif } - if (num_free_dicts) { - mp = free_dicts[--num_free_dicts]; + if (numfree) { + mp = free_list[--numfree]; assert (mp != NULL); assert (Py_TYPE(mp) == &PyDict_Type); _Py_NewReference((PyObject *)mp); @@ -868,8 +870,8 @@ } if (mp->ma_table != mp->ma_smalltable) PyMem_DEL(mp->ma_table); - if (num_free_dicts < MAXFREEDICTS && Py_TYPE(mp) == &PyDict_Type) - free_dicts[num_free_dicts++] = mp; + if (numfree < PyDict_MAXFREELIST && Py_TYPE(mp) == &PyDict_Type) + free_list[numfree++] = mp; else Py_TYPE(mp)->tp_free((PyObject *)mp); Py_TRASHCAN_SAFE_END(mp) Modified: python/trunk/Objects/frameobject.c ============================================================================== --- python/trunk/Objects/frameobject.c (original) +++ python/trunk/Objects/frameobject.c Wed Feb 6 14:33:44 2008 @@ -393,14 +393,15 @@ call depth of more than 20 or 30 is probably already exceptional unless the program contains run-away recursion. I hope. - Later, MAXFREELIST was added to bound the # of frames saved on + Later, PyFrame_MAXFREELIST was added to bound the # of frames saved on free_list. Else programs creating lots of cyclic trash involving frames could provoke free_list into growing without bound. */ static PyFrameObject *free_list = NULL; static int numfree = 0; /* number of frames currently in free_list */ -#define MAXFREELIST 200 /* max value for numfree */ +/* max value for numfree */ +#define PyFrame_MAXFREELIST 200 static void frame_dealloc(PyFrameObject *f) @@ -433,7 +434,7 @@ co = f->f_code; if (co->co_zombieframe == NULL) co->co_zombieframe = f; - else if (numfree < MAXFREELIST) { + else if (numfree < PyFrame_MAXFREELIST) { ++numfree; f->f_back = free_list; free_list = f; Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Wed Feb 6 14:33:44 2008 @@ -64,18 +64,20 @@ } /* Empty list reuse scheme to save calls to malloc and free */ -#define MAXFREELISTS 80 -static PyListObject *free_lists[MAXFREELISTS]; -static int num_free_lists = 0; +#ifndef PyList_MAXFREELIST +#define PyList_MAXFREELIST 80 +#endif +static PyListObject *free_list[PyList_MAXFREELIST]; +static int numfree = 0; void PyList_Fini(void) { PyListObject *op; - while (num_free_lists) { - num_free_lists--; - op = free_lists[num_free_lists]; + while (numfree) { + numfree--; + op = free_list[numfree]; assert(PyList_CheckExact(op)); PyObject_GC_Del(op); } @@ -95,9 +97,9 @@ /* Check for overflow */ if (nbytes / sizeof(PyObject *) != (size_t)size) return PyErr_NoMemory(); - if (num_free_lists) { - num_free_lists--; - op = free_lists[num_free_lists]; + if (numfree) { + numfree--; + op = free_list[numfree]; _Py_NewReference((PyObject *)op); } else { op = PyObject_GC_New(PyListObject, &PyList_Type); @@ -265,8 +267,8 @@ } PyMem_FREE(op->ob_item); } - if (num_free_lists < MAXFREELISTS && PyList_CheckExact(op)) - free_lists[num_free_lists++] = op; + if (numfree < PyList_MAXFREELIST && PyList_CheckExact(op)) + free_list[numfree++] = op; else Py_TYPE(op)->tp_free((PyObject *)op); Py_TRASHCAN_SAFE_END(op) Modified: python/trunk/Objects/methodobject.c ============================================================================== --- python/trunk/Objects/methodobject.c (original) +++ python/trunk/Objects/methodobject.c Wed Feb 6 14:33:44 2008 @@ -9,7 +9,9 @@ */ static PyCFunctionObject *free_list = NULL; static int numfree = 0; -#define MAXFREELIST 256 +#ifndef PyCFunction_MAXFREELIST +#define PyCFunction_MAXFREELIST 256 +#endif PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) @@ -131,7 +133,7 @@ _PyObject_GC_UNTRACK(m); Py_XDECREF(m->m_self); Py_XDECREF(m->m_module); - if (numfree < MAXFREELIST) { + if (numfree < PyCFunction_MAXFREELIST) { m->m_self = (PyObject *)free_list; free_list = m; numfree++; Modified: python/trunk/Objects/setobject.c ============================================================================== --- python/trunk/Objects/setobject.c (original) +++ python/trunk/Objects/setobject.c Wed Feb 6 14:33:44 2008 @@ -51,9 +51,11 @@ } while(0) /* Reuse scheme to save calls to malloc, free, and memset */ -#define MAXFREESETS 80 -static PySetObject *free_sets[MAXFREESETS]; -static int num_free_sets = 0; +#ifndef PySet_MAXFREELIST +#define PySet_MAXFREELIST 80 +#endif +static PySetObject *free_list[PySet_MAXFREELIST]; +static int numfree = 0; /* The basic lookup function used by all operations. @@ -558,8 +560,8 @@ } if (so->table != so->smalltable) PyMem_DEL(so->table); - if (num_free_sets < MAXFREESETS && PyAnySet_CheckExact(so)) - free_sets[num_free_sets++] = so; + if (numfree < PySet_MAXFREELIST && PyAnySet_CheckExact(so)) + free_list[numfree++] = so; else Py_TYPE(so)->tp_free(so); Py_TRASHCAN_SAFE_END(so) @@ -983,9 +985,9 @@ } /* create PySetObject structure */ - if (num_free_sets && + if (numfree && (type == &PySet_Type || type == &PyFrozenSet_Type)) { - so = free_sets[--num_free_sets]; + so = free_list[--numfree]; assert (so != NULL && PyAnySet_CheckExact(so)); Py_TYPE(so) = type; _Py_NewReference((PyObject *)so); @@ -1053,9 +1055,9 @@ { PySetObject *so; - while (num_free_sets) { - num_free_sets--; - so = free_sets[num_free_sets]; + while (numfree) { + numfree--; + so = free_list[numfree]; PyObject_GC_Del(so); } Py_CLEAR(dummy); Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Wed Feb 6 14:33:44 2008 @@ -4,19 +4,19 @@ #include "Python.h" /* Speed optimization to avoid frequent malloc/free of small tuples */ -#ifndef MAXSAVESIZE -#define MAXSAVESIZE 20 /* Largest tuple to save on free list */ +#ifndef PyTuple_MAXSAVESIZE +#define PyTuple_MAXSAVESIZE 20 /* Largest tuple to save on free list */ #endif -#ifndef MAXSAVEDTUPLES -#define MAXSAVEDTUPLES 2000 /* Maximum number of tuples of each size to save */ +#ifndef PyTuple_MAXFREELIST +#define PyTuple_MAXFREELIST 2000 /* Maximum number of tuples of each size to save */ #endif -#if MAXSAVESIZE > 0 -/* Entries 1 up to MAXSAVESIZE are free lists, entry 0 is the empty +#if PyTuple_MAXSAVESIZE > 0 +/* Entries 1 up to PyTuple_MAXSAVESIZE are free lists, entry 0 is the empty tuple () of which at most one instance will be allocated. */ -static PyTupleObject *free_tuples[MAXSAVESIZE]; -static int num_free_tuples[MAXSAVESIZE]; +static PyTupleObject *free_list[PyTuple_MAXSAVESIZE]; +static int numfree[PyTuple_MAXSAVESIZE]; #endif #ifdef COUNT_ALLOCS int fast_tuple_allocs; @@ -32,18 +32,18 @@ PyErr_BadInternalCall(); return NULL; } -#if MAXSAVESIZE > 0 - if (size == 0 && free_tuples[0]) { - op = free_tuples[0]; +#if PyTuple_MAXSAVESIZE > 0 + if (size == 0 && free_list[0]) { + op = free_list[0]; Py_INCREF(op); #ifdef COUNT_ALLOCS tuple_zero_allocs++; #endif return (PyObject *) op; } - if (size < MAXSAVESIZE && (op = free_tuples[size]) != NULL) { - free_tuples[size] = (PyTupleObject *) op->ob_item[0]; - num_free_tuples[size]--; + if (size < PyTuple_MAXSAVESIZE && (op = free_list[size]) != NULL) { + free_list[size] = (PyTupleObject *) op->ob_item[0]; + numfree[size]--; #ifdef COUNT_ALLOCS fast_tuple_allocs++; #endif @@ -71,10 +71,10 @@ } for (i=0; i < size; i++) op->ob_item[i] = NULL; -#if MAXSAVESIZE > 0 +#if PyTuple_MAXSAVESIZE > 0 if (size == 0) { - free_tuples[0] = op; - ++num_free_tuples[0]; + free_list[0] = op; + ++numfree[0]; Py_INCREF(op); /* extra INCREF so that this is never freed */ } #endif @@ -167,14 +167,14 @@ i = len; while (--i >= 0) Py_XDECREF(op->ob_item[i]); -#if MAXSAVESIZE > 0 - if (len < MAXSAVESIZE && - num_free_tuples[len] < MAXSAVEDTUPLES && +#if PyTuple_MAXSAVESIZE > 0 + if (len < PyTuple_MAXSAVESIZE && + numfree[len] < PyTuple_MAXFREELIST && Py_TYPE(op) == &PyTuple_Type) { - op->ob_item[0] = (PyObject *) free_tuples[len]; - num_free_tuples[len]++; - free_tuples[len] = op; + op->ob_item[0] = (PyObject *) free_list[len]; + numfree[len]++; + free_list[len] = op; goto done; /* return */ } #endif @@ -781,16 +781,16 @@ void PyTuple_Fini(void) { -#if MAXSAVESIZE > 0 +#if PyTuple_MAXSAVESIZE > 0 int i; - Py_XDECREF(free_tuples[0]); - free_tuples[0] = NULL; + Py_XDECREF(free_list[0]); + free_list[0] = NULL; - for (i = 1; i < MAXSAVESIZE; i++) { + for (i = 1; i < PyTuple_MAXSAVESIZE; i++) { PyTupleObject *p, *q; - p = free_tuples[i]; - free_tuples[i] = NULL; + p = free_list[i]; + free_list[i] = NULL; while (p) { q = p; p = (PyTupleObject *)(p->ob_item[0]); Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Feb 6 14:33:44 2008 @@ -51,7 +51,7 @@ /* Limit for the Unicode object free list */ -#define MAX_UNICODE_FREELIST_SIZE 1024 +#define PyUnicode_MAXFREELIST 1024 /* Limit for the Unicode object free list stay alive optimization. @@ -59,7 +59,7 @@ all objects on the free list having a size less than this limit. This reduces malloc() overhead for small Unicode objects. - At worst this will result in MAX_UNICODE_FREELIST_SIZE * + At worst this will result in PyUnicode_MAXFREELIST * (sizeof(PyUnicodeObject) + KEEPALIVE_SIZE_LIMIT + malloc()-overhead) bytes of unused garbage. @@ -93,8 +93,8 @@ #endif /* Free list for Unicode objects */ -static PyUnicodeObject *unicode_freelist; -static int unicode_freelist_size; +static PyUnicodeObject *free_list; +static int numfree; /* The empty Unicode object is shared to improve performance. */ static PyUnicodeObject *unicode_empty; @@ -299,10 +299,10 @@ } /* Unicode freelist & memory allocation */ - if (unicode_freelist) { - unicode = unicode_freelist; - unicode_freelist = *(PyUnicodeObject **)unicode; - unicode_freelist_size--; + if (free_list) { + unicode = free_list; + free_list = *(PyUnicodeObject **)unicode; + numfree--; if (unicode->str) { /* Keep-Alive optimization: we only upsize the buffer, never downsize it. */ @@ -352,7 +352,7 @@ void unicode_dealloc(register PyUnicodeObject *unicode) { if (PyUnicode_CheckExact(unicode) && - unicode_freelist_size < MAX_UNICODE_FREELIST_SIZE) { + numfree < PyUnicode_MAXFREELIST) { /* Keep-Alive optimization */ if (unicode->length >= KEEPALIVE_SIZE_LIMIT) { PyMem_DEL(unicode->str); @@ -364,9 +364,9 @@ unicode->defenc = NULL; } /* Add to free list */ - *(PyUnicodeObject **)unicode = unicode_freelist; - unicode_freelist = unicode; - unicode_freelist_size++; + *(PyUnicodeObject **)unicode = free_list; + free_list = unicode; + numfree++; } else { PyMem_DEL(unicode->str); @@ -7704,9 +7704,9 @@ #if 0 static PyObject* -unicode_freelistsize(PyUnicodeObject *self) +free_listsize(PyUnicodeObject *self) { - return PyInt_FromLong(unicode_freelist_size); + return PyInt_FromLong(numfree); } #endif @@ -7861,7 +7861,7 @@ #if 0 /* This one is just used for debugging the implementation. */ - {"freelistsize", (PyCFunction) unicode_freelistsize, METH_NOARGS}, + {"freelistsize", (PyCFunction) free_listsize, METH_NOARGS}, #endif {"__getnewargs__", (PyCFunction)unicode_getnewargs, METH_NOARGS}, @@ -8831,8 +8831,8 @@ }; /* Init the implementation */ - unicode_freelist = NULL; - unicode_freelist_size = 0; + free_list = NULL; + numfree = 0; unicode_empty = _PyUnicode_New(0); if (!unicode_empty) return; @@ -8869,7 +8869,7 @@ } } - for (u = unicode_freelist; u != NULL;) { + for (u = free_list; u != NULL;) { PyUnicodeObject *v = u; u = *(PyUnicodeObject **)u; if (v->str) @@ -8877,8 +8877,8 @@ Py_XDECREF(v->defenc); PyObject_Del(v); } - unicode_freelist = NULL; - unicode_freelist_size = 0; + free_list = NULL; + numfree = 0; } #ifdef __cplusplus From python-checkins at python.org Wed Feb 6 15:31:55 2008 From: python-checkins at python.org (walter.doerwald) Date: Wed, 6 Feb 2008 15:31:55 +0100 (CET) Subject: [Python-checkins] r60618 - python/trunk/Doc/library/calendar.rst Message-ID: <20080206143155.E7F8E1E4021@bag.python.org> Author: walter.doerwald Date: Wed Feb 6 15:31:55 2008 New Revision: 60618 Modified: python/trunk/Doc/library/calendar.rst Log: Remove month parameter from Calendar.yeardatescalendar(), Calendar.yeardays2calendar() and Calendar.yeardayscalendar() as the methods don't have such a parameter. Fixes issue #2017. Rewrap content to 80 chars. Modified: python/trunk/Doc/library/calendar.rst ============================================================================== --- python/trunk/Doc/library/calendar.rst (original) +++ python/trunk/Doc/library/calendar.rst Wed Feb 6 15:31:55 2008 @@ -83,22 +83,22 @@ Weeks are lists of seven day numbers. -.. method:: Calendar.yeardatescalendar(year, month[, width]) +.. method:: Calendar.yeardatescalendar(year[, width]) - Return the data for the specified year ready for formatting. The return value is - a list of month rows. Each month row contains up to *width* months (defaulting - to 3). Each month contains between 4 and 6 weeks and each week contains 1--7 - days. Days are :class:`datetime.date` objects. + Return the data for the specified year ready for formatting. The return value + is a list of month rows. Each month row contains up to *width* months + (defaulting to 3). Each month contains between 4 and 6 weeks and each week + contains 1--7 days. Days are :class:`datetime.date` objects. -.. method:: Calendar.yeardays2calendar(year, month[, width]) +.. method:: Calendar.yeardays2calendar(year[, width]) Return the data for the specified year ready for formatting (similar to - :meth:`yeardatescalendar`). Entries in the week lists are tuples of day numbers - and weekday numbers. Day numbers outside this month are zero. + :meth:`yeardatescalendar`). Entries in the week lists are tuples of day + numbers and weekday numbers. Day numbers outside this month are zero. -.. method:: Calendar.yeardayscalendar(year, month[, width]) +.. method:: Calendar.yeardayscalendar(year[, width]) Return the data for the specified year ready for formatting (similar to :meth:`yeardatescalendar`). Entries in the week lists are day numbers. Day From python-checkins at python.org Wed Feb 6 15:39:06 2008 From: python-checkins at python.org (walter.doerwald) Date: Wed, 6 Feb 2008 15:39:06 +0100 (CET) Subject: [Python-checkins] r60619 - python/branches/release25-maint/Doc/lib/libcalendar.tex Message-ID: <20080206143906.7E9481E4021@bag.python.org> Author: walter.doerwald Date: Wed Feb 6 15:39:06 2008 New Revision: 60619 Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex Log: Remove month parameter from Calendar.yeardatescalendar(), Calendar.yeardays2calendar() and Calendar.yeardayscalendar() as the methods don't have such a parameter. Fixes issue #2017. (2.5 backport of r60618) Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libcalendar.tex (original) +++ python/branches/release25-maint/Doc/lib/libcalendar.tex Wed Feb 6 15:39:06 2008 @@ -81,20 +81,20 @@ day numbers. \end{methoddesc} -\begin{methoddesc}{yeardatescalendar}{year, month\optional{, width}} +\begin{methoddesc}{yeardatescalendar}{year\optional{, width}} Return the data for the specified year ready for formatting. The return value is a list of month rows. Each month row contains up to \var{width} months (defaulting to 3). Each month contains between 4 and 6 weeks and each week contains 1--7 days. Days are \class{datetime.date} objects. \end{methoddesc} -\begin{methoddesc}{yeardays2calendar}{year, month\optional{, width}} +\begin{methoddesc}{yeardays2calendar}{year\optional{, width}} Return the data for the specified year ready for formatting (similar to \method{yeardatescalendar()}). Entries in the week lists are tuples of day numbers and weekday numbers. Day numbers outside this month are zero. \end{methoddesc} -\begin{methoddesc}{yeardayscalendar}{year, month\optional{, width}} +\begin{methoddesc}{yeardayscalendar}{year\optional{, width}} Return the data for the specified year ready for formatting (similar to \method{yeardatescalendar()}). Entries in the week lists are day numbers. Day numbers outside this month are zero. From buildbot at python.org Wed Feb 6 16:07:15 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 15:07:15 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 3.0 Message-ID: <20080206150715.A35561E4026@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%203.0/builds/540 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_profile test_urllib2 test_urllib2net ====================================================================== FAIL: test_cprofile (test.test_profile.ProfileTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_profile.py", line 37, in test_cprofile self.assertEqual(results[0], 43000) AssertionError: 44000 != 43000 ====================================================================== ERROR: testURLread (test.test_urllib2net.URLTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 39, in testURLread f = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_bad_address (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 160, in test_bad_address urllib2.urlopen, "http://www.python.invalid./") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/unittest.py", line 311, in failUnlessRaises callableObj(*args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_basic (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 118, in test_basic open_url = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_geturl (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 142, in test_geturl open_url = _urlopen_with_retry(URL) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_info (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 129, in test_info open_url = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 200, in test_file self._test_urls(urls, self._extra_handlers(), urllib2.urlopen) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 188, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 212, in test_http self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 248, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_range (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 173, in test_range result = _urlopen_with_retry(req) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_close (test.test_urllib2net.CloseSocketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 91, in test_close response = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 319, in test_ftp_NoneNodefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 313, in test_ftp_NoneWithdefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 323, in test_ftp_Value u = _urlopen_with_retry(self.FTP_HOST, timeout=60) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 306, in test_ftp_basic u = _urlopen_with_retry(self.FTP_HOST) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 300, in test_http_NoneNodefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 290, in test_http_NoneWithdefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 296, in test_http_Value u = _urlopen_with_retry("http://www.python.org", timeout=120) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 283, in test_http_basic u = _urlopen_with_retry("http://www.python.org") File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 121, in urlopen _opener = build_opener() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 458, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib2.py", line 667, in __init__ proxies = getproxies() File "/home/pybot/buildarea/3.0.klose-debian-ppc/build/Lib/urllib.py", line 1244, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 16:07:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 15:07:55 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080206150755.EEB6E1E4025@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/615 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/3.0.norwitz-tru64/build/Lib/io.py", line 1247, in write sem_init: Too many open files sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 16:18:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 15:18:18 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 3.0 Message-ID: <20080206151818.B8D791E4015@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%203.0/builds/568 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/threading.py", line 485, in _bootstrap_inner self.run() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 125, in run svr.serve_a_few() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_profile test_socketserver ====================================================================== FAIL: test_cprofile (test.test_profile.ProfileTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/3.0.loewis-sun/build/Lib/test/test_profile.py", line 37, in test_cprofile self.assertEqual(results[0], 43000) AssertionError: 44000 != 43000 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 16:32:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 15:32:18 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 3.0 Message-ID: <20080206153218.92F731E4015@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%203.0/builds/517 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_profile ====================================================================== FAIL: test_cprofile (test.test_profile.ProfileTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-ia64/build/Lib/test/test_profile.py", line 37, in test_cprofile self.assertEqual(results[0], 43000) AssertionError: 44000 != 43000 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Wed Feb 6 18:30:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 17:30:58 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080206173058.5F1B91E402F@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/32 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed compile sincerely, -The Buildbot From nnorwitz at gmail.com Wed Feb 6 19:55:14 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 10:55:14 -0800 Subject: [Python-checkins] r60605 - in python/trunk: Lib/test/output/test_profile Lib/test/profilee.py Lib/test/test_cprofile.py Lib/test/test_profile.py Lib/test/test_queue.py Misc/NEWS In-Reply-To: <20080205195818.3A53B1E4010@bag.python.org> References: <20080205195818.3A53B1E4010@bag.python.org> Message-ID: On Feb 5, 2008 11:58 AM, georg.brandl wrote: > Author: georg.brandl > Date: Tue Feb 5 20:58:17 2008 > New Revision: 60605 > > Added: > python/trunk/Lib/test/profilee.py > Removed: > python/trunk/Lib/test/output/test_profile > Modified: > python/trunk/Lib/test/test_cprofile.py (contents, props changed) > python/trunk/Lib/test/test_profile.py (contents, props changed) > python/trunk/Lib/test/test_queue.py > python/trunk/Misc/NEWS > Log: > * Use the same code to profile for test_profile and test_cprofile. > * Convert both to unittest. > * Use the same unit testing code. > * Include the expected output in both test files. > * Make it possible to regenerate the expected output by running > the file as a script with an '-r' argument. Was the test_queue.py changes intended to be checked in with this revision? n From python-checkins at python.org Wed Feb 6 20:28:49 2008 From: python-checkins at python.org (facundo.batista) Date: Wed, 6 Feb 2008 20:28:49 +0100 (CET) Subject: [Python-checkins] r60622 - python/trunk/Lib/test/test_contains.py Message-ID: <20080206192849.687A11E4015@bag.python.org> Author: facundo.batista Date: Wed Feb 6 20:28:49 2008 New Revision: 60622 Modified: python/trunk/Lib/test/test_contains.py Log: Fixes issue 1959. Converted tests to unittest. Thanks Giampaolo Rodola. Modified: python/trunk/Lib/test/test_contains.py ============================================================================== --- python/trunk/Lib/test/test_contains.py (original) +++ python/trunk/Lib/test/test_contains.py Wed Feb 6 20:28:49 2008 @@ -1,133 +1,111 @@ -from test.test_support import TestFailed, have_unicode +from test.test_support import have_unicode, run_unittest +import unittest -class base_set: +class base_set: def __init__(self, el): self.el = el class set(base_set): - def __contains__(self, el): return self.el == el class seq(base_set): - def __getitem__(self, n): return [self.el][n] -def check(ok, *args): - if not ok: - raise TestFailed, " ".join(map(str, args)) - -a = base_set(1) -b = set(1) -c = seq(1) - -check(1 in b, "1 not in set(1)") -check(0 not in b, "0 in set(1)") -check(1 in c, "1 not in seq(1)") -check(0 not in c, "0 in seq(1)") - -try: - 1 in a - check(0, "in base_set did not raise error") -except TypeError: - pass - -try: - 1 not in a - check(0, "not in base_set did not raise error") -except TypeError: - pass - -# Test char in string - -check('c' in 'abc', "'c' not in 'abc'") -check('d' not in 'abc', "'d' in 'abc'") - -check('' in '', "'' not in ''") -check('' in 'abc', "'' not in 'abc'") - -try: - None in 'abc' - check(0, "None in 'abc' did not raise error") -except TypeError: - pass - - -if have_unicode: - - # Test char in Unicode - - check('c' in unicode('abc'), "'c' not in u'abc'") - check('d' not in unicode('abc'), "'d' in u'abc'") - - check('' in unicode(''), "'' not in u''") - check(unicode('') in '', "u'' not in ''") - check(unicode('') in unicode(''), "u'' not in u''") - check('' in unicode('abc'), "'' not in u'abc'") - check(unicode('') in 'abc', "u'' not in 'abc'") - check(unicode('') in unicode('abc'), "u'' not in u'abc'") - - try: - None in unicode('abc') - check(0, "None in u'abc' did not raise error") - except TypeError: - pass - - # Test Unicode char in Unicode - - check(unicode('c') in unicode('abc'), "u'c' not in u'abc'") - check(unicode('d') not in unicode('abc'), "u'd' in u'abc'") - - # Test Unicode char in string - - check(unicode('c') in 'abc', "u'c' not in 'abc'") - check(unicode('d') not in 'abc', "u'd' in 'abc'") - -# A collection of tests on builtin sequence types -a = range(10) -for i in a: - check(i in a, "%r not in %r" % (i, a)) -check(16 not in a, "16 not in %r" % (a,)) -check(a not in a, "%s not in %r" % (a, a)) - -a = tuple(a) -for i in a: - check(i in a, "%r not in %r" % (i, a)) -check(16 not in a, "16 not in %r" % (a,)) -check(a not in a, "%r not in %r" % (a, a)) - -class Deviant1: - """Behaves strangely when compared - - This class is designed to make sure that the contains code - works when the list is modified during the check. - """ - - aList = range(15) - - def __cmp__(self, other): - if other == 12: - self.aList.remove(12) - self.aList.remove(13) - self.aList.remove(14) - return 1 - -check(Deviant1() not in Deviant1.aList, "Deviant1 failed") - -class Deviant2: - """Behaves strangely when compared - - This class raises an exception during comparison. That in - turn causes the comparison to fail with a TypeError. - """ - - def __cmp__(self, other): - if other == 4: - raise RuntimeError, "gotcha" - -try: - check(Deviant2() not in a, "oops") -except TypeError: - pass + +class TestContains(unittest.TestCase): + def test_common_tests(self): + a = base_set(1) + b = set(1) + c = seq(1) + self.assert_(1 in b) + self.assert_(0 not in b) + self.assert_(1 in c) + self.assert_(0 not in c) + self.assertRaises(TypeError, lambda: 1 in a) + self.assertRaises(TypeError, lambda: 1 not in a) + + # test char in string + self.assert_('c' in 'abc') + self.assert_('d' not in 'abc') + + self.assert_('' in '') + self.assert_('' in 'abc') + + self.assertRaises(TypeError, lambda: None in 'abc') + + if have_unicode: + def test_char_in_unicode(self): + self.assert_('c' in unicode('abc')) + self.assert_('d' not in unicode('abc')) + + self.assert_('' in unicode('')) + self.assert_(unicode('') in '') + self.assert_(unicode('') in unicode('')) + self.assert_('' in unicode('abc')) + self.assert_(unicode('') in 'abc') + self.assert_(unicode('') in unicode('abc')) + + self.assertRaises(TypeError, lambda: None in unicode('abc')) + + # test Unicode char in Unicode + self.assert_(unicode('c') in unicode('abc')) + self.assert_(unicode('d') not in unicode('abc')) + + # test Unicode char in string + self.assert_(unicode('c') in 'abc') + self.assert_(unicode('d') not in 'abc') + + def test_builtin_sequence_types(self): + # a collection of tests on builtin sequence types + a = range(10) + for i in a: + self.assert_(i in a) + self.assert_(16 not in a) + self.assert_(a not in a) + + a = tuple(a) + for i in a: + self.assert_(i in a) + self.assert_(16 not in a) + self.assert_(a not in a) + + class Deviant1: + """Behaves strangely when compared + + This class is designed to make sure that the contains code + works when the list is modified during the check. + """ + aList = range(15) + def __cmp__(self, other): + if other == 12: + self.aList.remove(12) + self.aList.remove(13) + self.aList.remove(14) + return 1 + + self.assert_(Deviant1() not in Deviant1.aList) + + class Deviant2: + """Behaves strangely when compared + + This class raises an exception during comparison. That in + turn causes the comparison to fail with a TypeError. + """ + def __cmp__(self, other): + if other == 4: + raise RuntimeError, "gotcha" + + try: + self.assert_(Deviant2() not in a) + except TypeError: + pass + + +def test_main(): + run_unittest(TestContains) + +if __name__ == '__main__': + test_main() From python-checkins at python.org Wed Feb 6 20:58:46 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 6 Feb 2008 20:58:46 +0100 (CET) Subject: [Python-checkins] r60624 - in python/branches/release25-maint: Lib/ctypes/test/test_win32.py Misc/NEWS Modules/_ctypes/_ctypes.c Message-ID: <20080206195846.7FAC01E4015@bag.python.org> Author: thomas.heller Date: Wed Feb 6 20:58:46 2008 New Revision: 60624 Modified: python/branches/release25-maint/Lib/ctypes/test/test_win32.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/_ctypes/_ctypes.c Log: Fix the way methods are created for the _ctypes.COMError exception type; this fix is already in the trunk. Modified: python/branches/release25-maint/Lib/ctypes/test/test_win32.py ============================================================================== --- python/branches/release25-maint/Lib/ctypes/test/test_win32.py (original) +++ python/branches/release25-maint/Lib/ctypes/test/test_win32.py Wed Feb 6 20:58:46 2008 @@ -37,6 +37,19 @@ # are trapped and raise an exception. self.assertRaises(WindowsError, windll.kernel32.GetModuleHandleA, 32) + class TestWintypes(unittest.TestCase): + + def test_COMError(self): + from _ctypes import COMError + self.assertEqual(COMError.__doc__, "Raised when a COM method call failed.") + + ex = COMError(-1, "text", ("details",)) + self.assertEqual(ex.hresult, -1) + self.assertEqual(ex.text, "text") + self.assertEqual(ex.details, ("details",)) + self.assertEqual((ex.hresult, ex.text, ex.details), + ex[:]) + class Structures(unittest.TestCase): def test_struct_by_value(self): Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Wed Feb 6 20:58:46 2008 @@ -80,6 +80,10 @@ Library ------- +- Fixed _ctypes.COMError so that it must be called with exactly three + arguments, instances now have the hresult, text, and details + instance variables. + - #1507247, #2004: tarfile.py: Use mode 0700 for temporary directories and default permissions for missing directories. Modified: python/branches/release25-maint/Modules/_ctypes/_ctypes.c ============================================================================== --- python/branches/release25-maint/Modules/_ctypes/_ctypes.c (original) +++ python/branches/release25-maint/Modules/_ctypes/_ctypes.c Wed Feb 6 20:58:46 2008 @@ -4520,32 +4520,42 @@ PyObject *s; int status; - ComError = PyErr_NewException("_ctypes.COMError", - NULL, - dict); - if (ComError == NULL) + if (dict == NULL) return -1; + while (methods->ml_name) { /* get a wrapper for the built-in function */ PyObject *func = PyCFunction_New(methods, NULL); PyObject *meth; if (func == NULL) - return -1; + goto error; meth = PyMethod_New(func, NULL, ComError); Py_DECREF(func); if (meth == NULL) - return -1; + goto error; PyDict_SetItemString(dict, methods->ml_name, meth); Py_DECREF(meth); ++methods; } - Py_INCREF(ComError); + s = PyString_FromString(comerror_doc); if (s == NULL) - return -1; + goto error; status = PyDict_SetItemString(dict, "__doc__", s); Py_DECREF(s); - return status; + if (status == -1) + goto error; + + ComError = PyErr_NewException("_ctypes.COMError", + NULL, + dict); + if (ComError == NULL) + goto error; + + return 0; + error: + Py_DECREF(dict); + return -1; } #endif From python-checkins at python.org Wed Feb 6 21:29:18 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 6 Feb 2008 21:29:18 +0100 (CET) Subject: [Python-checkins] r60626 - python/trunk/Modules/_ctypes/_ctypes.c Message-ID: <20080206202918.1C10B1E4015@bag.python.org> Author: thomas.heller Date: Wed Feb 6 21:29:17 2008 New Revision: 60626 Modified: python/trunk/Modules/_ctypes/_ctypes.c Log: Fixed refcounts and error handling. Should not be merged to py3k branch. Modified: python/trunk/Modules/_ctypes/_ctypes.c ============================================================================== --- python/trunk/Modules/_ctypes/_ctypes.c (original) +++ python/trunk/Modules/_ctypes/_ctypes.c Wed Feb 6 21:29:17 2008 @@ -4956,16 +4956,19 @@ PyObject *s; int status; + if (dict == NULL) + return -1; + while (methods->ml_name) { /* get a wrapper for the built-in function */ PyObject *func = PyCFunction_New(methods, NULL); PyObject *meth; if (func == NULL) - return -1; + goto error; meth = PyMethod_New(func, NULL, ComError); Py_DECREF(func); if (meth == NULL) - return -1; + goto error; PyDict_SetItemString(dict, methods->ml_name, meth); Py_DECREF(meth); ++methods; @@ -4973,21 +4976,22 @@ s = PyString_FromString(comerror_doc); if (s == NULL) - return -1; + goto error; status = PyDict_SetItemString(dict, "__doc__", s); Py_DECREF(s); - if (status == -1) { - Py_DECREF(dict); - return -1; - } + if (status == -1) + goto error; ComError = PyErr_NewException("_ctypes.COMError", NULL, dict); if (ComError == NULL) - return -1; + goto error; return 0; + error: + Py_DECREF(dict); + return -1; } #endif From buildbot at python.org Wed Feb 6 21:42:13 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 20:42:13 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080206204213.3DD1E1E4021@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2487 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_docxmlrpc test_smtplib test_sys ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From nnorwitz at gmail.com Wed Feb 6 22:10:44 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 16:10:44 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080206211044.GA18655@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test test_ftplib failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_ftplib.py", line 72, in testTimeoutDirectAccess ftp.connect("localhost") File "/tmp/python-test/local/lib/python2.6/ftplib.py", line 130, in connect self.sock = socket.create_connection((self.host, self.port), self.timeout) File "/tmp/python-test/local/lib/python2.6/socket.py", line 465, in create_connection raise error, msg error: [Errno 111] Connection refused test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 302 tests OK. 3 tests failed: test_docxmlrpc test_ftplib test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [550718 refs] From nnorwitz at gmail.com Wed Feb 6 22:20:11 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 16:20:11 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080206212011.GA20814@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9521 refs] test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [550333 refs] From buildbot at python.org Wed Feb 6 22:46:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 06 Feb 2008 21:46:11 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20080206214611.CBD9B1E4031@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/436 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: thomas.heller,walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_socket.py", line 879, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From python-checkins at python.org Wed Feb 6 23:10:51 2008 From: python-checkins at python.org (mark.dickinson) Date: Wed, 6 Feb 2008 23:10:51 +0100 (CET) Subject: [Python-checkins] r60630 - in python/trunk: Doc/library/decimal.rst Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS Message-ID: <20080206221051.092681E4028@bag.python.org> Author: mark.dickinson Date: Wed Feb 6 23:10:50 2008 New Revision: 60630 Modified: python/trunk/Doc/library/decimal.rst python/trunk/Lib/decimal.py python/trunk/Lib/test/test_decimal.py python/trunk/Misc/NEWS Log: Issue 1979: Make Decimal comparisons (other than !=, ==) involving NaN raise InvalidOperation (and return False if InvalidOperation is trapped). Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Wed Feb 6 23:10:50 2008 @@ -1290,6 +1290,19 @@ operation. This is a useful return value when an invalid result needs to interrupt a calculation for special handling. +The behavior of Python's comparison operators can be a little surprising where a +:const:`NaN` is involved. A test for equality where one of the operands is a +quiet or signaling :const:`NaN` always returns :const:`False` (even when doing +``Decimal('NaN')==Decimal('NaN')``), while a test for inequality always returns +:const:`True`. An attempt to compare two Decimals using any of the :const:'<', +:const:'<=', :const:'>' or :const:'>=' operators will raise the +:exc:`InvalidOperation` signal if either operand is a :const:`NaN`, and return +:const:`False` if this signal is trapped. Note that the General Decimal +Arithmetic specification does not specify the behavior of direct comparisons; +these rules for comparisons involving a :const:`NaN` were taken from the IEEE +754 standard. To ensure strict standards-compliance, use the :meth:`compare` +and :meth:`compare-signal` methods instead. + The signed zeros can result from calculations that underflow. They keep the sign that would have resulted if the calculation had been carried out to greater precision. Since their magnitude is zero, both positive and negative zeros are Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Wed Feb 6 23:10:50 2008 @@ -717,6 +717,39 @@ return other._fix_nan(context) return 0 + def _compare_check_nans(self, other, context): + """Version of _check_nans used for the signaling comparisons + compare_signal, __le__, __lt__, __ge__, __gt__. + + Signal InvalidOperation if either self or other is a (quiet + or signaling) NaN. Signaling NaNs take precedence over quiet + NaNs. + + Return 0 if neither operand is a NaN. + + """ + if context is None: + context = getcontext() + + if self._is_special or other._is_special: + if self.is_snan(): + return context._raise_error(InvalidOperation, + 'comparison involving sNaN', + self) + elif other.is_snan(): + return context._raise_error(InvalidOperation, + 'comparison involving sNaN', + other) + elif self.is_qnan(): + return context._raise_error(InvalidOperation, + 'comparison involving NaN', + self) + elif other.is_qnan(): + return context._raise_error(InvalidOperation, + 'comparison involving NaN', + other) + return 0 + def __nonzero__(self): """Return True if self is nonzero; otherwise return False. @@ -724,18 +757,13 @@ """ return self._is_special or self._int != '0' - def __cmp__(self, other): - other = _convert_other(other) - if other is NotImplemented: - # Never return NotImplemented - return 1 + def _cmp(self, other): + """Compare the two non-NaN decimal instances self and other. - if self._is_special or other._is_special: - # check for nans, without raising on a signaling nan - if self._isnan() or other._isnan(): - return 1 # Comparison involving NaN's always reports self > other + Returns -1 if self < other, 0 if self == other and 1 + if self > other. This routine is for internal use only.""" - # INF = INF + if self._is_special or other._is_special: return cmp(self._isinfinity(), other._isinfinity()) # check for zeros; note that cmp(0, -0) should return 0 @@ -764,15 +792,71 @@ else: # self_adjusted < other_adjusted return -((-1)**self._sign) + # Note: The Decimal standard doesn't cover rich comparisons for + # Decimals. In particular, the specification is silent on the + # subject of what should happen for a comparison involving a NaN. + # We take the following approach: + # + # == comparisons involving a NaN always return False + # != comparisons involving a NaN always return True + # <, >, <= and >= comparisons involving a (quiet or signaling) + # NaN signal InvalidOperation, and return False if the + # InvalidOperation is trapped. + # + # This behavior is designed to conform as closely as possible to + # that specified by IEEE 754. + def __eq__(self, other): - if not isinstance(other, (Decimal, int, long)): - return NotImplemented - return self.__cmp__(other) == 0 + other = _convert_other(other) + if other is NotImplemented: + return other + if self.is_nan() or other.is_nan(): + return False + return self._cmp(other) == 0 def __ne__(self, other): - if not isinstance(other, (Decimal, int, long)): - return NotImplemented - return self.__cmp__(other) != 0 + other = _convert_other(other) + if other is NotImplemented: + return other + if self.is_nan() or other.is_nan(): + return True + return self._cmp(other) != 0 + + def __lt__(self, other, context=None): + other = _convert_other(other) + if other is NotImplemented: + return other + ans = self._compare_check_nans(other, context) + if ans: + return False + return self._cmp(other) < 0 + + def __le__(self, other, context=None): + other = _convert_other(other) + if other is NotImplemented: + return other + ans = self._compare_check_nans(other, context) + if ans: + return False + return self._cmp(other) <= 0 + + def __gt__(self, other, context=None): + other = _convert_other(other) + if other is NotImplemented: + return other + ans = self._compare_check_nans(other, context) + if ans: + return False + return self._cmp(other) > 0 + + def __ge__(self, other, context=None): + other = _convert_other(other) + if other is NotImplemented: + return other + ans = self._compare_check_nans(other, context) + if ans: + return False + return self._cmp(other) >= 0 def compare(self, other, context=None): """Compares one to another. @@ -791,7 +875,7 @@ if ans: return ans - return Decimal(self.__cmp__(other)) + return Decimal(self._cmp(other)) def __hash__(self): """x.__hash__() <==> hash(x)""" @@ -2452,7 +2536,7 @@ return other._fix_nan(context) return self._check_nans(other, context) - c = self.__cmp__(other) + c = self._cmp(other) if c == 0: # If both operands are finite and equal in numerical value # then an ordering is applied: @@ -2494,7 +2578,7 @@ return other._fix_nan(context) return self._check_nans(other, context) - c = self.__cmp__(other) + c = self._cmp(other) if c == 0: c = self.compare_total(other) @@ -2542,23 +2626,10 @@ It's pretty much like compare(), but all NaNs signal, with signaling NaNs taking precedence over quiet NaNs. """ - if context is None: - context = getcontext() - - self_is_nan = self._isnan() - other_is_nan = other._isnan() - if self_is_nan == 2: - return context._raise_error(InvalidOperation, 'sNaN', - self) - if other_is_nan == 2: - return context._raise_error(InvalidOperation, 'sNaN', - other) - if self_is_nan: - return context._raise_error(InvalidOperation, 'NaN in compare_signal', - self) - if other_is_nan: - return context._raise_error(InvalidOperation, 'NaN in compare_signal', - other) + other = _convert_other(other, raiseit = True) + ans = self._compare_check_nans(other, context) + if ans: + return ans return self.compare(other, context=context) def compare_total(self, other): @@ -3065,7 +3136,7 @@ return other._fix_nan(context) return self._check_nans(other, context) - c = self.copy_abs().__cmp__(other.copy_abs()) + c = self.copy_abs()._cmp(other.copy_abs()) if c == 0: c = self.compare_total(other) @@ -3095,7 +3166,7 @@ return other._fix_nan(context) return self._check_nans(other, context) - c = self.copy_abs().__cmp__(other.copy_abs()) + c = self.copy_abs()._cmp(other.copy_abs()) if c == 0: c = self.compare_total(other) @@ -3170,7 +3241,7 @@ if ans: return ans - comparison = self.__cmp__(other) + comparison = self._cmp(other) if comparison == 0: return self.copy_sign(other) Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Wed Feb 6 23:10:50 2008 @@ -838,6 +838,19 @@ self.assertEqual(-Decimal(45), Decimal(-45)) # - self.assertEqual(abs(Decimal(45)), abs(Decimal(-45))) # abs + def test_nan_comparisons(self): + n = Decimal('NaN') + s = Decimal('sNaN') + i = Decimal('Inf') + f = Decimal('2') + for x, y in [(n, n), (n, i), (i, n), (n, f), (f, n), + (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)]: + self.assert_(x != y) + self.assert_(not (x == y)) + self.assert_(not (x < y)) + self.assert_(not (x <= y)) + self.assert_(not (x > y)) + self.assert_(not (x >= y)) # The following are two functions used to test threading in the next class @@ -1147,7 +1160,12 @@ checkSameDec("__add__", True) checkSameDec("__div__", True) checkSameDec("__divmod__", True) - checkSameDec("__cmp__", True) + checkSameDec("__eq__", True) + checkSameDec("__ne__", True) + checkSameDec("__le__", True) + checkSameDec("__lt__", True) + checkSameDec("__ge__", True) + checkSameDec("__gt__", True) checkSameDec("__float__") checkSameDec("__floordiv__", True) checkSameDec("__hash__") Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Feb 6 23:10:50 2008 @@ -391,6 +391,9 @@ Library ------- +- #1979: Add rich comparisons to Decimal, and make Decimal comparisons + involving a NaN follow the IEEE 754 standard. + - #2004: tarfile.py: Use mode 0700 for temporary directories and default permissions for missing directories. From python-checkins at python.org Wed Feb 6 23:25:16 2008 From: python-checkins at python.org (mark.dickinson) Date: Wed, 6 Feb 2008 23:25:16 +0100 (CET) Subject: [Python-checkins] r60632 - python/trunk/Doc/library/decimal.rst Message-ID: <20080206222516.CF8C51E4020@bag.python.org> Author: mark.dickinson Date: Wed Feb 6 23:25:16 2008 New Revision: 60632 Modified: python/trunk/Doc/library/decimal.rst Log: Remove incorrect usage of :const: in documentation. Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Wed Feb 6 23:25:16 2008 @@ -1294,8 +1294,8 @@ :const:`NaN` is involved. A test for equality where one of the operands is a quiet or signaling :const:`NaN` always returns :const:`False` (even when doing ``Decimal('NaN')==Decimal('NaN')``), while a test for inequality always returns -:const:`True`. An attempt to compare two Decimals using any of the :const:'<', -:const:'<=', :const:'>' or :const:'>=' operators will raise the +:const:`True`. An attempt to compare two Decimals using any of the ``<``, +``<=``, ``>`` or ``>=`` operators will raise the :exc:`InvalidOperation` signal if either operand is a :const:`NaN`, and return :const:`False` if this signal is trapped. Note that the General Decimal Arithmetic specification does not specify the behavior of direct comparisons; From nnorwitz at gmail.com Thu Feb 7 00:08:08 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Feb 2008 18:08:08 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080206230808.GA11252@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 3: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7765 refs] [7765 refs] [7765 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8142 refs] [8142 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7760 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7761 refs] [9382 refs] [7978 refs] [7761 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] [7760 refs] . [7760 refs] [7760 refs] this bit of output is from a test of stdout in a different process ... [7760 refs] [7760 refs] [7978 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7760 refs] [7760 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7765 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10888 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 314 tests OK. 2 tests failed: test_docxmlrpc test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [562365 refs] From g.brandl at gmx.net Thu Feb 7 00:47:22 2008 From: g.brandl at gmx.net (Georg Brandl) Date: Thu, 07 Feb 2008 00:47:22 +0100 Subject: [Python-checkins] r60605 - in python/trunk: Lib/test/output/test_profile Lib/test/profilee.py Lib/test/test_cprofile.py Lib/test/test_profile.py Lib/test/test_queue.py Misc/NEWS In-Reply-To: References: <20080205195818.3A53B1E4010@bag.python.org> Message-ID: Neal Norwitz schrieb: > On Feb 5, 2008 11:58 AM, georg.brandl wrote: >> Author: georg.brandl >> Date: Tue Feb 5 20:58:17 2008 >> New Revision: 60605 >> >> Added: >> python/trunk/Lib/test/profilee.py >> Removed: >> python/trunk/Lib/test/output/test_profile >> Modified: >> python/trunk/Lib/test/test_cprofile.py (contents, props changed) >> python/trunk/Lib/test/test_profile.py (contents, props changed) >> python/trunk/Lib/test/test_queue.py >> python/trunk/Misc/NEWS >> Log: >> * Use the same code to profile for test_profile and test_cprofile. >> * Convert both to unittest. >> * Use the same unit testing code. >> * Include the expected output in both test files. >> * Make it possible to regenerate the expected output by running >> the file as a script with an '-r' argument. > > Was the test_queue.py changes intended to be checked in with this revision? Oops. Thanks for catching this. Georg From python-checkins at python.org Thu Feb 7 00:45:51 2008 From: python-checkins at python.org (georg.brandl) Date: Thu, 7 Feb 2008 00:45:51 +0100 (CET) Subject: [Python-checkins] r60634 - python/trunk/Lib/test/test_queue.py Message-ID: <20080206234551.B750E1E402F@bag.python.org> Author: georg.brandl Date: Thu Feb 7 00:45:51 2008 New Revision: 60634 Modified: python/trunk/Lib/test/test_queue.py Log: Revert accidental changes to test_queue in r60605. Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Thu Feb 7 00:45:51 2008 @@ -9,10 +9,6 @@ QUEUE_SIZE = 5 -def qfull(q): - return q.maxsize > 0 and q.qsize() == q.maxsize - - # A thread to run a function that unclogs a blocked Queue. class _TriggerThread(threading.Thread): def __init__(self, fn, args): @@ -90,7 +86,7 @@ self.cumlock = threading.Lock() def simple_queue_test(self, q): - if q.qsize(): + if not q.empty(): raise RuntimeError, "Call this function with an empty queue" # I guess we better check things actually queue correctly a little :) q.put(111) @@ -104,10 +100,10 @@ "Didn't seem to queue the correct data!") for i in range(QUEUE_SIZE-1): q.put(i) - self.assert_(q.qsize(), "Queue should not be empty") - self.assert_(not qfull(q), "Queue should not be full") + self.assert_(not q.empty(), "Queue should not be empty") + self.assert_(not q.full(), "Queue should not be full") q.put("last") - self.assert_(qfull(q), "Queue should be full") + self.assert_(q.full(), "Queue should be full") try: q.put("full", block=0) self.fail("Didn't appear to block with a full queue") @@ -124,7 +120,7 @@ # Empty it for i in range(QUEUE_SIZE): q.get() - self.assert_(not q.qsize(), "Queue should be empty") + self.assert_(q.empty(), "Queue should be empty") try: q.get(block=0) self.fail("Didn't appear to block with an empty queue") @@ -228,7 +224,7 @@ class FailingQueueTest(unittest.TestCase, BlockingTestMixin): def failing_queue_test(self, q): - if q.qsize(): + if not q.empty(): raise RuntimeError, "Call this function with an empty queue" for i in range(QUEUE_SIZE-1): q.put(i) @@ -246,7 +242,7 @@ except FailingQueueException: pass q.put("last") - self.assert_(qfull(q), "Queue should be full") + self.assert_(q.full(), "Queue should be full") # Test a failing blocking put q.fail_next_put = True try: @@ -268,17 +264,17 @@ # Check the Queue isn't damaged. # put failed, but get succeeded - re-add q.put("last") - self.assert_(qfull(q), "Queue should be full") + self.assert_(q.full(), "Queue should be full") q.get() - self.assert_(not qfull(q), "Queue should not be full") + self.assert_(not q.full(), "Queue should not be full") q.put("last") - self.assert_(qfull(q), "Queue should be full") + self.assert_(q.full(), "Queue should be full") # Test a blocking put self.do_blocking_test(q.put, ("full",), q.get, ()) # Empty it for i in range(QUEUE_SIZE): q.get() - self.assert_(not q.qsize(), "Queue should be empty") + self.assert_(q.empty(), "Queue should be empty") q.put("first") q.fail_next_get = True try: @@ -286,16 +282,16 @@ self.fail("The queue didn't fail when it should have") except FailingQueueException: pass - self.assert_(q.qsize(), "Queue should not be empty") + self.assert_(not q.empty(), "Queue should not be empty") q.fail_next_get = True try: q.get(timeout=0.1) self.fail("The queue didn't fail when it should have") except FailingQueueException: pass - self.assert_(q.qsize(), "Queue should not be empty") + self.assert_(not q.empty(), "Queue should not be empty") q.get() - self.assert_(not q.qsize(), "Queue should be empty") + self.assert_(q.empty(), "Queue should be empty") q.fail_next_get = True try: self.do_exceptional_blocking_test(q.get, (), q.put, ('empty',), @@ -304,9 +300,9 @@ except FailingQueueException: pass # put succeeded, but get failed. - self.assert_(q.qsize(), "Queue should not be empty") + self.assert_(not q.empty(), "Queue should not be empty") q.get() - self.assert_(not q.qsize(), "Queue should be empty") + self.assert_(q.empty(), "Queue should be empty") def test_failing_queue(self): # Test to make sure a queue is functioning correctly. From buildbot at python.org Thu Feb 7 01:30:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 00:30:37 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080207003037.70EC11E4020@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2489 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.dickinson BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 4 tests failed: test_asynchat test_docxmlrpc test_smtplib test_socketserver ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 01:54:21 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 01:54:21 +0100 (CET) Subject: [Python-checkins] r60636 - in python/trunk: Lib/test/seq_tests.py Misc/NEWS Objects/tupleobject.c Message-ID: <20080207005421.2C5531E4020@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 01:54:20 2008 New Revision: 60636 Modified: python/trunk/Lib/test/seq_tests.py python/trunk/Misc/NEWS python/trunk/Objects/tupleobject.c Log: Issue 2025: Add tuple.count() and tuple.index() to follow the ABC in collections.Sequence. Modified: python/trunk/Lib/test/seq_tests.py ============================================================================== --- python/trunk/Lib/test/seq_tests.py (original) +++ python/trunk/Lib/test/seq_tests.py Thu Feb 7 01:54:20 2008 @@ -4,6 +4,7 @@ import unittest from test import test_support +import sys # Various iterables # This is used for checking the constructor (here and in test_deque.py) @@ -328,3 +329,64 @@ self.assertEqual(a.__getitem__(slice(3,5)), self.type2test([])) self.assertRaises(ValueError, a.__getitem__, slice(0, 10, 0)) self.assertRaises(TypeError, a.__getitem__, 'x') + + def test_count(self): + a = self.type2test([0, 1, 2])*3 + self.assertEqual(a.count(0), 3) + self.assertEqual(a.count(1), 3) + self.assertEqual(a.count(3), 0) + + self.assertRaises(TypeError, a.count) + + class BadExc(Exception): + pass + + class BadCmp: + def __eq__(self, other): + if other == 2: + raise BadExc() + return False + + self.assertRaises(BadExc, a.count, BadCmp()) + + def test_index(self): + u = self.type2test([0, 1]) + self.assertEqual(u.index(0), 0) + self.assertEqual(u.index(1), 1) + self.assertRaises(ValueError, u.index, 2) + + u = self.type2test([-2, -1, 0, 0, 1, 2]) + self.assertEqual(u.count(0), 2) + self.assertEqual(u.index(0), 2) + self.assertEqual(u.index(0, 2), 2) + self.assertEqual(u.index(-2, -10), 0) + self.assertEqual(u.index(0, 3), 3) + self.assertEqual(u.index(0, 3, 4), 3) + self.assertRaises(ValueError, u.index, 2, 0, -10) + + self.assertRaises(TypeError, u.index) + + class BadExc(Exception): + pass + + class BadCmp: + def __eq__(self, other): + if other == 2: + raise BadExc() + return False + + a = self.type2test([0, 1, 2, 3]) + self.assertRaises(BadExc, a.index, BadCmp()) + + a = self.type2test([-2, -1, 0, 0, 1, 2]) + self.assertEqual(a.index(0), 2) + self.assertEqual(a.index(0, 2), 2) + self.assertEqual(a.index(0, -4), 2) + self.assertEqual(a.index(-2, -10), 0) + self.assertEqual(a.index(0, 3), 3) + self.assertEqual(a.index(0, -3), 3) + self.assertEqual(a.index(0, 3, 4), 3) + self.assertEqual(a.index(0, -3, -2), 3) + self.assertEqual(a.index(0, -4*sys.maxint, 4*sys.maxint), 2) + self.assertRaises(ValueError, a.index, 0, 4*sys.maxint,-4*sys.maxint) + self.assertRaises(ValueError, a.index, 2, 0, -10) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 7 01:54:20 2008 @@ -25,6 +25,9 @@ - Issue #1678380: Fix a bug that identifies 0j and -0j when they appear in the same code unit. +- Issue #2025 : Add tuple.count() and tuple.index() methods to comply with + the collections.Sequence API. + - Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak detection Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Thu Feb 7 01:54:20 2008 @@ -455,6 +455,53 @@ return (PyObject *) np; } +static PyObject * +tupleindex(PyTupleObject *self, PyObject *args) +{ + Py_ssize_t i, start=0, stop=Py_SIZE(self); + PyObject *v; + + if (!PyArg_ParseTuple(args, "O|O&O&:index", &v, + _PyEval_SliceIndex, &start, + _PyEval_SliceIndex, &stop)) + return NULL; + if (start < 0) { + start += Py_SIZE(self); + if (start < 0) + start = 0; + } + if (stop < 0) { + stop += Py_SIZE(self); + if (stop < 0) + stop = 0; + } + for (i = start; i < stop && i < Py_SIZE(self); i++) { + int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); + if (cmp > 0) + return PyLong_FromSsize_t(i); + else if (cmp < 0) + return NULL; + } + PyErr_SetString(PyExc_ValueError, "tuple.index(x): x not in list"); + return NULL; +} + +static PyObject * +tuplecount(PyTupleObject *self, PyObject *v) +{ + Py_ssize_t count = 0; + Py_ssize_t i; + + for (i = 0; i < Py_SIZE(self); i++) { + int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); + if (cmp > 0) + count++; + else if (cmp < 0) + return NULL; + } + return PyLong_FromSsize_t(count); +} + static int tupletraverse(PyTupleObject *o, visitproc visit, void *arg) { @@ -661,8 +708,15 @@ } +PyDoc_STRVAR(index_doc, +"T.index(value, [start, [stop]]) -> integer -- return first index of value"); +PyDoc_STRVAR(count_doc, +"T.count(value) -> integer -- return number of occurrences of value"); + static PyMethodDef tuple_methods[] = { {"__getnewargs__", (PyCFunction)tuple_getnewargs, METH_NOARGS}, + {"index", (PyCFunction)tupleindex, METH_VARARGS, index_doc}, + {"count", (PyCFunction)tuplecount, METH_O, count_doc}, {NULL, NULL} /* sentinel */ }; From buildbot at python.org Thu Feb 7 02:11:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 01:11:02 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 3.0 Message-ID: <20080207011103.1C74C1E4023@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%203.0/builds/567 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "c:\buildbot\work\3.0.heller-windows\build\lib\threading.py", line 485, in _bootstrap_inner self.run() File "c:\buildbot\work\3.0.heller-windows\build\lib\threading.py", line 445, in run self._target(*self._args, **self._kwargs) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_smtplib.py", line 139, in debugging_server poll_fun(0.01, asyncore.socket_map) File "C:\buildbot\work\3.0.heller-windows\build\lib\asyncore.py", line 132, in poll read(obj) File "C:\buildbot\work\3.0.heller-windows\build\lib\asyncore.py", line 72, in read obj.handle_error() File "C:\buildbot\work\3.0.heller-windows\build\lib\asyncore.py", line 68, in read obj.handle_read_event() File "C:\buildbot\work\3.0.heller-windows\build\lib\asyncore.py", line 390, in handle_read_event self.handle_read() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_ssl.py", line 517, in handle_read data = self.recv(1024) File "C:\buildbot\work\3.0.heller-windows\build\lib\asyncore.py", line 342, in recv data = self.socket.recv(buffer_size) File "C:\buildbot\work\3.0.heller-windows\build\lib\ssl.py", line 247, in recv return self.read(buflen) File "C:\buildbot\work\3.0.heller-windows\build\lib\ssl.py", line 162, in read v = self._sslobj.read(len or 1024) socket.error: [Errno 10053] An established connection was aborted by the software in your host machine 8 tests failed: test_anydbm test_bsddb test_bsddb3 test_mailbox test_profile test_shelve test_smtplib test_whichdb ====================================================================== ERROR: test_anydbm_access (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 90, in test_anydbm_access self.init_db() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_creation (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 63, in test_anydbm_creation f = anydbm.open(_fname, 'c') File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_keys (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 84, in test_anydbm_keys self.init_db() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_modification (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 71, in test_anydbm_modification self.init_db() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_anydbm_read (test.test_anydbm.AnyDBMTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 78, in test_anydbm_read self.init_db() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_anydbm.py", line 103, in init_db f = anydbm.open(_fname, 'n') File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestHashTable_InMemory) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test__no_deadlock_first (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_change (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_clear (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_close_and_reopen (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_contains (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_next_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_first_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_for_cursor_memleak (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_getitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iter_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_iteritems_while_modifying_values (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keyordering (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_last_while_deleting (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_mapping_iteration_methods (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_previous_last_looping (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_set_location (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_bsddb.TestBTree_InMemory_Truncate) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 20, in setUp self.f = self.do_open(self.fname, self.openflag, cachesize=32768) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb.py", line 17, in do_open return bsddb.StringValues(bsddb.StringKeys(self.openmethod[0](*args, **kw))) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 452, in btopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 488, in _openDBEnv e.set_cachesize(0, cachesize) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') Traceback (most recent call last): File "../lib/test/regrtest.py", line 596, in runtest_inner indirect_test() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb3.py", line 90, in test_main run_unittest(suite()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_bsddb3.py", line 53, in suite import bsddb.test.test_1413192 File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\test\test_1413192.py", line 38, in context = Context() File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\test\test_1413192.py", line 26, in __init__ db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 718, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 F' ====================================================================== ERROR: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 718, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo 0 \x01' ====================================================================== ERROR: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 941, in tearDown self._delete_recursively(self._path) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 47, in _delete_recursively os.remove(target) WindowsError: [Error 32] The process cannot access the file because it is being used by another process: '@test' ====================================================================== ERROR: test_popitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 336, in test_popitem self.assertEqual(int(msg.get_payload()), keys.index(key)) ValueError: invalid literal for int() with base 10: 'From: foo *** EOOH *** From: foo 0 1,, From: foo *** EOOH *** From: foo 1 1,, From: foo *** EOOH *** From: foo 2 1,, From: foo *** EOOH *** From: foo 3 ' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMaildir) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 758, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: 'From MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'From MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n0\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n1\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nFrom: foo\n\n2\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:33 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 725, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\nF' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 742, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 6 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\nF' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\nF' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMbox) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_add (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_add_and_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 758, in test_add_and_close self.assertEqual(contents, open(self._path, 'r').read()) AssertionError: '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n' != '\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n0\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n1\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nFrom: foo\n\n2\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n\x01\x01\x01\x01\n\nFrom MAILER-DAEMON Thu Feb 07 01:09:35 2008\n\nReturn-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n\n\n\x01\x01\x01\x01\n\n\n\n\x01\x01\x01\x01\n\n' ====================================================================== FAIL: test_add_from_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 725, in test_add_from_string self.assertEqual(self._box[key].get_from(), 'foo at bar blah') AssertionError: 'foo at bar blah\n' != 'foo at bar blah' ====================================================================== FAIL: test_close (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n0\n\n\x01' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_open_close_open (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 742, in test_open_close_open self.assertEqual(len(self._box), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_pop (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n0\n\n\x01' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n1\n\n\x01' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\noriginal 0\n\n\x01' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\nchanged 0\n\n\x01' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestMMDF) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestMH) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_add (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 77, in test_add self.assertEqual(self._box.get_string(keys[0]), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_close (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 389, in test_close self._test_flush_or_close(self._box.close) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_delitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 87, in test_delitem self._test_remove_or_delitem(self._box.__delitem__) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_dump_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 412, in test_dump_message _sample_message.replace('\n', os.linesep)) AssertionError: 'Return-Path: \nX-Original-To: gkj+person at localhost\nDelivered-To: gkj+person at localhost\nReceived: from localhost (localhost [127.0.0.1])\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nDelivered-To: gkj at sundance.gregorykjohnson.com\nReceived: from localhost [127.0.0.1]\n by localhost with POP3 (fetchmail-6.2.5)\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\nDate: Wed, 13 Jul 2005 17:23:11 -0400\nFrom: "Gregory K. Johnson" \nTo: gkj at gregorykjohnson.com\nSubject: Sample message\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\nMime-Version: 1.0\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\nContent-Disposition: inline\nUser-Agent: Mutt/1.5.9i\n\n\n--NMuMz9nt05w80d4+\nContent-Type: text/plain; charset=us-ascii\nContent-Disposition: inline\n\nThis is a sample message.\n\n--\nGregory K. Johnson\n\n--NMuMz9nt05w80d4+\nContent-Type: application/octet-stream\nContent-Disposition: attachment; filename="text.gz"\nContent-Transfer-Encoding: base64\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n3FYlAAAA\n\n--NMuMz9nt05w80d4+--\n' != 'Return-Path: \r\nX-Original-To: gkj+person at localhost\r\nDelivered-To: gkj+person at localhost\r\nReceived: from localhost (localhost [127.0.0.1])\r\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\r\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nDelivered-To: gkj at sundance.gregorykjohnson.com\r\nReceived: from localhost [127.0.0.1]\r\n by localhost with POP3 (fetchmail-6.2.5)\r\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\r\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\r\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\r\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\r\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\r\nDate: Wed, 13 Jul 2005 17:23:11 -0400\r\nFrom: "Gregory K. Johnson" \r\nTo: gkj at gregorykjohnson.com\r\nSubject: Sample message\r\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\r\nContent-Disposition: inline\r\nUser-Agent: Mutt/1.5.9i\r\n\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: text/plain; charset=us-ascii\r\nContent-Disposition: inline\r\n\r\nThis is a sample message.\r\n\r\n--\r\nGregory K. Johnson\r\n\r\n--NMuMz9nt05w80d4+\r\nContent-Type: application/octet-stream\r\nContent-Disposition: attachment; filename="text.gz"\r\nContent-Transfer-Encoding: base64\r\n\r\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\r\n3FYlAAAA\r\n\r\n--NMuMz9nt05w80d4+--\r\n' ====================================================================== FAIL: test_flush (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 377, in test_flush self._test_flush_or_close(self._box.flush) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 400, in _test_flush_or_close self.assertEqual(len(keys), 3) AssertionError: 0 != 3 ====================================================================== FAIL: test_get (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 129, in test_get self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_file (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 174, in test_get_file self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_get_message (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 156, in test_get_message self.assertEqual(msg0['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_get_string (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 164, in test_get_string self.assertEqual(self._box.get_string(key0), self._template % 0) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\n0' ====================================================================== FAIL: test_getitem (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 144, in test_getitem self.assertEqual(msg['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_items (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 207, in test_items self._check_iteration(self._box.items, do_keys=True, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iter (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 194, in test_iter do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_iteritems (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 203, in test_iteritems do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_itervalues (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 189, in test_itervalues do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_pop (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 313, in test_pop self.assertEqual(self._box.pop(key0).get_payload(), '0') AssertionError: 'From: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n0\n\n\x1f\x0c\n\n1,,\n\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != '0' ====================================================================== FAIL: test_remove (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 83, in test_remove self._test_remove_or_delitem(self._box.remove) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 99, in _test_remove_or_delitem self.assertEqual(self._box.get_string(key1), self._template % 1) AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\n1\n\n\x1f' != 'From: foo\n\n1' ====================================================================== FAIL: test_set_item (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 272, in test_set_item self._template % 'original 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\noriginal 0\n\n\x1f' != 'From: foo\n\noriginal 0' ====================================================================== FAIL: test_update (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 350, in test_update self._template % 'changed 0') AssertionError: '\nFrom: foo\n\n\n\n*** EOOH ***\n\nFrom: foo\n\n\n\nchanged 0\n\n\x1f\x0c\n\n1,,\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n*** EOOH ***\n\nReturn-Path: \n\nX-Original-To: gkj+person at localhost\n\nDelivered-To: gkj+person at localhost\n\nReceived: from localhost (localhost [127.0.0.1])\n\n by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17\n\n for ; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nDelivered-To: gkj at sundance.gregorykjohnson.com\n\nReceived: from localhost [127.0.0.1]\n\n by localhost with POP3 (fetchmail-6.2.5)\n\n for gkj+person at localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)\n\nReceived: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])\n\n by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746\n\n for ; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nReceived: by andy.gregorykjohnson.com (Postfix, from userid 1000)\n\n id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)\n\nDate: Wed, 13 Jul 2005 17:23:11 -0400\n\nFrom: "Gregory K. Johnson" \n\nTo: gkj at gregorykjohnson.com\n\nSubject: Sample message\n\nMessage-ID: <20050713212311.GC4701 at andy.gregorykjohnson.com>\n\nMime-Version: 1.0\n\nContent-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"\n\nContent-Disposition: inline\n\nUser-Agent: Mutt/1.5.9i\n\n\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: text/plain; charset=us-ascii\n\nContent-Disposition: inline\n\n\n\nThis is a sample message.\n\n\n\n--\n\nGregory K. Johnson\n\n\n\n--NMuMz9nt05w80d4+\n\nContent-Type: application/octet-stream\n\nContent-Disposition: attachment; filename="text.gz"\n\nContent-Transfer-Encoding: base64\n\n\n\nH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs\n\n3FYlAAAA\n\n\n\n--NMuMz9nt05w80d4+--\n\n\n\n\x1f' != 'From: foo\n\nchanged 0' ====================================================================== FAIL: test_values (test.test_mailbox.TestBabyl) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 198, in test_values self._check_iteration(self._box.values, do_keys=False, do_values=True) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_mailbox.py", line 231, in _check_iteration self.assertEqual(value['from'], 'foo') AssertionError: None != 'foo' ====================================================================== FAIL: test_cprofile (test.test_profile.ProfileTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_profile.py", line 37, in test_cprofile self.assertEqual(results[0], 43000) AssertionError: 44000 != 43000 ====================================================================== ERROR: test_bool (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_bool (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 136, in test_bool self.assert_(not self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_constructor (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 133, in test_constructor self.assertEqual(self._empty_mapping(), self._empty_mapping()) File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 270, in test_get d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_items (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 156, in test_items d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_keys (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 142, in test_keys d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_len (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 162, in test_len d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_pop (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 293, in test_pop d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_popitem (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 288, in test_popitem d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 44, in test_read p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_setdefault (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 284, in test_setdefault d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_update (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 174, in test_update d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_values (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 150, in test_values d = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\mapping_tests.py", line 92, in test_write p = self._empty_mapping() File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 127, in _empty_mapping x= shelve.open(self.fn+str(self.counter), **self._args) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_ascii_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 51, in test_ascii_file_shelf s = shelve.open(self.fn, protocol=0) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_binary_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 59, in test_binary_file_shelf s = shelve.open(self.fn, protocol=1) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_proto2_file_shelf (test.test_shelve.TestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_shelve.py", line 67, in test_proto2_file_shelf s = shelve.open(self.fn, protocol=2) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 217, in open return DbfilenameShelf(filename, flag, protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\shelve.py", line 201, in __init__ Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) File "C:\buildbot\work\3.0.heller-windows\build\lib\anydbm.py", line 83, in open return mod.open(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') ====================================================================== ERROR: test_whichdb (test.test_whichdb.WhichDBTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\3.0.heller-windows\build\lib\test\test_whichdb.py", line 32, in test_whichdb f = module.open(_fname, 'c') File "C:\buildbot\work\3.0.heller-windows\build\lib\dbhash.py", line 16, in open return bsddb.hashopen(file, flag, mode) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 435, in hashopen e = _openDBEnv(cachesize) File "C:\buildbot\work\3.0.heller-windows\build\lib\bsddb\__init__.py", line 492, in _openDBEnv e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) bsddb.db.DBInvalidArgError: (22, 'Invalid argument') sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 02:14:23 2008 From: python-checkins at python.org (mark.dickinson) Date: Thu, 7 Feb 2008 02:14:23 +0100 (CET) Subject: [Python-checkins] r60637 - python/trunk/Doc/library/decimal.rst Message-ID: <20080207011423.86D3E1E402A@bag.python.org> Author: mark.dickinson Date: Thu Feb 7 02:14:23 2008 New Revision: 60637 Modified: python/trunk/Doc/library/decimal.rst Log: Fix broken link in decimal documentation. Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Thu Feb 7 02:14:23 2008 @@ -91,7 +91,7 @@ Specification `_. * IEEE standard 854-1987, `Unofficial IEEE 854 Text - `_. + `_. .. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% From python-checkins at python.org Thu Feb 7 02:42:06 2008 From: python-checkins at python.org (mark.dickinson) Date: Thu, 7 Feb 2008 02:42:06 +0100 (CET) Subject: [Python-checkins] r60638 - python/trunk/Doc/library/decimal.rst Message-ID: <20080207014206.BB8741E4020@bag.python.org> Author: mark.dickinson Date: Thu Feb 7 02:42:06 2008 New Revision: 60638 Modified: python/trunk/Doc/library/decimal.rst Log: IEEE 754 should be IEEE 854; give precise reference for comparisons involving NaNs. Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Thu Feb 7 02:42:06 2008 @@ -1295,12 +1295,12 @@ quiet or signaling :const:`NaN` always returns :const:`False` (even when doing ``Decimal('NaN')==Decimal('NaN')``), while a test for inequality always returns :const:`True`. An attempt to compare two Decimals using any of the ``<``, -``<=``, ``>`` or ``>=`` operators will raise the -:exc:`InvalidOperation` signal if either operand is a :const:`NaN`, and return -:const:`False` if this signal is trapped. Note that the General Decimal -Arithmetic specification does not specify the behavior of direct comparisons; -these rules for comparisons involving a :const:`NaN` were taken from the IEEE -754 standard. To ensure strict standards-compliance, use the :meth:`compare` +``<=``, ``>`` or ``>=`` operators will raise the :exc:`InvalidOperation` signal +if either operand is a :const:`NaN`, and return :const:`False` if this signal is +trapped. Note that the General Decimal Arithmetic specification does not +specify the behavior of direct comparisons; these rules for comparisons +involving a :const:`NaN` were taken from the IEEE 854 standard (see Table 3 in +section 5.7). To ensure strict standards-compliance, use the :meth:`compare` and :meth:`compare-signal` methods instead. The signed zeros can result from calculations that underflow. They keep the sign From buildbot at python.org Thu Feb 7 02:42:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 01:42:33 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 trunk Message-ID: <20080207014233.6114F1E4020@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%20trunk/builds/634 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 03:12:52 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 03:12:52 +0100 (CET) Subject: [Python-checkins] r60639 - python/trunk/Objects/tupleobject.c Message-ID: <20080207021252.CC9491E4020@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 03:12:52 2008 New Revision: 60639 Modified: python/trunk/Objects/tupleobject.c Log: Return ints instead of longs for tuple.count() and tuple.index(). Modified: python/trunk/Objects/tupleobject.c ============================================================================== --- python/trunk/Objects/tupleobject.c (original) +++ python/trunk/Objects/tupleobject.c Thu Feb 7 03:12:52 2008 @@ -478,7 +478,7 @@ for (i = start; i < stop && i < Py_SIZE(self); i++) { int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ); if (cmp > 0) - return PyLong_FromSsize_t(i); + return PyInt_FromSsize_t(i); else if (cmp < 0) return NULL; } @@ -499,7 +499,7 @@ else if (cmp < 0) return NULL; } - return PyLong_FromSsize_t(count); + return PyInt_FromSsize_t(count); } static int From python-checkins at python.org Thu Feb 7 04:10:33 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 04:10:33 +0100 (CET) Subject: [Python-checkins] r60640 - python/trunk/Lib/_abcoll.py Message-ID: <20080207031033.93C471E4020@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 04:10:33 2008 New Revision: 60640 Modified: python/trunk/Lib/_abcoll.py Log: Merge 60627. Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Thu Feb 7 04:10:33 2008 @@ -170,7 +170,12 @@ @classmethod def _from_iterable(cls, it): - return frozenset(it) + '''Construct an instance of the class from any iterable input. + + Must override this method if the class constructor signature + will not accept a frozenset for an input. + ''' + return cls(frozenset(it)) def __and__(self, other): if not isinstance(other, Iterable): From python-checkins at python.org Thu Feb 7 04:25:46 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 04:25:46 +0100 (CET) Subject: [Python-checkins] r60641 - in python/trunk/Lib: UserList.py UserString.py test/test_iterlen.py Message-ID: <20080207032546.BDF181E4020@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 04:25:46 2008 New Revision: 60641 Modified: python/trunk/Lib/UserList.py python/trunk/Lib/UserString.py python/trunk/Lib/test/test_iterlen.py Log: Merge r60628, r60631, and r60633. Register UserList and UserString will the appropriate ABCs. Modified: python/trunk/Lib/UserList.py ============================================================================== --- python/trunk/Lib/UserList.py (original) +++ python/trunk/Lib/UserList.py Thu Feb 7 04:25:46 2008 @@ -1,6 +1,8 @@ """A more or less complete user-defined wrapper around list objects.""" -class UserList: +import collections + +class UserList(collections.MutableSequence): def __init__(self, initlist=None): self.data = [] if initlist is not None: @@ -83,3 +85,5 @@ self.data.extend(other.data) else: self.data.extend(other) + +collections.MutableSequence.register(UserList) Modified: python/trunk/Lib/UserString.py ============================================================================== --- python/trunk/Lib/UserString.py (original) +++ python/trunk/Lib/UserString.py Thu Feb 7 04:25:46 2008 @@ -6,10 +6,11 @@ This module requires Python 1.6 or later. """ import sys +import collections __all__ = ["UserString","MutableString"] -class UserString: +class UserString(collections.Sequence): def __init__(self, seq): if isinstance(seq, basestring): self.data = seq @@ -129,7 +130,9 @@ def upper(self): return self.__class__(self.data.upper()) def zfill(self, width): return self.__class__(self.data.zfill(width)) -class MutableString(UserString): +collections.Sequence.register(UserString) + +class MutableString(UserString, collections.MutableSequence): """mutable string objects Python strings are immutable objects. This has the advantage, that @@ -208,6 +211,10 @@ def __imul__(self, n): self.data *= n return self + def insert(self, index, value): + self[index:index] = value + +collections.MutableSequence.register(MutableString) if __name__ == "__main__": # execute the regression test to stdout, if called as a script: Modified: python/trunk/Lib/test/test_iterlen.py ============================================================================== --- python/trunk/Lib/test/test_iterlen.py (original) +++ python/trunk/Lib/test/test_iterlen.py Thu Feb 7 04:25:46 2008 @@ -45,7 +45,6 @@ from test import test_support from itertools import repeat from collections import deque -from UserList import UserList from __builtin__ import len as _len n = 10 @@ -196,45 +195,6 @@ d.extend(xrange(20)) self.assertEqual(len(it), 0) -class TestSeqIter(TestInvariantWithoutMutations): - - def setUp(self): - self.it = iter(UserList(range(n))) - - def test_mutation(self): - d = UserList(range(n)) - it = iter(d) - it.next() - it.next() - self.assertEqual(len(it), n-2) - d.append(n) - self.assertEqual(len(it), n-1) # grow with append - d[1:] = [] - self.assertEqual(len(it), 0) - self.assertEqual(list(it), []) - d.extend(xrange(20)) - self.assertEqual(len(it), 0) - -class TestSeqIterReversed(TestInvariantWithoutMutations): - - def setUp(self): - self.it = reversed(UserList(range(n))) - - def test_mutation(self): - d = UserList(range(n)) - it = reversed(d) - it.next() - it.next() - self.assertEqual(len(it), n-2) - d.append(n) - self.assertEqual(len(it), n-2) # ignore append - d[1:] = [] - self.assertEqual(len(it), 0) - self.assertEqual(list(it), []) # confirm invariant - d.extend(xrange(20)) - self.assertEqual(len(it), 0) - - def test_main(): unittests = [ TestRepeat, @@ -249,8 +209,6 @@ TestSet, TestList, TestListReversed, - TestSeqIter, - TestSeqIterReversed, ] test_support.run_unittest(*unittests) From buildbot at python.org Thu Feb 7 06:34:24 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 05:34:24 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080207053424.6513D1E4020@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2492 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_docxmlrpc test_smtplib test_socket ====================================================================== FAIL: Test that the server correctly automatically wraps references to PEPS ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 08:47:32 2008 From: python-checkins at python.org (brett.cannon) Date: Thu, 7 Feb 2008 08:47:32 +0100 (CET) Subject: [Python-checkins] r60642 - python/trunk/Python/compile.c Message-ID: <20080207074732.5712D1E4020@bag.python.org> Author: brett.cannon Date: Thu Feb 7 08:47:31 2008 New Revision: 60642 Modified: python/trunk/Python/compile.c Log: Cast a struct to a void pointer so as to do a type-safe pointer comparison (mistmatch found by clang). Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Thu Feb 7 08:47:31 2008 @@ -392,9 +392,9 @@ { basicblock *block; for (block = u->u_blocks; block != NULL; block = block->b_list) { - assert(block != (void *)0xcbcbcbcb); - assert(block != (void *)0xfbfbfbfb); - assert(block != (void *)0xdbdbdbdb); + assert((void *)block != (void *)0xcbcbcbcb); + assert((void *)block != (void *)0xfbfbfbfb); + assert((void *)block != (void *)0xdbdbdbdb); if (block->b_instr != NULL) { assert(block->b_ialloc > 0); assert(block->b_iused > 0); From python-checkins at python.org Thu Feb 7 09:04:07 2008 From: python-checkins at python.org (brett.cannon) Date: Thu, 7 Feb 2008 09:04:07 +0100 (CET) Subject: [Python-checkins] r60643 - python/trunk/Python/strtod.c Message-ID: <20080207080407.890371E4020@bag.python.org> Author: brett.cannon Date: Thu Feb 7 09:04:07 2008 New Revision: 60643 Modified: python/trunk/Python/strtod.c Log: Remove unnecessary curly braces around an int literal. Modified: python/trunk/Python/strtod.c ============================================================================== --- python/trunk/Python/strtod.c (original) +++ python/trunk/Python/strtod.c Thu Feb 7 09:04:07 2008 @@ -44,11 +44,11 @@ I do know about , but the whole point of this file is that we can't always trust that stuff to be there or to be correct. */ -static int MDMINEXPT = {-323}; +static int MDMINEXPT = -323; static char MDMINFRAC[] = "494065645841246544"; static double ZERO = 0.0; -static int MDMAXEXPT = { 309}; +static int MDMAXEXPT = 309; static char MDMAXFRAC[] = "17976931348623157"; static double HUGE = 1.7976931348623157e308; From nnorwitz at gmail.com Thu Feb 7 10:14:06 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 04:14:06 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080207091406.GA28676@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551505 refs] From nnorwitz at gmail.com Thu Feb 7 10:22:32 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 04:22:32 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080207092232.GA986@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9529 refs] test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 303 tests OK. 2 tests failed: test_docxmlrpc test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551107 refs] From nnorwitz at gmail.com Thu Feb 7 11:48:37 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 05:48:37 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080207104837.GA19112@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test test_docxmlrpc failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_docxmlrpc.py", line 124, in test_autolinking in response.read()) AssertionError test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 314 tests OK. 2 tests failed: test_docxmlrpc test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [563145 refs] From python-checkins at python.org Thu Feb 7 12:43:47 2008 From: python-checkins at python.org (andrew.kuchling) Date: Thu, 7 Feb 2008 12:43:47 +0100 (CET) Subject: [Python-checkins] r60644 - python/trunk/Lib/test/test_docxmlrpc.py Message-ID: <20080207114348.00FC01E4020@bag.python.org> Author: andrew.kuchling Date: Thu Feb 7 12:43:47 2008 New Revision: 60644 Modified: python/trunk/Lib/test/test_docxmlrpc.py Log: Update URL Modified: python/trunk/Lib/test/test_docxmlrpc.py ============================================================================== --- python/trunk/Lib/test/test_docxmlrpc.py (original) +++ python/trunk/Lib/test/test_docxmlrpc.py Thu Feb 7 12:43:47 2008 @@ -120,7 +120,7 @@ response = self.client.getresponse() self.assert_( # This is ugly ... how can it be made better? -"""
    add(x, y)
    Add two instances together. This follows PEP008, but has nothing
    \nto do with RFC1952. Case should matter: pEp008 and rFC1952.  Things
    \nthat start with http and ftp should be auto-linked, too:
    \nhttp://google.com.
    """ +"""
    add(x, y)
    Add two instances together. This follows PEP008, but has nothing
    \nto do with RFC1952. Case should matter: pEp008 and rFC1952.  Things
    \nthat start with http and ftp should be auto-linked, too:
    \nhttp://google.com.
    """ in response.read()) def test_system_methods(self): From buildbot at python.org Thu Feb 7 13:12:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 12:12:46 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080207121246.B8B1C1E4022@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/132 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Feb 7 13:28:30 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 12:28:30 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080207122830.51D7B1E4022@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/35 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed compile sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 17:16:29 2008 From: python-checkins at python.org (facundo.batista) Date: Thu, 7 Feb 2008 17:16:29 +0100 (CET) Subject: [Python-checkins] r60645 - python/trunk/Lib/test/test_largefile.py Message-ID: <20080207161629.D8A7E1E4026@bag.python.org> Author: facundo.batista Date: Thu Feb 7 17:16:29 2008 New Revision: 60645 Modified: python/trunk/Lib/test/test_largefile.py Log: Fixes issue 2026. Tests converted to unittest. Thanks Giampaolo Rodola. Modified: python/trunk/Lib/test/test_largefile.py ============================================================================== --- python/trunk/Lib/test/test_largefile.py (original) +++ python/trunk/Lib/test/test_largefile.py Thu Feb 7 17:16:29 2008 @@ -1,12 +1,12 @@ -#!python +"""Test largefile support on system where this makes sense. +""" -#---------------------------------------------------------------------- -# test largefile support on system where this makes sense -# -#---------------------------------------------------------------------- - -from test import test_support -import os, stat, sys +import os +import stat +import sys +import unittest +from test.test_support import run_unittest, TESTFN, verbose, requires, \ + TestSkipped, unlink try: import signal @@ -17,154 +17,167 @@ except (ImportError, AttributeError): pass - # create >2GB file (2GB = 2147483648 bytes) size = 2500000000L -name = test_support.TESTFN - - -# On Windows and Mac OSX this test comsumes large resources; It takes -# a long time to build the >2GB file and takes >2GB of disk space -# therefore the resource must be enabled to run this test. If not, -# nothing after this line stanza will be executed. -if sys.platform[:3] == 'win' or sys.platform == 'darwin': - test_support.requires( - 'largefile', - 'test requires %s bytes and a long time to run' % str(size)) -else: - # Only run if the current filesystem supports large files. - # (Skip this test on Windows, since we now always support large files.) - f = open(test_support.TESTFN, 'wb') - try: - # 2**31 == 2147483648 - f.seek(2147483649L) - # Seeking is not enough of a test: you must write and flush, too! - f.write("x") - f.flush() - except (IOError, OverflowError): - f.close() - os.unlink(test_support.TESTFN) - raise test_support.TestSkipped, \ - "filesystem does not have largefile support" - else: - f.close() -def expect(got_this, expect_this): - if test_support.verbose: - print '%r =?= %r ...' % (got_this, expect_this), - if got_this != expect_this: - if test_support.verbose: - print 'no' - raise test_support.TestFailed, 'got %r, but expected %r' %\ - (got_this, expect_this) +class TestCase(unittest.TestCase): + """Test that each file function works as expected for a large + (i.e. > 2GB, do we have to check > 4GB) files. + """ + + def test_seek(self): + if verbose: + print 'create large file via seek (may be sparse file) ...' + f = open(TESTFN, 'wb') + try: + f.write('z') + f.seek(0) + f.seek(size) + f.write('a') + f.flush() + if verbose: + print 'check file size with os.fstat' + self.assertEqual(os.fstat(f.fileno())[stat.ST_SIZE], size+1) + finally: + f.close() + + def test_osstat(self): + if verbose: + print 'check file size with os.stat' + self.assertEqual(os.stat(TESTFN)[stat.ST_SIZE], size+1) + + def test_seek_read(self): + if verbose: + print 'play around with seek() and read() with the built largefile' + f = open(TESTFN, 'rb') + try: + self.assertEqual(f.tell(), 0) + self.assertEqual(f.read(1), 'z') + self.assertEqual(f.tell(), 1) + f.seek(0) + self.assertEqual(f.tell(), 0) + f.seek(0, 0) + self.assertEqual(f.tell(), 0) + f.seek(42) + self.assertEqual(f.tell(), 42) + f.seek(42, 0) + self.assertEqual(f.tell(), 42) + f.seek(42, 1) + self.assertEqual(f.tell(), 84) + f.seek(0, 1) + self.assertEqual(f.tell(), 84) + f.seek(0, 2) # seek from the end + self.assertEqual(f.tell(), size + 1 + 0) + f.seek(-10, 2) + self.assertEqual(f.tell(), size + 1 - 10) + f.seek(-size-1, 2) + self.assertEqual(f.tell(), 0) + f.seek(size) + self.assertEqual(f.tell(), size) + # the 'a' that was written at the end of file above + self.assertEqual(f.read(1), 'a') + f.seek(-size-1, 1) + self.assertEqual(f.read(1), 'z') + self.assertEqual(f.tell(), 1) + finally: + f.close() + + def test_lseek(self): + if verbose: + print 'play around with os.lseek() with the built largefile' + f = open(TESTFN, 'rb') + try: + self.assertEqual(os.lseek(f.fileno(), 0, 0), 0) + self.assertEqual(os.lseek(f.fileno(), 42, 0), 42) + self.assertEqual(os.lseek(f.fileno(), 42, 1), 84) + self.assertEqual(os.lseek(f.fileno(), 0, 1), 84) + self.assertEqual(os.lseek(f.fileno(), 0, 2), size+1+0) + self.assertEqual(os.lseek(f.fileno(), -10, 2), size+1-10) + self.assertEqual(os.lseek(f.fileno(), -size-1, 2), 0) + self.assertEqual(os.lseek(f.fileno(), size, 0), size) + # the 'a' that was written at the end of file above + self.assertEqual(f.read(1), 'a') + finally: + f.close() + + def test_truncate(self): + if verbose: + print 'try truncate' + f = open(TESTFN, 'r+b') + # this is already decided before start running the test suite + # but we do it anyway for extra protection + if not hasattr(f, 'truncate'): + raise TestSkipped, "open().truncate() not available on this system" + try: + f.seek(0, 2) + # else we've lost track of the true size + self.assertEqual(f.tell(), size+1) + # Cut it back via seek + truncate with no argument. + newsize = size - 10 + f.seek(newsize) + f.truncate() + self.assertEqual(f.tell(), newsize) # else pointer moved + f.seek(0, 2) + self.assertEqual(f.tell(), newsize) # else wasn't truncated + # Ensure that truncate(smaller than true size) shrinks + # the file. + newsize -= 1 + f.seek(42) + f.truncate(newsize) + self.assertEqual(f.tell(), 42) # else pointer moved + f.seek(0, 2) + self.assertEqual(f.tell(), newsize) # else wasn't truncated + + # XXX truncate(larger than true size) is ill-defined + # across platform; cut it waaaaay back + f.seek(0) + f.truncate(1) + self.assertEqual(f.tell(), 0) # else pointer moved + self.assertEqual(len(f.read()), 1) # else wasn't truncated + finally: + f.close() + + +def main_test(): + # On Windows and Mac OSX this test comsumes large resources; It + # takes a long time to build the >2GB file and takes >2GB of disk + # space therefore the resource must be enabled to run this test. + # If not, nothing after this line stanza will be executed. + if sys.platform[:3] == 'win' or sys.platform == 'darwin': + requires('largefile', + 'test requires %s bytes and a long time to run' % str(size)) else: - if test_support.verbose: - print 'yes' - - -# test that each file function works as expected for a large (i.e. >2GB, do -# we have to check >4GB) files - -if test_support.verbose: - print 'create large file via seek (may be sparse file) ...' -f = open(name, 'wb') -try: - f.write('z') - f.seek(0) - f.seek(size) - f.write('a') - f.flush() - if test_support.verbose: - print 'check file size with os.fstat' - expect(os.fstat(f.fileno())[stat.ST_SIZE], size+1) -finally: - f.close() -if test_support.verbose: - print 'check file size with os.stat' -expect(os.stat(name)[stat.ST_SIZE], size+1) - -if test_support.verbose: - print 'play around with seek() and read() with the built largefile' -f = open(name, 'rb') -try: - expect(f.tell(), 0) - expect(f.read(1), 'z') - expect(f.tell(), 1) - f.seek(0) - expect(f.tell(), 0) - f.seek(0, 0) - expect(f.tell(), 0) - f.seek(42) - expect(f.tell(), 42) - f.seek(42, 0) - expect(f.tell(), 42) - f.seek(42, 1) - expect(f.tell(), 84) - f.seek(0, 1) - expect(f.tell(), 84) - f.seek(0, 2) # seek from the end - expect(f.tell(), size + 1 + 0) - f.seek(-10, 2) - expect(f.tell(), size + 1 - 10) - f.seek(-size-1, 2) - expect(f.tell(), 0) - f.seek(size) - expect(f.tell(), size) - expect(f.read(1), 'a') # the 'a' that was written at the end of file above - f.seek(-size-1, 1) - expect(f.read(1), 'z') - expect(f.tell(), 1) -finally: + # Only run if the current filesystem supports large files. + # (Skip this test on Windows, since we now always support + # large files.) + f = open(TESTFN, 'wb') + try: + # 2**31 == 2147483648 + f.seek(2147483649L) + # Seeking is not enough of a test: you must write and + # flush, too! + f.write("x") + f.flush() + except (IOError, OverflowError): + f.close() + unlink(TESTFN) + raise TestSkipped, "filesystem does not have largefile support" + else: + f.close() + suite = unittest.TestSuite() + suite.addTest(TestCase('test_seek')) + suite.addTest(TestCase('test_osstat')) + suite.addTest(TestCase('test_seek_read')) + suite.addTest(TestCase('test_lseek')) + f = open(TESTFN, 'w') + if hasattr(f, 'truncate'): + suite.addTest(TestCase('test_truncate')) f.close() + unlink(TESTFN) + run_unittest(suite) + unlink(TESTFN) -if test_support.verbose: - print 'play around with os.lseek() with the built largefile' -f = open(name, 'rb') -try: - expect(os.lseek(f.fileno(), 0, 0), 0) - expect(os.lseek(f.fileno(), 42, 0), 42) - expect(os.lseek(f.fileno(), 42, 1), 84) - expect(os.lseek(f.fileno(), 0, 1), 84) - expect(os.lseek(f.fileno(), 0, 2), size+1+0) - expect(os.lseek(f.fileno(), -10, 2), size+1-10) - expect(os.lseek(f.fileno(), -size-1, 2), 0) - expect(os.lseek(f.fileno(), size, 0), size) - expect(f.read(1), 'a') # the 'a' that was written at the end of file above -finally: - f.close() - -if hasattr(f, 'truncate'): - if test_support.verbose: - print 'try truncate' - f = open(name, 'r+b') - try: - f.seek(0, 2) - expect(f.tell(), size+1) # else we've lost track of the true size - # Cut it back via seek + truncate with no argument. - newsize = size - 10 - f.seek(newsize) - f.truncate() - expect(f.tell(), newsize) # else pointer moved - f.seek(0, 2) - expect(f.tell(), newsize) # else wasn't truncated - # Ensure that truncate(smaller than true size) shrinks the file. - newsize -= 1 - f.seek(42) - f.truncate(newsize) - expect(f.tell(), 42) # else pointer moved - f.seek(0, 2) - expect(f.tell(), newsize) # else wasn't truncated - - # XXX truncate(larger than true size) is ill-defined across platforms - - # cut it waaaaay back - f.seek(0) - f.truncate(1) - expect(f.tell(), 0) # else pointer moved - expect(len(f.read()), 1) # else wasn't truncated - - finally: - f.close() -os.unlink(name) +if __name__ == '__main__': + main_test() From buildbot at python.org Thu Feb 7 17:43:12 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 16:43:12 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080207164312.F10621E4002@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3058 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 18:15:30 2008 From: python-checkins at python.org (christian.heimes) Date: Thu, 7 Feb 2008 18:15:30 +0100 (CET) Subject: [Python-checkins] r60646 - python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Message-ID: <20080207171530.803451E4026@bag.python.org> Author: christian.heimes Date: Thu Feb 7 18:15:30 2008 New Revision: 60646 Modified: python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Log: Added some statistics code to dict and list object code. I wanted to test how a larger freelist affects the reusage of freed objects. Contrary to my gut feelings 80 objects is more than fine for small apps. I haven't profiled a large app yet. Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Thu Feb 7 18:15:30 2008 @@ -162,6 +162,22 @@ } #endif +/* Debug statistic to compare allocations with reuse through the free list */ +#undef SHOW_ALLOC_COUNT +#ifdef SHOW_ALLOC_COUNT +static size_t count_alloc = 0; +static size_t count_reuse = 0; + +static void +show_alloc(void) +{ + fprintf(stderr, "Dict allocations: %zd\n", count_alloc); + fprintf(stderr, "Dict reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "%.2f%% reuse rate\n\n", + (100.0*count_reuse/(count_alloc+count_reuse))); +} +#endif + /* Initialization macros. There are two ways to create a dict: PyDict_New() is the main C API function, and the tp_new slot maps to dict_new(). In the latter case we @@ -200,6 +216,9 @@ #ifdef SHOW_CONVERSION_COUNTS Py_AtExit(show_counts); #endif +#ifdef SHOW_ALLOC_COUNT + Py_AtExit(show_alloc); +#endif } if (numfree) { mp = free_list[--numfree]; @@ -212,11 +231,17 @@ assert (mp->ma_used == 0); assert (mp->ma_table == mp->ma_smalltable); assert (mp->ma_mask == PyDict_MINSIZE - 1); +#ifdef SHOW_ALLOC_COUNT + count_reuse++; +#endif } else { mp = PyObject_GC_New(PyDictObject, &PyDict_Type); if (mp == NULL) return NULL; EMPTY_TO_MINSIZE(mp); +#ifdef SHOW_ALLOC_COUNT + count_alloc++; +#endif } mp->ma_lookup = lookdict_string; #ifdef SHOW_CONVERSION_COUNTS Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Thu Feb 7 18:15:30 2008 @@ -63,6 +63,22 @@ return 0; } +/* Debug statistic to compare allocations with reuse through the free list */ +#undef SHOW_ALLOC_COUNT +#ifdef SHOW_ALLOC_COUNT +static size_t count_alloc = 0; +static size_t count_reuse = 0; + +static void +show_alloc(void) +{ + fprintf(stderr, "List allocations: %zd\n", count_alloc); + fprintf(stderr, "List reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "%.2f%% reuse rate\n\n", + (100.0*count_reuse/(count_alloc+count_reuse))); +} +#endif + /* Empty list reuse scheme to save calls to malloc and free */ #ifndef PyList_MAXFREELIST #define PyList_MAXFREELIST 80 @@ -88,6 +104,13 @@ { PyListObject *op; size_t nbytes; +#ifdef SHOW_ALLOC_COUNT + static int initialized = 0; + if (!initialized) { + Py_AtExit(show_alloc); + initialized = 1; + } +#endif if (size < 0) { PyErr_BadInternalCall(); @@ -101,10 +124,16 @@ numfree--; op = free_list[numfree]; _Py_NewReference((PyObject *)op); +#ifdef SHOW_ALLOC_COUNT + count_reuse++; +#endif } else { op = PyObject_GC_New(PyListObject, &PyList_Type); if (op == NULL) return NULL; +#ifdef SHOW_ALLOC_COUNT + count_alloc++; +#endif } if (size <= 0) op->ob_item = NULL; From buildbot at python.org Thu Feb 7 18:29:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 17:29:57 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080207172957.8B2A61E4031@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2496 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_smtplib test_socket test_sys ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From buildbot at python.org Thu Feb 7 19:06:54 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 18:06:54 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080207180654.7B8D41E4002@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2773 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 2 tests failed: test_socketserver test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 7 18:59:49 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 09:59:49 -0800 Subject: [Python-checkins] r60645 - python/trunk/Lib/test/test_largefile.py In-Reply-To: <20080207161629.D8A7E1E4026@bag.python.org> References: <20080207161629.D8A7E1E4026@bag.python.org> Message-ID: On Feb 7, 2008 8:16 AM, facundo.batista wrote: > Author: facundo.batista > Date: Thu Feb 7 17:16:29 2008 > New Revision: 60645 > > Modified: > python/trunk/Lib/test/test_largefile.py > Log: > > Fixes issue 2026. Tests converted to unittest. Thanks > Giampaolo Rodola. > > > Modified: python/trunk/Lib/test/test_largefile.py > ============================================================================== > --- python/trunk/Lib/test/test_largefile.py (original) > +++ python/trunk/Lib/test/test_largefile.py Thu Feb 7 17:16:29 2008 > [...] > +if __name__ == '__main__': > + main_test() This needs to be test_main() to work. Right now the test is ignored. n From python-checkins at python.org Thu Feb 7 20:06:52 2008 From: python-checkins at python.org (facundo.batista) Date: Thu, 7 Feb 2008 20:06:52 +0100 (CET) Subject: [Python-checkins] r60648 - in python/trunk/Lib: test/test_urllib2.py urllib2.py Message-ID: <20080207190652.819EF1E4002@bag.python.org> Author: facundo.batista Date: Thu Feb 7 20:06:52 2008 New Revision: 60648 Modified: python/trunk/Lib/test/test_urllib2.py python/trunk/Lib/urllib2.py Log: Fixes Issue 1401. When redirected, a possible POST get converted to GET, so it loses its payload. So, it also must lose the headers related to the payload (if it has no content any more, it shouldn't indicate content length and type). Modified: python/trunk/Lib/test/test_urllib2.py ============================================================================== --- python/trunk/Lib/test/test_urllib2.py (original) +++ python/trunk/Lib/test/test_urllib2.py Thu Feb 7 20:06:52 2008 @@ -822,6 +822,8 @@ method = getattr(h, "http_error_%s" % code) req = Request(from_url, data) req.add_header("Nonsense", "viking=withhold") + if data is not None: + req.add_header("Content-Length", str(len(data))) req.add_unredirected_header("Spam", "spam") try: method(req, MockFile(), code, "Blah", @@ -834,6 +836,13 @@ self.assertEqual(o.req.get_method(), "GET") except AttributeError: self.assert_(not o.req.has_data()) + + # now it's a GET, there should not be headers regarding content + # (possibly dragged from before being a POST) + headers = [x.lower() for x in o.req.headers] + self.assertTrue("content-length" not in headers) + self.assertTrue("content-type" not in headers) + self.assertEqual(o.req.headers["Nonsense"], "viking=withhold") self.assert_("Spam" not in o.req.headers) Modified: python/trunk/Lib/urllib2.py ============================================================================== --- python/trunk/Lib/urllib2.py (original) +++ python/trunk/Lib/urllib2.py Thu Feb 7 20:06:52 2008 @@ -534,8 +534,11 @@ # do the same. # be conciliant with URIs containing a space newurl = newurl.replace(' ', '%20') + newheaders = dict((k,v) for k,v in req.headers.items() + if k.lower() not in ("content-length", "content-type") + ) return Request(newurl, - headers=req.headers, + headers=newheaders, origin_req_host=req.get_origin_req_host(), unverifiable=True) else: From python-checkins at python.org Thu Feb 7 20:30:22 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:30:22 +0100 (CET) Subject: [Python-checkins] r60649 - python/trunk/Doc/library/calendar.rst Message-ID: <20080207193022.CFE1E1E4002@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:30:22 2008 New Revision: 60649 Modified: python/trunk/Doc/library/calendar.rst Log: Clarify that the output of TextCalendar.formatmonth() and TextCalendar.formatyear() for custom instances won't be influenced by calls to the module global setfirstweekday() function. Fixes #2018. Modified: python/trunk/Doc/library/calendar.rst ============================================================================== --- python/trunk/Doc/library/calendar.rst (original) +++ python/trunk/Doc/library/calendar.rst Thu Feb 7 20:30:22 2008 @@ -117,9 +117,10 @@ .. method:: TextCalendar.formatmonth(theyear, themonth[, w[, l]]) Return a month's calendar in a multi-line string. If *w* is provided, it - specifies the width of the date columns, which are centered. If *l* is given, it - specifies the number of lines that each week will use. Depends on the first - weekday as set by :func:`setfirstweekday`. + specifies the width of the date columns, which are centered. If *l* is given, + it specifies the number of lines that each week will use. Depends on the + first weekday as specified in the constructor or set by the + :meth:`setfirstweekday` method. .. method:: TextCalendar.prmonth(theyear, themonth[, w[, l]]) @@ -129,11 +130,12 @@ .. method:: TextCalendar.formatyear(theyear, themonth[, w[, l[, c[, m]]]]) - Return a *m*-column calendar for an entire year as a multi-line string. Optional - parameters *w*, *l*, and *c* are for date column width, lines per week, and - number of spaces between month columns, respectively. Depends on the first - weekday as set by :meth:`setfirstweekday`. The earliest year for which a - calendar can be generated is platform-dependent. + Return a *m*-column calendar for an entire year as a multi-line string. + Optional parameters *w*, *l*, and *c* are for date column width, lines per + week, and number of spaces between month columns, respectively. Depends on + the first weekday as specified in the constructor or set by the + :meth:`setfirstweekday` method. The earliest year for which a calendar can + be generated is platform-dependent. .. method:: TextCalendar.pryear(theyear[, w[, l[, c[, m]]]]) From buildbot at python.org Thu Feb 7 20:33:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 19:33:19 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080207193319.CDF2C1E4002@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3060 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 7 20:35:17 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:35:17 +0100 (CET) Subject: [Python-checkins] r60650 - python/branches/release25-maint/Doc/lib/libcalendar.tex Message-ID: <20080207193517.8865E1E4002@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:35:17 2008 New Revision: 60650 Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex Log: Backport LaTeX version of r60649: Clarify that the output of TextCalendar.formatmonth() and TextCalendar.formatyear() for custom instances won't be influenced by calls to the module global setfirstweekday() function. Fixes #2018. Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libcalendar.tex (original) +++ python/branches/release25-maint/Doc/lib/libcalendar.tex Thu Feb 7 20:35:17 2008 @@ -113,8 +113,8 @@ Return a month's calendar in a multi-line string. If \var{w} is provided, it specifies the width of the date columns, which are centered. If \var{l} is given, it specifies the number of lines that -each week will use. Depends on the first weekday as set by -\function{setfirstweekday()}. +each week will use. Depends on the first weekday as specified in the constructor +or set by the \method{setfirstweekday()} method. \end{methoddesc} \begin{methoddesc}{prmonth}{theyear, themonth\optional{, w\optional{, l}}} @@ -126,9 +126,9 @@ Return a \var{m}-column calendar for an entire year as a multi-line string. Optional parameters \var{w}, \var{l}, and \var{c} are for date column width, lines per week, and number of spaces between month columns, -respectively. Depends on the first weekday as set by -\method{setfirstweekday()}. The earliest year for which a calendar can -be generated is platform-dependent. +respectively. Depends on the first weekday as specified in the constructor or +set by the \method{setfirstweekday()} method. The earliest year for which a +calendar can be generated is platform-dependent. \end{methoddesc} \begin{methoddesc}{pryear}{theyear\optional{, w\optional{, l\optional{, From python-checkins at python.org Thu Feb 7 20:48:35 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:48:35 +0100 (CET) Subject: [Python-checkins] r60651 - python/trunk/Doc/library/calendar.rst Message-ID: <20080207194835.1D7221E4002@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:48:34 2008 New Revision: 60651 Modified: python/trunk/Doc/library/calendar.rst Log: Fix documentation for Calendar.iterweekdays(): firstweekday is a property. Fixes second part of #2018. Modified: python/trunk/Doc/library/calendar.rst ============================================================================== --- python/trunk/Doc/library/calendar.rst (original) +++ python/trunk/Doc/library/calendar.rst Thu Feb 7 20:48:34 2008 @@ -39,9 +39,9 @@ .. method:: Calendar.iterweekdays(weekday) - Return an iterator for the week day numbers that will be used for one week. The - first number from the iterator will be the same as the number returned by - :meth:`firstweekday`. + Return an iterator for the week day numbers that will be used for one week. + The first value from the iterator will be the same as the value of the + :attr:`firstweekday` property. .. method:: Calendar.itermonthdates(year, month) From python-checkins at python.org Thu Feb 7 20:55:47 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:55:47 +0100 (CET) Subject: [Python-checkins] r60652 - python/branches/release25-maint/Doc/lib/libcalendar.tex Message-ID: <20080207195547.BBE411E4036@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:55:47 2008 New Revision: 60652 Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex Log: Backport LaTex version of r60651: Fix documentation for Calendar.iterweekdays(): firstweekday is a property. Fixes second part of #2018. Modified: python/branches/release25-maint/Doc/lib/libcalendar.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libcalendar.tex (original) +++ python/branches/release25-maint/Doc/lib/libcalendar.tex Thu Feb 7 20:55:47 2008 @@ -38,8 +38,8 @@ \begin{methoddesc}{iterweekdays}{weekday} Return an iterator for the week day numbers that will be used -for one week. The first number from the iterator will be the -same as the number returned by \method{firstweekday()}. +for one week. The first value from the iterator will be the same +as the value of the \member{firstweekday} property. \end{methoddesc} \begin{methoddesc}{itermonthdates}{year, month} From python-checkins at python.org Thu Feb 7 20:57:33 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:57:33 +0100 (CET) Subject: [Python-checkins] r60653 - python/trunk/Lib/calendar.py Message-ID: <20080207195733.080961E4002@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:57:32 2008 New Revision: 60653 Modified: python/trunk/Lib/calendar.py Log: Fix typo in docstring for Calendar.itermonthdays(). Modified: python/trunk/Lib/calendar.py ============================================================================== --- python/trunk/Lib/calendar.py (original) +++ python/trunk/Lib/calendar.py Thu Feb 7 20:57:32 2008 @@ -179,8 +179,8 @@ def itermonthdays(self, year, month): """ - Like itermonthdates(), but will yield day numbers tuples. For days - outside the specified month the day number is 0. + Like itermonthdates(), but will yield day numbers. For days outside + the specified month the day number is 0. """ for date in self.itermonthdates(year, month): if date.month != month: From python-checkins at python.org Thu Feb 7 20:58:37 2008 From: python-checkins at python.org (walter.doerwald) Date: Thu, 7 Feb 2008 20:58:37 +0100 (CET) Subject: [Python-checkins] r60654 - python/branches/release25-maint/Lib/calendar.py Message-ID: <20080207195837.9D1D81E4002@bag.python.org> Author: walter.doerwald Date: Thu Feb 7 20:58:37 2008 New Revision: 60654 Modified: python/branches/release25-maint/Lib/calendar.py Log: Backport r60653: Fix typo in docstring for Calendar.itermonthdays(). Modified: python/branches/release25-maint/Lib/calendar.py ============================================================================== --- python/branches/release25-maint/Lib/calendar.py (original) +++ python/branches/release25-maint/Lib/calendar.py Thu Feb 7 20:58:37 2008 @@ -179,8 +179,8 @@ def itermonthdays(self, year, month): """ - Like itermonthdates(), but will yield day numbers tuples. For days - outside the specified month the day number is 0. + Like itermonthdates(), but will yield day numbers. For days outside + the specified month the day number is 0. """ for date in self.itermonthdates(year, month): if date.month != month: From python-checkins at python.org Thu Feb 7 21:04:37 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 21:04:37 +0100 (CET) Subject: [Python-checkins] r60655 - python/trunk/Doc/library/decimal.rst Message-ID: <20080207200437.7D45F1E4002@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 21:04:37 2008 New Revision: 60655 Modified: python/trunk/Doc/library/decimal.rst Log: The float conversion recipe is simpler in Py2.6 Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Thu Feb 7 21:04:37 2008 @@ -1581,31 +1581,21 @@ A. Yes, all binary floating point numbers can be exactly expressed as a Decimal. An exact conversion may take more precision than intuition would -suggest, so trapping :const:`Inexact` will signal a need for more precision:: +suggest, so we trap :const:`Inexact` to signal a need for more precision:: - def floatToDecimal(f): - "Convert a floating point number to a Decimal with no loss of information" - # Transform (exactly) a float to a mantissa (0.5 <= abs(m) < 1.0) and an - # exponent. Double the mantissa until it is an integer. Use the integer - # mantissa and exponent to compute an equivalent Decimal. If this cannot - # be done exactly, then retry with more precision. - - mantissa, exponent = math.frexp(f) - while mantissa != int(mantissa): - mantissa *= 2.0 - exponent -= 1 - mantissa = int(mantissa) - - oldcontext = getcontext() - setcontext(Context(traps=[Inexact])) - try: - while True: - try: - return mantissa * Decimal(2) ** exponent - except Inexact: - getcontext().prec += 1 - finally: - setcontext(oldcontext) + def float_to_decimal(f): + "Convert a floating point number to a Decimal with no loss of information" + n, d = f.as_integer_ratio() + with localcontext() as ctx: + ctx.traps[Inexact] = True + while True: + try: + return Decimal(n) / Decimal(d) + except Inexact: + ctx.prec += 1 + + >>> float_to_decimal(math.pi) + Decimal("3.141592653589793115997963468544185161590576171875") Q. Why isn't the :func:`floatToDecimal` routine included in the module? From python-checkins at python.org Thu Feb 7 21:10:50 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 7 Feb 2008 21:10:50 +0100 (CET) Subject: [Python-checkins] r60657 - python/trunk/Doc/library/decimal.rst Message-ID: <20080207201050.3A6D01E402A@bag.python.org> Author: raymond.hettinger Date: Thu Feb 7 21:10:49 2008 New Revision: 60657 Modified: python/trunk/Doc/library/decimal.rst Log: Fix typo Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Thu Feb 7 21:10:49 2008 @@ -1597,13 +1597,13 @@ >>> float_to_decimal(math.pi) Decimal("3.141592653589793115997963468544185161590576171875") -Q. Why isn't the :func:`floatToDecimal` routine included in the module? +Q. Why isn't the :func:`float_to_decimal` routine included in the module? A. There is some question about whether it is advisable to mix binary and decimal floating point. Also, its use requires some care to avoid the representation issues associated with binary floating point:: - >>> floatToDecimal(1.1) + >>> float_to_decimal(1.1) Decimal("1.100000000000000088817841970012523233890533447265625") Q. Within a complex calculation, how can I make sure that I haven't gotten a From buildbot at python.org Thu Feb 7 21:26:32 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 20:26:32 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080207202632.8CF321E4002@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/554 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 560, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 7 22:11:16 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 16:11:16 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080207211116.GA20309@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551793 refs] From buildbot at python.org Thu Feb 7 21:46:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 20:46:33 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 2.5 Message-ID: <20080207204633.A9B851E4034@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%202.5/builds/28 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 7 22:18:22 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 16:18:22 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080207211822.GA23520@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9529 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551397 refs] From buildbot at python.org Thu Feb 7 21:52:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 20:52:35 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080207205235.8892E1E4025@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2803 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Feb 7 22:48:21 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 21:48:21 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080207214822.15BC21E4016@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1399 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 7 23:44:46 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Feb 2008 17:44:46 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080207224446.GA9574@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 314 tests OK. 2 tests failed: test_bsddb3 test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [563422 refs] From python-checkins at python.org Thu Feb 7 23:27:10 2008 From: python-checkins at python.org (brett.cannon) Date: Thu, 7 Feb 2008 23:27:10 +0100 (CET) Subject: [Python-checkins] r60660 - python/trunk/Modules/_ctypes/libffi/src/x86/ffi_darwin.c Message-ID: <20080207222710.72BA61E4002@bag.python.org> Author: brett.cannon Date: Thu Feb 7 23:27:10 2008 New Revision: 60660 Modified: python/trunk/Modules/_ctypes/libffi/src/x86/ffi_darwin.c Log: Make sure a switch statement does not have repetitive case statements. Error found through LLVM post-2.1 svn. Modified: python/trunk/Modules/_ctypes/libffi/src/x86/ffi_darwin.c ============================================================================== --- python/trunk/Modules/_ctypes/libffi/src/x86/ffi_darwin.c (original) +++ python/trunk/Modules/_ctypes/libffi/src/x86/ffi_darwin.c Thu Feb 7 23:27:10 2008 @@ -146,7 +146,9 @@ case FFI_TYPE_SINT64: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: +#endif cif->flags = (unsigned) cif->rtype->type; break; From buildbot at python.org Thu Feb 7 23:31:09 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 22:31:09 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080207223109.CC1BD1E4028@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/623 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 00:12:41 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 23:12:41 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080207231241.89DEE1E4002@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/284 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 00:44:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 23:44:46 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080207234446.EFE961E4002@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/190 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 00:53:52 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 07 Feb 2008 23:53:52 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080207235352.CA30F1E4002@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2500 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_smtplib test_socket test_sys ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 01:11:32 2008 From: python-checkins at python.org (christian.heimes) Date: Fri, 8 Feb 2008 01:11:32 +0100 (CET) Subject: [Python-checkins] r60661 - in python/trunk: Include/pythonrun.h Misc/NEWS Objects/dictobject.c Python/pythonrun.c Message-ID: <20080208001132.452811E400B@bag.python.org> Author: christian.heimes Date: Fri Feb 8 01:11:31 2008 New Revision: 60661 Modified: python/trunk/Include/pythonrun.h python/trunk/Misc/NEWS python/trunk/Objects/dictobject.c python/trunk/Python/pythonrun.c Log: Deallocate content of the dict free list on interpreter shutdown Modified: python/trunk/Include/pythonrun.h ============================================================================== --- python/trunk/Include/pythonrun.h (original) +++ python/trunk/Include/pythonrun.h Fri Feb 8 01:11:31 2008 @@ -130,6 +130,7 @@ PyAPI_FUNC(void) PyMethod_Fini(void); PyAPI_FUNC(void) PyFrame_Fini(void); PyAPI_FUNC(void) PyCFunction_Fini(void); +PyAPI_FUNC(void) PyDict_Fini(void); PyAPI_FUNC(void) PyTuple_Fini(void); PyAPI_FUNC(void) PyList_Fini(void); PyAPI_FUNC(void) PySet_Fini(void); Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 8 01:11:31 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Fixed a minor memory leak in dictobject.c. The content of the free + list was not freed on interpreter shutdown. + - Limit free list of method and builtin function objects to 256 entries each. Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Fri Feb 8 01:11:31 2008 @@ -205,6 +205,18 @@ static PyDictObject *free_list[PyDict_MAXFREELIST]; static int numfree = 0; +void +PyDict_Fini(void) +{ + PyListObject *op; + + while (numfree) { + op = free_list[numfree--]; + assert(PyDict_CheckExact(op)); + PyObject_GC_Del(op); + } +} + PyObject * PyDict_New(void) { Modified: python/trunk/Python/pythonrun.c ============================================================================== --- python/trunk/Python/pythonrun.c (original) +++ python/trunk/Python/pythonrun.c Fri Feb 8 01:11:31 2008 @@ -473,6 +473,7 @@ PyString_Fini(); PyInt_Fini(); PyFloat_Fini(); + PyDict_Fini(); #ifdef Py_USING_UNICODE /* Cleanup Unicode implementation */ From python-checkins at python.org Fri Feb 8 01:14:35 2008 From: python-checkins at python.org (christian.heimes) Date: Fri, 8 Feb 2008 01:14:35 +0100 (CET) Subject: [Python-checkins] r60662 - python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Message-ID: <20080208001435.4D4C61E402E@bag.python.org> Author: christian.heimes Date: Fri Feb 8 01:14:34 2008 New Revision: 60662 Modified: python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Log: Use prefix decrement Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Fri Feb 8 01:14:34 2008 @@ -208,10 +208,10 @@ void PyDict_Fini(void) { - PyListObject *op; + PyDictObject *op; while (numfree) { - op = free_list[numfree--]; + op = free_list[--numfree]; assert(PyDict_CheckExact(op)); PyObject_GC_Del(op); } Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Fri Feb 8 01:14:34 2008 @@ -92,8 +92,7 @@ PyListObject *op; while (numfree) { - numfree--; - op = free_list[numfree]; + op = free_list[--numfree]; assert(PyList_CheckExact(op)); PyObject_GC_Del(op); } From buildbot at python.org Fri Feb 8 01:18:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 00:18:40 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080208001840.9970D1E4002@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/37 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,walter.doerwald BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 01:43:38 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 00:43:38 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080208004338.E8DCD1E4030@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/138 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2000-2000-2000-2000-2000' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0002-0002-0002-0002-0002' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1001-1001-1001-1001-1001' 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 01:56:03 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Fri, 8 Feb 2008 01:56:03 +0100 (CET) Subject: [Python-checkins] r60663 - in python/trunk: Lib/test/test_defaultdict.py Misc/NEWS Modules/_collectionsmodule.c Message-ID: <20080208005603.3D3AF1E4002@bag.python.org> Author: amaury.forgeotdarc Date: Fri Feb 8 01:56:02 2008 New Revision: 60663 Modified: python/trunk/Lib/test/test_defaultdict.py python/trunk/Misc/NEWS python/trunk/Modules/_collectionsmodule.c Log: issue 2045: Infinite recursion when printing a subclass of defaultdict, if default_factory is set to a bound method. Will backport. Modified: python/trunk/Lib/test/test_defaultdict.py ============================================================================== --- python/trunk/Lib/test/test_defaultdict.py (original) +++ python/trunk/Lib/test/test_defaultdict.py Fri Feb 8 01:56:02 2008 @@ -141,6 +141,29 @@ else: self.fail("expected KeyError") + def test_recursive_repr(self): + # Issue2045: stack overflow when default_factory is a bound method + class sub(defaultdict): + def __init__(self): + self.default_factory = self._factory + def _factory(self): + return [] + d = sub() + self.assert_(repr(d).startswith( + "defaultdict(>f, d + finally: + f.close() + finally: + os.remove(tfn) + def test_main(): test_support.run_unittest(TestDefaultDict) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 8 01:56:02 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #2045: Fix an infinite recursion triggered when printing a subclass of + collections.defaultdict, if its default_factory is set to a bound method. + - Fixed a minor memory leak in dictobject.c. The content of the free list was not freed on interpreter shutdown. Modified: python/trunk/Modules/_collectionsmodule.c ============================================================================== --- python/trunk/Modules/_collectionsmodule.c (original) +++ python/trunk/Modules/_collectionsmodule.c Fri Feb 8 01:56:02 2008 @@ -1300,7 +1300,17 @@ if (dd->default_factory == NULL) defrepr = PyString_FromString("None"); else - defrepr = PyObject_Repr(dd->default_factory); + { + int status = Py_ReprEnter(dd->default_factory); + if (status != 0) { + if (status < 0) + return NULL; + defrepr = PyString_FromString("..."); + } + else + defrepr = PyObject_Repr(dd->default_factory); + Py_ReprLeave(dd->default_factory); + } if (defrepr == NULL) { Py_DECREF(baserepr); return NULL; From buildbot at python.org Fri Feb 8 01:58:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 00:58:18 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080208005818.81F411E4002@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/872 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\buildbot\work\trunk.heller-windows\build\lib\test\test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 02:05:21 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Fri, 8 Feb 2008 02:05:21 +0100 (CET) Subject: [Python-checkins] r60664 - in python/branches/release25-maint: Lib/test/test_defaultdict.py Misc/NEWS Modules/collectionsmodule.c Message-ID: <20080208010521.DD1671E4002@bag.python.org> Author: amaury.forgeotdarc Date: Fri Feb 8 02:05:21 2008 New Revision: 60664 Modified: python/branches/release25-maint/Lib/test/test_defaultdict.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/collectionsmodule.c Log: issue 2045: Infinite recursion when printing a subclass of defaultdict, if default_factory is set to a bound method. Backport of r60663. Modified: python/branches/release25-maint/Lib/test/test_defaultdict.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_defaultdict.py (original) +++ python/branches/release25-maint/Lib/test/test_defaultdict.py Fri Feb 8 02:05:21 2008 @@ -141,6 +141,29 @@ else: self.fail("expected KeyError") + def test_recursive_repr(self): + # Issue2045: stack overflow when default_factory is a bound method + class sub(defaultdict): + def __init__(self): + self.default_factory = self._factory + def _factory(self): + return [] + d = sub() + self.assert_(repr(d).startswith( + "defaultdict(>f, d + finally: + f.close() + finally: + os.remove(tfn) + def test_main(): test_support.run_unittest(TestDefaultDict) Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Fri Feb 8 02:05:21 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #2045: Fix an infinite recursion triggered when printing a subclass of + collections.defaultdict, if its default_factory is set to a bound method. + - Issue #1920: "while 0" statements were completely removed by the compiler, even in the presence of an "else" clause, which is supposed to be run when the condition is false. Now the compiler correctly emits bytecode for the Modified: python/branches/release25-maint/Modules/collectionsmodule.c ============================================================================== --- python/branches/release25-maint/Modules/collectionsmodule.c (original) +++ python/branches/release25-maint/Modules/collectionsmodule.c Fri Feb 8 02:05:21 2008 @@ -1217,7 +1217,17 @@ if (dd->default_factory == NULL) defrepr = PyString_FromString("None"); else - defrepr = PyObject_Repr(dd->default_factory); + { + int status = Py_ReprEnter(dd->default_factory); + if (status != 0) { + if (status < 0) + return NULL; + defrepr = PyString_FromString("..."); + } + else + defrepr = PyObject_Repr(dd->default_factory); + Py_ReprLeave(dd->default_factory); + } if (defrepr == NULL) { Py_DECREF(baserepr); return NULL; From buildbot at python.org Fri Feb 8 02:22:27 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 01:22:27 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080208012227.849DA1E400B@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3064 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 03:27:07 2008 From: python-checkins at python.org (mark.dickinson) Date: Fri, 8 Feb 2008 03:27:07 +0100 (CET) Subject: [Python-checkins] r60665 - python/branches/trunk-math/Modules/cmathmodule.c Message-ID: <20080208022707.05A301E4002@bag.python.org> Author: mark.dickinson Date: Fri Feb 8 03:27:06 2008 New Revision: 60665 Modified: python/branches/trunk-math/Modules/cmathmodule.c Log: Experimental code change: make complex acos return the C99 recommended output when either the real or imaginary part of the input is a special value. Modified: python/branches/trunk-math/Modules/cmathmodule.c ============================================================================== --- python/branches/trunk-math/Modules/cmathmodule.c (original) +++ python/branches/trunk-math/Modules/cmathmodule.c Fri Feb 8 03:27:06 2008 @@ -42,12 +42,80 @@ static Py_complex c_tanh(Py_complex); static PyObject * math_error(void); +/* Code to deal with special values (infinities, NaNs, etc.). */ + +/* special_type takes a double and returns an integer code indicating + the type of the double as follows: + + 0 : -infinity + 1 : negative finite number (nonzero) + 2 : -0. + 3 : 0. + 4 : positive finite number (nonzero) + 5 : infinity + 6 : nan + + XXX this should probably be an enum, for the sake of clarity +*/ + +static int +special_type(double d) +{ + if (Py_IS_FINITE(d)) { + if (d) { + if (copysign(1., d) == 1.) + return 3; + else + return 2; + } + else { + if (copysign(1., d) == 1.) + return 4; + else + return 1; + } + } + else { + if (Py_IS_NAN(d)) + return 6; + else if (copysign(1., d) == 1.) + return 5; + else + return 0; + } +} + +#define P Py_MATH_PI +#define I Py_HUGE_VAL +#define N Py_NAN +#define U -1.345e26 /* unlikely value, used as placeholder */ + /* First, the C functions that do the real work */ +static double acos_special_values[7][7][2] = { + {{.75*P, I}, {P, I}, {P, I}, {P, -I}, {P, -I}, {.75*P, -I}, {N, I}}, + {{.5*P, I}, {U, U}, {U, U}, {U, U}, {U, U}, {.5*P, -I}, {N, N}}, + {{.5*P, I}, {U, U}, {U, U}, {U, U}, {U, U}, {.5*P, -I}, {.25*P, N}}, + {{.5*P, I}, {U, U}, {U, U}, {U, U}, {U, U}, {.5*P, -I}, {.25*P, N}}, + {{.5*P, I}, {U, U}, {U, U}, {U, U}, {U, U}, {.5*P, -I}, {N, N}}, + {{.25*P, I}, {0, I}, {0, I}, {0, -I}, {0, -I}, {.25*P, -I}, {N, I}}, + {{N, I}, {N, N}, {N, N}, {N, N}, {N, N}, {N, N}, {N, N}} +}; + static Py_complex c_acos(Py_complex z) { Py_complex s1, s2, r; + double *special_value; + + if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) { + special_value = acos_special_values[special_type(z.real)] + [special_type(z.imag)]; + r.real = special_value[0]; + r.imag = special_value[1]; + return r; + } + if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) { /* avoid unnecessary overflow for large arguments */ r.real = atan2(fabs(z.imag), z.real); From buildbot at python.org Fri Feb 8 03:53:45 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 02:53:45 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20080208025345.264301E400B@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/438 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/2.5.norwitz-tru64/build/Lib/test/test_socket.py", line 879, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 05:02:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 04:02:46 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080208040246.B97C91E400B@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2502 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 466, in process_request self.collect_children() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 455, in collect_children self.active_children.remove(pid) ValueError: list.remove(x): x not in list 5 tests failed: test_asynchat test_smtplib test_socket test_socketserver test_sys ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 07:32:58 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 8 Feb 2008 07:32:58 +0100 (CET) Subject: [Python-checkins] r60666 - tracker/instances/jython/html/page.html Message-ID: <20080208063258.C93201E400B@bag.python.org> Author: martin.v.loewis Date: Fri Feb 8 07:32:58 2008 New Revision: 60666 Modified: tracker/instances/jython/html/page.html Log: Adopt jython.org page layout. Modified: tracker/instances/jython/html/page.html ============================================================================== --- tracker/instances/jython/html/page.html (original) +++ tracker/instances/jython/html/page.html Fri Feb 8 07:32:58 2008 @@ -1,248 +1,322 @@ - - - -title goes here - - - - - - - - - - - - - -

    - - -

    - -
    - - - - -
    - - - -
    - -
    -
    -
    - -

    -

    - - clear this message -

    - Page content goes here -
    - -
    -
    - -
    -
    - - - +
    + +
    +
    +

    + body title +

    +

    +

    + + clear this message +

    + Page content + goes here + + + +
    
    +    
    +  
     
    -
     
    -
     
     
    -  
    -	
    -
    +tal:define="required required | python:[]"
    +tal:attributes="class python:(name in required) and 'required' or nothing">
     
    +  
    +  
    +
     
    -  
    +  
     
    -
     
    -  
    +  
       (cal)
    +  tal:attributes="href python:'''javascript:help_window('issue?@template=calendar&property=%s&form=itemSynopsis', 300, 200)'''%name">
    +  (cal)
     
    -
     
       
    -  
    -  
    +  
    +  
     
    -
     
       
     
    -
     
     
       
     
    -
     
     
    -  
         
    -    
    +    
         
         
         
       
     
    -
     
    -  
    -  
    +  
    +  
     
    -
     
    - 
      -
    • - -
    • -
    • - - -
    • -
    - +
      +
    • + +
    • +
    • + + +
    • +
    + + tal:attributes="value name; checked python:name in cols" /> - + tal:attributes="value name; checked python:name == sort_on" /> - + tal:attributes="value name; checked python:name == group_on" /> - - - + - + +tal:attributes="id name; name name; value value; readonly not:edit_ok" +value="heinz" /> - - - + + From python-checkins at python.org Fri Feb 8 07:45:40 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Fri, 8 Feb 2008 07:45:40 +0100 (CET) Subject: [Python-checkins] r60667 - in python/trunk/Lib: numbers.py test/test_rational.py Message-ID: <20080208064540.D62B81E400C@bag.python.org> Author: jeffrey.yasskin Date: Fri Feb 8 07:45:40 2008 New Revision: 60667 Modified: python/trunk/Lib/numbers.py python/trunk/Lib/test/test_rational.py Log: Oops! 2.6's Rational.__ne__ didn't work. Modified: python/trunk/Lib/numbers.py ============================================================================== --- python/trunk/Lib/numbers.py (original) +++ python/trunk/Lib/numbers.py Fri Feb 8 07:45:40 2008 @@ -174,7 +174,10 @@ """self == other""" raise NotImplementedError - # __ne__ is inherited from object and negates whatever __eq__ does. + def __ne__(self, other): + """self != other""" + # The default __ne__ doesn't negate __eq__ until 3.0. + return not (self == other) Complex.register(complex) Modified: python/trunk/Lib/test/test_rational.py ============================================================================== --- python/trunk/Lib/test/test_rational.py (original) +++ python/trunk/Lib/test/test_rational.py Fri Feb 8 07:45:40 2008 @@ -313,6 +313,8 @@ self.assertFalse(R(2, 3) <= R(1, 2)) self.assertTrue(R(1, 2) == R(1, 2)) self.assertFalse(R(1, 2) == R(1, 3)) + self.assertFalse(R(1, 2) != R(1, 2)) + self.assertTrue(R(1, 2) != R(1, 3)) def testMixedLess(self): self.assertTrue(2 < R(5, 2)) From python-checkins at python.org Fri Feb 8 07:51:05 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 8 Feb 2008 07:51:05 +0100 (CET) Subject: [Python-checkins] r60668 - tracker/instances/jython/initial_data.py Message-ID: <20080208065105.9CC0A1E400B@bag.python.org> Author: martin.v.loewis Date: Fri Feb 8 07:51:05 2008 New Revision: 60668 Modified: tracker/instances/jython/initial_data.py Log: Add initial data according to #184. Modified: tracker/instances/jython/initial_data.py ============================================================================== --- tracker/instances/jython/initial_data.py (original) +++ tracker/instances/jython/initial_data.py Fri Feb 8 07:51:05 2008 @@ -5,44 +5,35 @@ # issue_type = db.getclass('issue_type') -issue_type.create(name='crash', order='1') -issue_type.create(name='compile error', order='2') -issue_type.create(name='resource usage', order='3') -issue_type.create(name='security', order='4') -issue_type.create(name='behavior', order='5') -issue_type.create(name='rfe', order='6') +issue_type.create(name='behaviour', order='1') +issue_type.create(name='security', order='2') +issue_type.create(name='rfe', order='3') +issue_type.create(name='crash', order='4') component = db.getclass('component') -component.create(name="Build", order="1") -component.create(name="Demos and Tools", order="2") -component.create(name="Distutils", order="3") -component.create(name="Documentation", order="4") -component.create(name="Extension Modules", order="5") -component.create(name="IDLE", order="6") -component.create(name="Installation", order="7") -component.create(name="Interpreter Core", order="8") -component.create(name="Library (Lib)", order="9") -component.create(name="Macintosh", order="10") -component.create(name="Regular Expressions", order="11") -component.create(name="Tests", order="12") -component.create(name="Tkinter", order="13") -component.create(name="Unicode", order="14") -component.create(name="Windows", order="15") -component.create(name="XML", order="16") +component.create(name="Any", order="1") +component.create(name="Core", order="2") +component.create(name="Documentation", order="3") +component.create(name="Installer", order="4") +component.create(name="Jythonc compiler", order="5") +component.create(name="Library", order="6") +component.create(name="website", order="7") +component.create(name="zxjdbc", order="8") version = db.getclass('version') -version.create(name='Python 2.6', order='1') -version.create(name='Python 2.5', order='2') -version.create(name='Python 2.4', order='3') -version.create(name='Python 2.3', order='4') -version.create(name='Python 2.2.3', order='5') -version.create(name='Python 2.2.2', order='6') -version.create(name='Python 2.2.1', order='7') -version.create(name='Python 2.2', order='8') -version.create(name='Python 2.1.2', order='9') -version.create(name='Python 2.1.1', order='10') -version.create(name='3rd party', order='11') - +version.create(name='Deferred', order='1') +version.create(name='Fixed in 2.1a3', order='2') +version.create(name='Fixed in 2.1b1', order='3') +version.create(name='Fixed in 2.1b2', order='4') +version.create(name='Fixed in 2.1final', order='5') +version.create(name='Fixed in 2.2a0', order='6') +version.create(name='targeted for 2.2.1rc1', order='7') +version.create(name='targeted for 2.2beta1', order='8') +version.create(name='targeted for 2.2beta2', order='9') +version.create(name='targeted for 2.2rc1', order='10') +version.create(name='targeted for 2.2rc2', order='11') +version.create(name='targeted for 2.2rc3', order='12') +version.create(name='test failure causes', order='13') severity = db.getclass('severity') severity.create(name='critical', order='1') @@ -77,11 +68,14 @@ resolution.create(name='works for me', order='11') keyword = db.getclass("keyword") -keyword.create(name="py3k", description="Python 3000 bugs") -keyword.create(name="patch", description="Contains patch") +#keyword.create(name="patch", description="Contains patch") # # create the two default users user = db.getclass('user') user.create(username="admin", password=adminpw, address=admin_email, roles='Admin') user.create(username="anonymous", roles='Anonymous') + +# and some test users +user.create(username="user", password="user", roles="User") +user.create(username="developer", password="developer", roles="User,Developer") From buildbot at python.org Fri Feb 8 08:14:24 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 07:14:24 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080208071424.B798B1E400B@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/140 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 8 09:42:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 08:42:19 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian 3.0 Message-ID: <20080208084219.6895F1E403B@bag.python.org> The Buildbot has detected a new failure of S-390 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%203.0/builds/24 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_bsddb3 test_profile ====================================================================== FAIL: test03_repr_closed_db (bsddb.test.test_misc.MiscTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-s390/build/Lib/bsddb/test/test_misc.py", line 47, in test03_repr_closed_db self.assertEquals(rp, "{}") AssertionError: '' != '{}' ====================================================================== FAIL: test_cprofile (test.test_profile.ProfileTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/3.0.klose-debian-s390/build/Lib/test/test_profile.py", line 37, in test_cprofile self.assertEqual(results[0], 43000) AssertionError: 44000 != 43000 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 8 10:09:39 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 04:09:39 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080208090939.GA30465@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551883 refs] From nnorwitz at gmail.com Fri Feb 8 10:16:30 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 04:16:30 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080208091630.GA32455@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9529 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551499 refs] From nnorwitz at gmail.com Fri Feb 8 11:41:58 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 05:41:58 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080208104158.GA18204@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [563527 refs] From python-checkins at python.org Fri Feb 8 18:10:21 2008 From: python-checkins at python.org (hyeshik.chang) Date: Fri, 8 Feb 2008 18:10:21 +0100 (CET) Subject: [Python-checkins] r60671 - in python/trunk: Lib/test/cjkencodings_test.py Lib/test/test_codecmaps_hk.py Lib/test/test_multibytecodec_support.py Misc/NEWS Modules/cjkcodecs/_codecs_hk.c Modules/cjkcodecs/mappings_hk.h Message-ID: <20080208171021.6A6661E4031@bag.python.org> Author: hyeshik.chang Date: Fri Feb 8 18:10:20 2008 New Revision: 60671 Modified: python/trunk/Lib/test/cjkencodings_test.py python/trunk/Lib/test/test_codecmaps_hk.py python/trunk/Lib/test/test_multibytecodec_support.py python/trunk/Misc/NEWS python/trunk/Modules/cjkcodecs/_codecs_hk.c python/trunk/Modules/cjkcodecs/mappings_hk.h Log: Update big5hkscs codec to conform to the HKSCS:2004 revision. Modified: python/trunk/Lib/test/cjkencodings_test.py ============================================================================== --- python/trunk/Lib/test/cjkencodings_test.py (original) +++ python/trunk/Lib/test/cjkencodings_test.py Fri Feb 8 18:10:20 2008 @@ -64,8 +64,10 @@ "\xab\x96\xe7\x9a\x84\xe5\x95\x8f\xe9\xa1\x8c\xe5\xb0\xb1\xe6\x98" "\xaf\x3a\x0a\x0a"), 'big5hkscs': ( -"\x88\x45\x88\x5c\x8a\x73\x8b\xda\x8d\xd8\x0a", -"\xf0\xa0\x84\x8c\xc4\x9a\xe9\xb5\xae\xe7\xbd\x93\xe6\xb4\x86\x0a"), +"\x88\x45\x88\x5c\x8a\x73\x8b\xda\x8d\xd8\x0a\x88\x66\x88\x62\x88" +"\xa7\x20\x88\xa7\x88\xa3\x0a", +"\xf0\xa0\x84\x8c\xc4\x9a\xe9\xb5\xae\xe7\xbd\x93\xe6\xb4\x86\x0a" +"\xc3\x8a\xc3\x8a\xcc\x84\xc3\xaa\x20\xc3\xaa\xc3\xaa\xcc\x84\x0a"), 'cp949': ( "\x8c\x63\xb9\xe6\xb0\xa2\xc7\xcf\x20\xbc\x84\xbd\xc3\xc4\xdd\xb6" "\xf3\x0a\x0a\xa8\xc0\xa8\xc0\xb3\xb3\x21\x21\x20\xec\xd7\xce\xfa" Modified: python/trunk/Lib/test/test_codecmaps_hk.py ============================================================================== --- python/trunk/Lib/test/test_codecmaps_hk.py (original) +++ python/trunk/Lib/test/test_codecmaps_hk.py Fri Feb 8 18:10:20 2008 @@ -11,10 +11,11 @@ class TestBig5HKSCSMap(test_multibytecodec_support.TestBase_Mapping, unittest.TestCase): encoding = 'big5hkscs' - mapfileurl = 'http://people.freebsd.org/~perky/i18n/BIG5HKSCS.TXT' + mapfileurl = 'http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT' def test_main(): test_support.run_unittest(__name__) if __name__ == "__main__": + test_support.use_resources = ['urlfetch'] test_main() Modified: python/trunk/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/trunk/Lib/test/test_multibytecodec_support.py (original) +++ python/trunk/Lib/test/test_multibytecodec_support.py Fri Feb 8 18:10:20 2008 @@ -323,9 +323,17 @@ def _testpoint(self, csetch, unich): if (csetch, unich) not in self.pass_enctest: - self.assertEqual(unich.encode(self.encoding), csetch) + try: + self.assertEqual(unich.encode(self.encoding), csetch) + except UnicodeError, exc: + self.fail('Encoding failed while testing %s -> %s: %s' % ( + repr(unich), repr(csetch), exc.reason)) if (csetch, unich) not in self.pass_dectest: - self.assertEqual(unicode(csetch, self.encoding), unich) + try: + self.assertEqual(csetch.decode(self.encoding), unich) + except UnicodeError, exc: + self.fail('Decoding failed while testing %s -> %s: %s' % ( + repr(csetch), repr(unich), exc.reason)) def load_teststring(encoding): from test import cjkencodings_test Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 8 18:10:20 2008 @@ -1118,6 +1118,8 @@ Extension Modules ----------------- +- Updated ``big5hkscs`` codec to the HKSCS revision of 2004. + - #1940: make it possible to use curses.filter() before curses.initscr() as the documentation says. Modified: python/trunk/Modules/cjkcodecs/_codecs_hk.c ============================================================================== --- python/trunk/Modules/cjkcodecs/_codecs_hk.c (original) +++ python/trunk/Modules/cjkcodecs/_codecs_hk.c Fri Feb 8 18:10:20 2008 @@ -26,6 +26,16 @@ return 0; } +/* + * There are four possible pair unicode -> big5hkscs maps as in HKSCS 2004: + * U+00CA U+0304 -> 8862 (U+00CA alone is mapped to 8866) + * U+00CA U+030C -> 8864 + * U+00EA U+0304 -> 88a3 (U+00EA alone is mapped to 88a7) + * U+00EA U+030C -> 88a5 + * These are handled by not mapping tables but a hand-written code. + */ +static const DBCHAR big5hkscs_pairenc_table[4] = {0x8862, 0x8864, 0x88a3, 0x88a5}; + ENCODER(big5hkscs) { while (inleft > 0) { @@ -46,7 +56,27 @@ REQUIRE_OUTBUF(2) if (c < 0x10000) { - TRYMAP_ENC(big5hkscs_bmp, code, c); + TRYMAP_ENC(big5hkscs_bmp, code, c) { + if (code == MULTIC) { + if (inleft >= 2 && + ((c & 0xffdf) == 0x00ca) && + (((*inbuf)[1] & 0xfff7) == 0x0304)) { + code = big5hkscs_pairenc_table[ + ((c >> 4) | + ((*inbuf)[1] >> 3)) & 3]; + insize = 2; + } + else if (inleft < 2 && + !(flags & MBENC_FLUSH)) + return MBERR_TOOFEW; + else { + if (c == 0xca) + code = 0x8866; + else /* c == 0xea */ + code = 0x88a7; + } + } + } else TRYMAP_ENC(big5, code, c); else return 1; } @@ -67,7 +97,7 @@ return 0; } -#define BH2S(c1, c2) (((c1) - 0x88) * (0xfe - 0x40 + 1) + ((c2) - 0x40)) +#define BH2S(c1, c2) (((c1) - 0x87) * (0xfe - 0x40 + 1) + ((c2) - 0x40)) DECODER(big5hkscs) { @@ -96,19 +126,19 @@ int s = BH2S(c, IN2); const unsigned char *hintbase; - assert(0x88 <= c && c <= 0xfe); + assert(0x87 <= c && c <= 0xfe); assert(0x40 <= IN2 && IN2 <= 0xfe); - if (BH2S(0x88, 0x40) <= s && s <= BH2S(0xa0, 0xfe)) { + if (BH2S(0x87, 0x40) <= s && s <= BH2S(0xa0, 0xfe)) { hintbase = big5hkscs_phint_0; - s -= BH2S(0x88, 0x40); + s -= BH2S(0x87, 0x40); } else if (BH2S(0xc6,0xa1) <= s && s <= BH2S(0xc8,0xfe)){ - hintbase = big5hkscs_phint_11939; + hintbase = big5hkscs_phint_12130; s -= BH2S(0xc6, 0xa1); } else if (BH2S(0xf9,0xd6) <= s && s <= BH2S(0xfe,0xfe)){ - hintbase = big5hkscs_phint_21733; + hintbase = big5hkscs_phint_21924; s -= BH2S(0xf9, 0xd6); } else @@ -123,7 +153,17 @@ NEXT(2, 1) } } - else return 2; + else { + switch ((c << 8) | IN2) { + case 0x8862: WRITE2(0x00ca, 0x0304); break; + case 0x8864: WRITE2(0x00ca, 0x030c); break; + case 0x88a3: WRITE2(0x00ea, 0x0304); break; + case 0x88a5: WRITE2(0x00ea, 0x030c); break; + default: return 2; + } + + NEXT(2, 2) /* all decoded codepoints are pairs, above. */ + } } return 0; Modified: python/trunk/Modules/cjkcodecs/mappings_hk.h ============================================================================== --- python/trunk/Modules/cjkcodecs/mappings_hk.h (original) +++ python/trunk/Modules/cjkcodecs/mappings_hk.h Fri Feb 8 18:10:20 2008 @@ -1,262 +1,271 @@ -static const ucs2_t __big5hkscs_decmap[6095] = { -62211,62212,62213,62214,62215,268,62217,209,205,62220,62221,203,8168,62224, -202,62226,62227,62228,62229,270,62231,62232,256,193,461,192,274,201,282,200, -332,211,465,210,62245,7870,62247,7872,202,257,225,462,224,593,275,233,283,232, -299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,476,252,62276,7871,62278, -7873,234,609,62282,62283,41897,4421,U,25866,U,U,20029,28381,40270,37343,U,U, -30517,25745,20250,20264,20392,20822,20852,20892,20964,21153,21160,21307,21326, -21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,23455,23706,24198, -24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,32442,32455,32463, -32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,36711,36718,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29713,31996, -32205,26950,31433,21031,U,U,U,U,37260,30904,37214,32956,U,36107,33014,2535,U, -U,32927,40647,19661,40393,40460,19518,40438,28686,40458,41267,13761,U,28314, -33342,29977,U,18705,39532,39567,40857,31111,33900,7626,1488,10982,20004,20097, -20096,20103,20159,20203,20279,13388,20413,15944,20483,20616,13437,13459,13477, -20870,22789,20955,20988,20997,20105,21113,21136,21287,13767,21417,13649,21424, -13651,21442,21539,13677,13682,13953,21651,21667,21684,21689,21712,21743,21784, -21795,21800,13720,21823,13733,13759,21975,13765,32132,21797,U,3138,3349,20779, -21904,11462,14828,833,36422,19896,38117,16467,32958,30586,11320,14900,18389, -33117,27122,19946,25821,3452,4020,3285,4340,25741,36478,3734,3083,3940,11433, -33366,17619,U,3398,39501,33001,18420,20135,11458,39602,14951,38388,16365, -13574,21191,38868,30920,11588,40302,38933,U,17369,24741,25780,21731,11596, -11210,4215,14843,4207,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,26330,26390,31136,25834,20562,3139,36456,8609,35660,1841,U,18443, -425,16378,22643,11661,U,17864,1276,24727,3916,3478,21881,16571,17338,U,19124, -10854,4253,33194,39157,3484,25465,14846,10101,36288,22177,25724,15939,U,42497, -3593,10959,11465,U,4296,14786,14738,14854,33435,13688,24137,8391,22098,3889, -11442,38688,13500,27709,20027,U,U,30068,11915,8712,42587,36045,3706,3124, -26652,32659,4303,10243,10553,13819,20963,3724,3981,3754,16275,3888,3399,4431, -3660,U,3755,2985,3400,4288,4413,16377,9878,25650,4013,13300,30265,11214,3454, -3455,11345,11349,14872,3736,4295,3886,42546,27472,36050,36249,36042,38314, -21708,33476,21945,U,40643,39974,39606,30558,11758,28992,33133,33004,23580, -25970,33076,14231,21343,32957,37302,3834,3599,3703,3835,13789,19947,13833, -3286,22191,10165,4297,3600,3704,4216,4424,33287,5205,3705,20048,11684,23124, -4125,4126,4341,4342,22428,3601,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,30356,33485,4021,3707,20862,14083,4022,4480,21208,41661, -18906,6202,16759,33404,22681,21096,13850,22333,31666,23400,18432,19244,40743, -18919,39967,39821,23412,12605,22011,13810,22153,20008,22786,7105,63608,38737, -134,20059,20155,13630,23587,24401,24516,14586,25164,25909,27514,27701,27706, -28780,29227,20012,29357,18665,32594,31035,31993,32595,25194,13505,U,25419, -32770,32896,26130,26961,21341,34916,35265,30898,35744,36125,38021,38264,38271, -38376,36367,38886,39029,39118,39134,39267,38928,40060,40479,40644,27503,63751, -20023,135,38429,25143,38050,20539,28158,40051,62842,15817,34959,16718,28791, -23797,19232,20941,13657,23856,24866,35378,36775,37366,29073,26393,29626,12929, -41223,15499,6528,19216,30948,29698,20910,34575,16393,27235,41658,16931,34319, -U,31274,39239,35562,38741,28749,21284,8318,37876,30425,35299,62884,30685, -20131,20464,20668,20015,20247,62891,21556,32139,22674,22736,7606,24210,24217, -24514,10002,25995,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,13305,26905,27203,15459,27903,U,29184,17669,29580,16091,18963,23317, -29881,35715,23716,22165,31379,31724,31939,32364,33528,34199,62924,34960,62926, -36537,62928,36815,34143,39392,37409,62933,36281,5183,16497,17058,23066,U,U,U, -39016,26475,17014,22333,U,34262,18811,33471,28941,19585,28020,23931,27413, -28606,62956,62957,23446,62959,U,32347,23870,23880,23894,15868,14351,23972, -23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,24893, -23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,14851,25570, -25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,26111,26195, -15090,26258,15138,26390,15170,26532,26624,15192,26698,26756,15218,15217,15227, -26889,26947,29276,26980,27039,27013,15292,27094,15325,27237,27252,27249,27266, -15340,27289,15346,27307,27317,27348,27382,27521,27585,27626,27765,27818,15563, -27906,27910,27942,28033,15599,28068,28081,28181,28184,28201,28294,35264,28347, -28386,28378,40831,28392,28393,28452,28468,15686,16193,28545,28606,15722,15733, -29111,23705,15754,28716,15761,28752,28756,28783,28799,28809,805,17345,13809, -3800,16087,22462,28371,28990,22496,13902,27042,35817,23412,31305,22753,38105, -31333,31357,22956,31419,31408,31426,31427,29137,25741,16842,31450,31453,31466, -16879,21682,23553,31499,31573,31529,21262,23806,31650,31599,33692,23476,27775, -31696,33825,31634,U,23840,15789,23653,33938,31738,U,31797,23745,31812,31875, -18562,31910,26237,17784,31945,31943,31974,31860,31987,31989,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,32359,17693,28228,32093, -28374,29837,32137,32171,28981,32179,U,16471,24617,32228,15635,32245,6137, -32229,33645,U,24865,24922,32366,32402,17195,37996,32295,32576,32577,32583, -31030,25296,39393,32663,25425,32675,5729,104,17756,14182,17667,33594,32762, -25737,U,32776,32797,U,32815,41095,27843,32827,32828,32865,10004,18825,26150, -15843,26344,26405,32935,35400,33031,33050,22704,9974,27775,25752,20408,25831, -5258,33304,6238,27219,19045,19093,17530,33321,2829,27218,15742,20473,5373, -34018,33634,27402,18855,13616,6003,15864,33450,26907,63892,16859,34123,33488, -33562,3606,6068,14017,12669,13658,33403,33506,33560,16011,28067,27397,27543, -13774,15807,33565,21996,33669,17675,28069,33708,U,33747,13438,28372,27223, -34138,13462,28226,12015,33880,23524,33905,15827,17636,27303,33866,15541,31064, -U,27542,28279,28227,34014,U,33681,17568,33939,34020,23697,16960,23744,17731, -34100,23282,28313,17703,34163,17686,26559,34326,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34341,34363,34241,28808,34306,5506, -28877,63922,17770,34344,13896,6306,21495,29594,34430,34673,41208,34798,11303, -34737,34778,34831,22113,34412,26710,17935,34885,34886,30176,15801,30180,34910, -34972,18011,34996,34997,25537,35013,30583,30479,35207,35210,U,U,35239,35260, -35365,35303,31012,31421,35484,30611,37374,35472,31321,31465,31546,16271,18195, -31544,29052,35596,35615,21552,21861,35647,35660,35661,35497,19066,35728,35739, -35503,5855,17941,34895,35995,32084,32143,63956,14117,32083,36054,32152,32189, -36114,36099,6416,36059,28764,36113,19657,16080,36265,32770,4116,18826,15228, -33212,28940,31463,36525,36534,36547,37588,36633,36653,33637,33810,36773,37635, -41631,2640,36787,18730,35294,34109,15803,24312,12898,36857,40980,34492,34049, -8997,14720,28375,36919,34108,31422,36961,34156,34315,37032,34579,37060,34534, -37038,U,37223,15088,37289,37316,31916,35123,7817,37390,27807,37441,37474, -21945,U,35526,15515,35596,21979,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,3377,37676,37739,35553,35819,28815,23235,35554,35557, -18789,37444,35820,35897,35839,37747,37979,36540,38277,38310,37926,38304,28662, -17081,9850,34520,4732,15918,18911,27676,38523,38550,16748,38563,28373,25050, -38582,30965,35552,38589,21452,18849,27832,628,25616,37039,37093,19153,6421, -13066,38705,34370,38710,18959,17725,17797,19177,28789,23361,38683,U,37333, -38743,23370,37355,38751,37925,20688,12471,12476,38793,38815,38833,38846,38848, -38866,38880,21612,38894,29724,37939,U,38901,37917,31098,19153,38964,38963, -38987,39014,15118,29045,15697,1584,16732,22278,39114,39095,39112,39111,19199, -27943,5843,21936,39137,39142,39148,37752,39225,18985,19314,38999,39173,39413, -39436,39483,39440,39512,22309,14020,37041,39893,39648,39650,39685,39668,19470, -39700,39725,34304,20532,39732,27048,14531,12413,39760,39744,40254,23109,6243, -39822,16971,39938,39935,39948,40552,40404,40887,41362,41387,41185,41251,41439, -40318,40323,41268,40462,26760,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,40388,8539,41363,41504,6459,41523,40249,41145,41652,40592, -40597,40606,40610,19764,40618,40623,17252,40641,15200,14821,15645,20274,14270, -35883,40706,40712,19350,37924,28066,40727,U,40761,22175,22154,40773,39352, -37003,38898,33919,40802,40809,31452,40846,29206,19390,18805,18875,29047,18936, -17224,19025,29598,35802,6394,31135,35198,36406,37737,37875,35396,37612,37761, -37835,35180,17593,29207,16107,30578,31299,28880,17523,17400,29054,6127,28835, -6334,13721,16071,6277,21551,6136,14114,5883,6201,14049,6004,6353,24395,14115, -5824,22363,18981,5118,4776,5062,5302,34051,13990,U,33877,18836,29029,15921, -21852,16123,28754,17652,14062,39325,28454,26617,14131,15381,15847,22636,6434, -26640,16471,14143,16609,16523,16655,27681,21707,22174,26289,22162,4063,2984, -3597,37830,35603,37788,20216,20779,14361,17462,20156,1125,895,20299,20362, -22097,23144,427,971,14745,778,1044,13365,20265,704,36531,629,35546,524,20120, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,20685, -20749,20386,20227,18958,16010,20290,20526,20588,20609,20428,20453,20568,20732, -U,U,U,U,28278,13717,15929,16063,28018,6276,16009,20904,20931,1504,17629,1187, -1170,1169,36218,35484,1806,21081,21156,2163,21217,U,18042,29068,17292,3104, -18860,4324,27089,3613,U,16094,29849,29716,29782,29592,19342,19132,16525,21456, -13700,29199,16585,21940,837,21709,3014,22301,37469,38644,37734,22493,22413, -22399,13886,22731,23193,35398,5882,5999,5904,23084,22968,37519,23166,23247, -23058,22854,6643,6241,17045,14069,27909,29763,23073,24195,23169,35799,1043, -37856,29836,4867,28933,18802,37896,35323,37821,14240,23582,23710,24158,24136, -6550,6524,15086,24269,23375,6403,6404,14081,6304,14045,5886,14035,33066,35399, -7610,13426,35240,24332,24334,6439,6059,23147,5947,23364,34324,30205,34912, -24702,10336,9771,24539,16056,9647,9662,37000,28531,25024,62,70,9755,24985, -24984,24693,11419,11527,18132,37197,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,25713,18021,11114,14889,11042,13392,39146,11896, -25399,42075,25782,25393,25553,18915,11623,25252,11425,25659,25963,26994,15348, -12430,12973,18825,12971,21773,13024,6361,37951,26318,12937,12723,15072,16784, -21892,35618,21903,5884,21851,21541,30958,12547,6186,12852,13412,12815,12674, -17097,26254,27940,26219,19347,26160,30832,7659,26211,13010,13025,26142,22642, -14545,14394,14268,15257,14242,13310,29904,15254,26511,17962,26806,26654,15300, -27326,14435,14293,17543,27187,27218,27337,27397,6418,25873,26776,27212,15319, -27258,27479,16320,15514,37792,37618,35818,35531,37513,32798,35292,37991,28069, -28427,18924,U,16255,15759,28164,16444,23101,28170,22599,27940,30786,28987, -17178,17014,28913,29264,29319,29332,18319,18213,20857,19108,1515,29818,16120, -13919,19018,18711,24545,16134,16049,19167,35875,16181,24743,16115,29900,29756, -37767,29751,17567,28138,17745,30083,16227,19673,19718,16216,30037,30323,42438, -15129,29800,35532,18859,18830,15099,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,15821,19022,16127,18885,18675,37370,22322,37698, -35555,6244,20703,21025,20967,30584,12850,30478,30479,30587,18071,14209,14942, -18672,29752,29851,16063,19130,19143,16584,19094,25006,37639,21889,30750,30861, -30856,30930,29648,31065,30529,22243,16654,U,33942,31141,27181,16122,31290, -31220,16750,5862,16690,37429,31217,3404,18828,665,15802,5998,13719,21867, -13680,13994,468,3085,31458,23129,9973,23215,23196,23053,603,30960,23082,23494, -31486,16889,31837,31853,16913,23475,24252,24230,31949,18937,6064,31886,31868, -31918,27314,32220,32263,32211,32590,25185,24924,31560,32151,24194,17002,27509, -2326,26582,78,13775,22468,25618,25592,18786,32733,31527,2092,23273,23875, -31500,24078,39398,34373,39523,27164,13375,14818,18935,26029,39455,26016,33920, -28967,27857,17642,33079,17410,32966,33033,33090,26548,39107,27202,33378,33381, -27217,33875,28071,34320,29211,23174,16767,6208,23339,6305,23268,6360,34464, -63932,15759,34861,29730,23042,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,34926,20293,34951,35007,35046,35173,35149,22147,35156, -30597,30596,35829,35801,35740,35321,16045,33955,18165,18127,14322,35389,35356, -37960,24397,37419,17028,26068,28969,28868,6213,40301,35999,36073,32220,22938, -30659,23024,17262,14036,36394,36519,19465,36656,36682,17140,27736,28603,8993, -18587,28537,28299,6106,39913,14005,18735,37051,U,21873,18694,37307,37892, -35403,16482,35580,37927,35869,35899,34021,35371,38297,38311,38295,38294,36148, -29765,16066,18687,19010,17386,16103,12837,38543,36583,36454,36453,16076,18925, -19064,16366,29714,29803,16124,38721,37040,26695,18973,37011,22495,U,37736, -35209,35878,35631,25534,37562,23313,35689,18748,29689,16923,38811,38769,39224, -3878,24001,35781,19122,38943,38106,37622,38359,37349,17600,35664,19047,35684, -39132,35397,16128,37418,18725,33812,39227,39245,31494,15869,39323,19311,39338, -39516,35685,22728,27279,39457,23294,39471,39153,19344,39240,39356,19389,19351, -37757,22642,4866,22562,18872,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,5352,30788,10015,15800,26821,15741,37976,14631,24912, -10113,10603,24839,40015,40019,40059,39989,39952,39807,39887,40493,39839,41461, -41214,40225,19630,16644,40472,19632,40204,41396,41197,41203,39215,40357,33981, -28178,28639,27522,34300,17715,28068,28292,28144,33824,34286,28160,14295,24676, -31202,13724,13888,18733,18910,15714,37851,37566,37704,703,30905,37495,37965, -20452,13376,36964,21853,30781,30804,30902,30795,5975,12745,18753,13978,20338, -28634,28633,U,28702,21524,16821,22459,22771,22410,40214,22487,28980,13487, -16812,29163,27712,20375,U,6069,35401,24844,23246,23051,17084,17544,14124, -19323,35324,37819,37816,6358,3869,33906,27840,5139,17146,11302,17345,22932, -15799,26433,32168,24923,24740,18873,18827,35322,37605,29666,16105,29876,35683, -6303,16097,19123,27352,29683,29691,16086,19006,19092,6105,19046,935,5156, -18917,29768,18710,28837,18806,37508,29670,37727,1278,37681,35534,35350,37766, -35815,21973,18741,35458,29035,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,18755,3327,22180,1562,3051,3256,21762,31172,6138,32254, -5826,19024,6226,17710,37889,14090,35520,18861,22960,6335,6275,29828,23201, -14050,15707,14000,37471,23161,35457,6242,37748,15565,2740,19094,14730,20724, -15721,15692,5020,29045,17147,33304,28175,37092,17643,27991,32335,28775,27823, -15574,16365,15917,28162,28428,15727,1013,30033,14012,13512,18048,16090,18545, -22980,37486,18750,36673,35868,27584,22546,22472,14038,5202,28926,17250,19057, -12259,4784,9149,26809,26983,5016,13541,31732,14047,35459,14294,13306,19615, -27162,13997,27831,33854,17631,17614,27942,27985,27778,28638,28439,28937,33597, -5946,33773,27776,28755,6107,22921,23170,6067,23137,23153,6405,16892,14125, -23023,5948,14023,29070,37776,26266,17061,23150,23083,17043,27179,16121,30518, -17499,17098,28957,16985,35297,20400,27944,23746,17614,32333,17341,27148,16982, -4868,28838,28979,17385,15781,27871,63525,19023,32357,23019,23855,15859,24412, -19037,6111,32164,33830,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,21637,15098,13056,532,22398,2261,1561,16357,8094,41654,28675, -37211,23920,29583,31955,35417,37920,20424,32743,29389,29456,31476,29496,29497, -22262,29505,29512,16041,31512,36972,29173,18674,29665,33270,16074,30476,16081, -27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018, -30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,20316, -29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495, -23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,30801,30822,33864, -21813,31027,26627,31026,16643,16649,31121,31129,36795,31238,36796,16743,31377, -16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,31611,31762,31771, -16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,3279,32207,32212, -32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,32817,32852,15820, -22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,33044,17409,15161, -33110,33113,33114,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,17427,22586,33148,33156,17445,33171,17453,33189,22511,33217,33252, -33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,27018,33797,28917, -33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,17723,34159,34160, -34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,34990,35071,35108, -35143,35217,31079,35369,35384,35476,35508,35921,36052,36082,36124,18328,22623, -36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,36558,36578,36580, -36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,37395,18718,37416, -37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,37699,37764,37805, -18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,38009,38189,38306, -18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,22100,19172,24808, -39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,39261,39266,19312, -39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,19565,39968,14191, -7106,40265,39994,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,40702,22096,40339,40381,40384,40444,38134,36790,40571,40620,40625, -40637,40646,38108,40674,40689,40696,31432,40772,148,695,928,26906,38083,22956, -1239,22592,38081,14265,1493,1557,1654,5818,22359,29043,2754,2765,3007,21610, -63547,3019,21662,3067,3131,3155,3173,3196,24807,3213,22138,3253,3293,3309, -3439,3506,3528,26965,39983,34725,3588,3598,3799,3984,3885,3699,23584,4028, -24075,4188,4175,4214,26398,4219,4232,4246,13895,4287,4307,4399,4411,21348, -33965,4835,4981,4918,35713,5495,5657,6083,6087,20088,28859,6189,6506,6701, -6725,7210,7280,7340,7880,25283,7893,7957,29080,26709,8261,27113,14024,8828, -9175,9210,10026,10353,10575,33533,10599,10643,10965,35237,10984,36768,11022, -38840,11071,38983,39613,11340,U,11400,11447,23528,11528,11538,11703,11669, -11842,12148,12236,12339,12390,13087,13278,24497,26184,26303,31353,13671,13811, -U,18874,U,13850,14102,U,838,22709,26382,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26904,15015,30295,24546,15889,16057,30206,8346, -18640,19128,16665,35482,17134,17165,16443,17204,17302,19013,1482,20946,1553, -22943,7848,15294,15615,17412,17622,22408,18036,14747,18223,34280,39369,14178, -8643,35678,35662,U,18450,18683,18965,29193,19136,3192,22885,20133,20358,1913, -36570,20524,21135,22335,29041,21145,21529,16202,19111,21948,21574,21614,27474, -U,13427,21823,30258,21854,18200,21858,21862,22471,18751,22621,20582,13563, -13260,U,22787,18300,35144,23214,23433,23558,7568,22433,29009,U,24834,31762, -36950,25010,20378,35682,25602,25674,23899,27639,U,25732,6428,35562,18934, -25736,16367,25874,19392,26047,26293,10011,37989,22497,24981,23079,63693,U, -22201,17697,26364,20074,18740,38486,28047,27837,13848,35191,26521,26734,25617, -26718,U,26823,31554,37056,2577,26918,U,26937,31301,U,27130,39462,27181,13919, -25705,33,31107,27188,27483,23852,13593,U,27549,18128,27812,30011,34917,28078, -22710,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -14108,9613,28747,29133,15444,29312,29317,37505,8570,29323,37680,29414,18896, -27705,38047,29776,3832,34855,35061,10534,33907,6065,28344,18986,6176,14756, -14009,U,U,17727,26294,40109,39076,35139,30668,30808,22230,16607,5642,14753, -14127,33000,5061,29101,33638,31197,37288,U,19639,28847,35243,31229,31242, -31499,32102,16762,31555,31102,32777,28597,41695,27139,33560,21410,28167,37823, -26678,38749,33135,32803,27061,5101,12847,32840,23941,35888,32899,22293,38947, -35145,23979,18824,26046,27093,21458,19109,16257,15377,26422,32912,33012,33070, -8097,33103,33161,33199,33306,33542,33583,33674,13770,33896,34474,18682,25574, -35158,30728,37461,35256,17394,35303,17375,35304,35654,35796,23032,35849,U, -36805,37100,U,37136,37180,15863,37214,19146,36816,29327,22155,38119,38377, +static const ucs2_t __big5hkscs_decmap[6219] = { +17392,19506,17923,17830,17784,29287,19831,17843,31921,19682,31941,15253,18230, +18244,19527,19520,17087,13847,29522,28299,28882,19543,41809,18255,17882,19589, +31852,19719,19108,18081,27427,29221,23124,6755,15878,16225,26189,22267,U, +32149,22813,35769,15860,38708,31727,23515,7518,23204,13861,40624,23249,23479, +23804,26478,34195,39237,29793,29853,12736,12737,12738,12739,12740,268,12741, +209,205,12742,12743,203,8168,12744,202,12745,12746,12747,12748,270,12749, +12750,256,193,461,192,274,201,282,200,332,211,465,210,U,7870,U,7872,202,257, +225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468, +249,470,472,474,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,476,252,U,7871,U,7873,234,609,9178,9179,41897,4421,U,25866,U,U,20029, +28381,40270,37343,U,U,30517,25745,20250,20264,20392,20822,20852,20892,20964, +21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398, +23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420, +32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810, +36710,36711,36718,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,29713,31996,32205,26950,31433,21031,U,U,U,U,37260,30904,37214,32956,U, +36107,33014,2535,U,U,32927,40647,19661,40393,40460,19518,40438,28686,40458, +41267,13761,U,28314,33342,29977,U,18705,39532,39567,40857,31111,33900,7626, +1488,10982,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483, +20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287, +13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684, +21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,32132, +21797,U,3138,3349,20779,21904,11462,14828,833,36422,19896,38117,16467,32958, +30586,11320,14900,18389,33117,27122,19946,25821,3452,4020,3285,4340,25741, +36478,3734,3083,3940,11433,33366,17619,U,3398,39501,33001,18420,20135,11458, +39602,14951,38388,16365,13574,21191,38868,30920,11588,40302,38933,U,17369, +24741,25780,21731,11596,11210,4215,14843,4207,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26330,26390,31136,25834,20562,3139,36456, +8609,35660,1841,U,18443,425,16378,22643,11661,U,17864,1276,24727,3916,3478, +21881,16571,17338,U,19124,10854,4253,33194,39157,3484,25465,14846,10101,36288, +22177,25724,15939,U,42497,3593,10959,11465,U,4296,14786,14738,14854,33435, +13688,24137,8391,22098,3889,11442,38688,13500,27709,20027,U,U,30068,11915, +8712,42587,36045,3706,3124,26652,32659,4303,10243,10553,13819,20963,3724,3981, +3754,16275,3888,3399,4431,3660,U,3755,2985,3400,4288,4413,16377,9878,25650, +4013,13300,30265,11214,3454,3455,11345,11349,14872,3736,4295,3886,42546,27472, +36050,36249,36042,38314,21708,33476,21945,U,40643,39974,39606,30558,11758, +28992,33133,33004,23580,25970,33076,14231,21343,32957,37302,3834,3599,3703, +3835,13789,19947,13833,3286,22191,10165,4297,3600,3704,4216,4424,33287,5205, +3705,20048,11684,23124,4125,4126,4341,4342,22428,3601,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30356,33485,4021,3707,20862,14083, +4022,4480,21208,41661,18906,6202,16759,33404,22681,21096,13850,22333,31666, +23400,18432,19244,40743,18919,39967,39821,23412,12605,22011,13810,22153,20008, +22786,7105,63608,38737,134,20059,20155,13630,23587,24401,24516,14586,25164, +25909,27514,27701,27706,28780,29227,20012,29357,18665,32594,31035,31993,32595, +25194,13505,U,25419,32770,32896,26130,26961,21341,34916,35265,30898,35744, +36125,38021,38264,38271,38376,36367,38886,39029,39118,39134,39267,38928,40060, +40479,40644,27503,63751,20023,135,38429,25143,38050,20539,28158,40051,40870, +15817,34959,16718,28791,23797,19232,20941,13657,23856,24866,35378,36775,37366, +29073,26393,29626,12929,41223,15499,6528,19216,30948,29698,20910,34575,16393, +27235,41658,16931,34319,2671,31274,39239,35562,38741,28749,21284,8318,37876, +30425,35299,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674, +22736,7606,24210,24217,24514,10002,25995,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,13305,26905,27203,15459,27903,U,29184,17669, +29580,16091,18963,23317,29881,35715,23716,22165,31379,31724,31939,32364,33528, +34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,36281,5183, +16497,17058,23066,U,U,U,39016,26475,17014,22333,U,34262,18811,33471,28941, +19585,28020,23931,27413,28606,40877,40878,23446,40879,26343,32347,28247,31178, +15752,17603,12886,10134,17306,17718,U,23765,15130,35577,23672,15634,13649, +23928,40882,29015,17752,16620,7715,19575,14712,13386,420,27713,35532,20404, +569,22975,33132,38998,39162,24379,2975,U,8641,35181,16642,18107,36985,16135, +40883,41397,16632,14294,18167,27718,16764,34482,29695,17773,14548,21658,17761, +17691,19849,19579,19830,17898,16328,19215,13921,17630,17597,16877,23870,23880, +23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612, +14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317, +25368,14840,22193,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999, +25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698, +26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325, +27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585, +27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184, +28201,28294,35264,28347,28386,28378,40831,28392,28393,28452,28468,15686,16193, +28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799, +28809,805,17345,13809,3800,16087,22462,28371,28990,22496,13902,27042,35817, +23412,31305,22753,38105,31333,31357,22956,31419,31408,31426,31427,29137,25741, +16842,31450,31453,31466,16879,21682,23553,31499,31573,31529,21262,23806,31650, +31599,33692,23476,27775,31696,33825,31634,U,23840,15789,23653,33938,31738,U, +31797,23745,31812,31875,18562,31910,26237,17784,31945,31943,31974,31860,31987, +31989,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +32359,17693,28228,32093,28374,29837,32137,32171,28981,32179,U,16471,24617, +32228,15635,32245,6137,32229,33645,U,24865,24922,32366,32402,17195,37996, +32295,32576,32577,32583,31030,25296,39393,32663,25425,32675,5729,104,17756, +14182,17667,33594,32762,25737,U,32776,32797,U,32815,41095,27843,32827,32828, +32865,10004,18825,26150,15843,26344,26405,32935,35400,33031,33050,22704,9974, +27775,25752,20408,25831,5258,33304,6238,27219,19045,19093,17530,33321,2829, +27218,15742,20473,5373,34018,33634,27402,18855,13616,6003,15864,33450,26907, +63892,16859,34123,33488,33562,3606,6068,14017,12669,13658,33403,33506,33560, +16011,28067,27397,27543,13774,15807,33565,21996,33669,17675,28069,33708,U, +33747,13438,28372,27223,34138,13462,28226,12015,33880,23524,33905,15827,17636, +27303,33866,15541,31064,U,27542,28279,28227,34014,U,33681,17568,33939,34020, +23697,16960,23744,17731,34100,23282,28313,17703,34163,17686,26559,34326,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34341,34363, +34241,28808,34306,5506,28877,63922,17770,34344,13896,6306,21495,29594,34430, +34673,41208,34798,11303,34737,34778,34831,22113,34412,26710,17935,34885,34886, +30176,15801,30180,34910,34972,18011,34996,34997,25537,35013,30583,30479,35207, +35210,U,U,35239,35260,35365,35303,31012,31421,35484,30611,37374,35472,31321, +31465,31546,16271,18195,31544,29052,35596,35615,21552,21861,35647,35660,35661, +35497,19066,35728,35739,35503,5855,17941,34895,35995,32084,32143,63956,14117, +32083,36054,32152,32189,36114,36099,6416,36059,28764,36113,19657,16080,36265, +32770,4116,18826,15228,33212,28940,31463,36525,36534,36547,37588,36633,36653, +33637,33810,36773,37635,41631,2640,36787,18730,35294,34109,15803,24312,12898, +36857,40980,34492,34049,8997,14720,28375,36919,34108,31422,36961,34156,34315, +37032,34579,37060,34534,37038,U,37223,15088,37289,37316,31916,35123,7817, +37390,27807,37441,37474,21945,U,35526,15515,35596,21979,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,3377,37676,37739,35553,35819, +28815,23235,35554,35557,18789,37444,35820,35897,35839,37747,37979,36540,38277, +38310,37926,38304,28662,17081,9850,34520,4732,15918,18911,27676,38523,38550, +16748,38563,28373,25050,38582,30965,35552,38589,21452,18849,27832,628,25616, +37039,37093,19153,6421,13066,38705,34370,38710,18959,17725,17797,19177,28789, +23361,38683,U,37333,38743,23370,37355,38751,37925,20688,12471,12476,38793, +38815,38833,38846,38848,38866,38880,21612,38894,29724,37939,U,38901,37917, +31098,19153,38964,38963,38987,39014,15118,29045,15697,1584,16732,22278,39114, +39095,39112,39111,19199,27943,5843,21936,39137,39142,39148,37752,39225,18985, +19314,38999,39173,39413,39436,39483,39440,39512,22309,14020,37041,39893,39648, +39650,39685,39668,19470,39700,39725,34304,20532,39732,27048,14531,12413,39760, +39744,40254,23109,6243,39822,16971,39938,39935,39948,40552,40404,40887,41362, +41387,41185,41251,41439,40318,40323,41268,40462,26760,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40388,8539,41363,41504,6459,41523, +40249,41145,41652,40592,40597,40606,40610,19764,40618,40623,17252,40641,15200, +14821,15645,20274,14270,35883,40706,40712,19350,37924,28066,40727,U,40761, +22175,22154,40773,39352,37003,38898,33919,40802,40809,31452,40846,29206,19390, +18805,18875,29047,18936,17224,19025,29598,35802,6394,31135,35198,36406,37737, +37875,35396,37612,37761,37835,35180,17593,29207,16107,30578,31299,28880,17523, +17400,29054,6127,28835,6334,13721,16071,6277,21551,6136,14114,5883,6201,14049, +6004,6353,24395,14115,5824,22363,18981,5118,4776,5062,5302,34051,13990,U, +33877,18836,29029,15921,21852,16123,28754,17652,14062,39325,28454,26617,14131, +15381,15847,22636,6434,26640,16471,14143,16609,16523,16655,27681,21707,22174, +26289,22162,4063,2984,3597,37830,35603,37788,20216,20779,14361,17462,20156, +1125,895,20299,20362,22097,23144,427,971,14745,778,1044,13365,20265,704,36531, +629,35546,524,20120,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,20685,20749,20386,20227,18958,16010,20290,20526,20588,20609,20428, +20453,20568,20732,U,U,U,U,28278,13717,15929,16063,28018,6276,16009,20904, +20931,1504,17629,1187,1170,1169,36218,35484,1806,21081,21156,2163,21217,U, +18042,29068,17292,3104,18860,4324,27089,3613,U,16094,29849,29716,29782,29592, +19342,19132,16525,21456,13700,29199,16585,21940,837,21709,3014,22301,37469, +38644,37734,22493,22413,22399,13886,22731,23193,35398,5882,5999,5904,23084, +22968,37519,23166,23247,23058,22854,6643,6241,17045,14069,27909,29763,23073, +24195,23169,35799,1043,37856,29836,4867,28933,18802,37896,35323,37821,14240, +23582,23710,24158,24136,6550,6524,15086,24269,23375,6403,6404,14081,6304, +14045,5886,14035,33066,35399,7610,13426,35240,24332,24334,6439,6059,23147, +5947,23364,34324,30205,34912,24702,10336,9771,24539,16056,9647,9662,37000, +28531,25024,62,70,9755,24985,24984,24693,11419,11527,18132,37197,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25713,18021,11114, +14889,11042,13392,39146,11896,25399,42075,25782,25393,25553,18915,11623,25252, +11425,25659,25963,26994,15348,12430,12973,18825,12971,21773,13024,6361,37951, +26318,12937,12723,15072,16784,21892,35618,21903,5884,21851,21541,30958,12547, +6186,12852,13412,12815,12674,17097,26254,27940,26219,19347,26160,30832,7659, +26211,13010,13025,26142,22642,14545,14394,14268,15257,14242,13310,29904,15254, +26511,17962,26806,26654,15300,27326,14435,14293,17543,27187,27218,27337,27397, +6418,25873,26776,27212,15319,27258,27479,16320,15514,37792,37618,35818,35531, +37513,32798,35292,37991,28069,28427,18924,U,16255,15759,28164,16444,23101, +28170,22599,27940,30786,28987,17178,17014,28913,29264,29319,29332,18319,18213, +20857,19108,1515,29818,16120,13919,19018,18711,24545,16134,16049,19167,35875, +16181,24743,16115,29900,29756,37767,29751,17567,28138,17745,30083,16227,19673, +19718,16216,30037,30323,42438,15129,29800,35532,18859,18830,15099,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,15821,19022,16127, +18885,18675,37370,22322,37698,35555,6244,20703,21025,20967,30584,12850,30478, +30479,30587,18071,14209,14942,18672,29752,29851,16063,19130,19143,16584,19094, +25006,37639,21889,30750,30861,30856,30930,29648,31065,30529,22243,16654,U, +33942,31141,27181,16122,31290,31220,16750,5862,16690,37429,31217,3404,18828, +665,15802,5998,13719,21867,13680,13994,468,3085,31458,23129,9973,23215,23196, +23053,603,30960,23082,23494,31486,16889,31837,31853,16913,23475,24252,24230, +31949,18937,6064,31886,31868,31918,27314,32220,32263,32211,32590,25185,24924, +31560,32151,24194,17002,27509,2326,26582,78,13775,22468,25618,25592,18786, +32733,31527,2092,23273,23875,31500,24078,39398,34373,39523,27164,13375,14818, +18935,26029,39455,26016,33920,28967,27857,17642,33079,17410,32966,33033,33090, +26548,39107,27202,33378,33381,27217,33875,28071,34320,29211,23174,16767,6208, +23339,6305,23268,6360,34464,63932,15759,34861,29730,23042,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34926,20293,34951,35007,35046, +35173,35149,22147,35156,30597,30596,35829,35801,35740,35321,16045,33955,18165, +18127,14322,35389,35356,37960,24397,37419,17028,26068,28969,28868,6213,40301, +35999,36073,32220,22938,30659,23024,17262,14036,36394,36519,19465,36656,36682, +17140,27736,28603,8993,18587,28537,28299,6106,39913,14005,18735,37051,U,21873, +18694,37307,37892,35403,16482,35580,37927,35869,35899,34021,35371,38297,38311, +38295,38294,36148,29765,16066,18687,19010,17386,16103,12837,38543,36583,36454, +36453,16076,18925,19064,16366,29714,29803,16124,38721,37040,26695,18973,37011, +22495,U,37736,35209,35878,35631,25534,37562,23313,35689,18748,29689,16923, +38811,38769,39224,3878,24001,35781,19122,38943,38106,37622,38359,37349,17600, +35664,19047,35684,39132,35397,16128,37418,18725,33812,39227,39245,31494,15869, +39323,19311,39338,39516,35685,22728,27279,39457,23294,39471,39153,19344,39240, +39356,19389,19351,37757,22642,4866,22562,18872,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,5352,30788,10015,15800,26821,15741, +37976,14631,24912,10113,10603,24839,40015,40019,40059,39989,39952,39807,39887, +40493,39839,41461,41214,40225,19630,16644,40472,19632,40204,41396,41197,41203, +39215,40357,33981,28178,28639,27522,34300,17715,28068,28292,28144,33824,34286, +28160,14295,24676,31202,13724,13888,18733,18910,15714,37851,37566,37704,703, +30905,37495,37965,20452,13376,36964,21853,30781,30804,30902,30795,5975,12745, +18753,13978,20338,28634,28633,U,28702,21524,16821,22459,22771,22410,40214, +22487,28980,13487,16812,29163,27712,20375,U,6069,35401,24844,23246,23051, +17084,17544,14124,19323,35324,37819,37816,6358,3869,33906,27840,5139,17146, +11302,17345,22932,15799,26433,32168,24923,24740,18873,18827,35322,37605,29666, +16105,29876,35683,6303,16097,19123,27352,29683,29691,16086,19006,19092,6105, +19046,935,5156,18917,29768,18710,28837,18806,37508,29670,37727,1278,37681, +35534,35350,37766,35815,21973,18741,35458,29035,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,18755,3327,22180,1562,3051,3256,21762, +31172,6138,32254,5826,19024,6226,17710,37889,14090,35520,18861,22960,6335, +6275,29828,23201,14050,15707,14000,37471,23161,35457,6242,37748,15565,2740, +19094,14730,20724,15721,15692,5020,29045,17147,33304,28175,37092,17643,27991, +32335,28775,27823,15574,16365,15917,28162,28428,15727,1013,30033,14012,13512, +18048,16090,18545,22980,37486,18750,36673,35868,27584,22546,22472,14038,5202, +28926,17250,19057,12259,4784,9149,26809,26983,5016,13541,31732,14047,35459, +14294,13306,19615,27162,13997,27831,33854,17631,17614,27942,27985,27778,28638, +28439,28937,33597,5946,33773,27776,28755,6107,22921,23170,6067,23137,23153, +6405,16892,14125,23023,5948,14023,29070,37776,26266,17061,23150,23083,17043, +27179,16121,30518,17499,17098,28957,16985,35297,20400,27944,23746,17614,32333, +17341,27148,16982,4868,28838,28979,17385,15781,27871,63525,19023,32357,23019, +23855,15859,24412,19037,6111,32164,33830,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21637,15098,13056,532,22398,2261,1561,16357, +8094,41654,28675,37211,23920,29583,31955,35417,37920,20424,32743,29389,29456, +31476,29496,29497,22262,29505,29512,16041,31512,36972,29173,18674,29665,33270, +16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907, +16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324, +16348,30330,20316,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787, +30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791, +30801,30822,33864,21813,31027,26627,31026,16643,16649,31121,31129,36795,31238, +36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596, +31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864, +3279,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814, +32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048, +33044,17409,15161,33110,33113,33114,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,17427,22586,33148,33156,17445,33171,17453,33189, +22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505, +27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130, +17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943, +34990,35071,35108,35143,35217,31079,35369,35384,35476,35508,35921,36052,36082, +36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487, +36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136, +37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629, +37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972, +38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850, +22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234, +39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924, +19565,39968,14191,7106,40265,39994,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,40702,22096,40339,40381,40384,40444,38134,36790, +40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,148,695,928, +26906,38083,22956,1239,22592,38081,14265,1493,1557,1654,5818,22359,29043,2754, +2765,3007,21610,63547,3019,21662,3067,3131,3155,3173,3196,24807,3213,22138, +3253,3293,3309,3439,3506,3528,26965,39983,34725,3588,3598,3799,3984,3885,3699, +23584,4028,24075,4188,4175,4214,26398,4219,4232,4246,13895,4287,4307,4399, +4411,21348,33965,4835,4981,4918,35713,5495,5657,6083,6087,20088,28859,6189, +6506,6701,6725,7210,7280,7340,7880,25283,7893,7957,29080,26709,8261,27113, +14024,8828,9175,9210,10026,10353,10575,33533,10599,10643,10965,35237,10984, +36768,11022,38840,11071,38983,39613,11340,U,11400,11447,23528,11528,11538, +11703,11669,11842,12148,12236,12339,12390,13087,13278,24497,26184,26303,31353, +13671,13811,U,18874,U,13850,14102,U,838,22709,26382,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26904,15015,30295,24546,15889,16057, +30206,8346,18640,19128,16665,35482,17134,17165,16443,17204,17302,19013,1482, +20946,1553,22943,7848,15294,15615,17412,17622,22408,18036,14747,18223,34280, +39369,14178,8643,35678,35662,U,18450,18683,18965,29193,19136,3192,22885,20133, +20358,1913,36570,20524,21135,22335,29041,21145,21529,16202,19111,21948,21574, +21614,27474,U,13427,21823,30258,21854,18200,21858,21862,22471,18751,22621, +20582,13563,13260,U,22787,18300,35144,23214,23433,23558,7568,22433,29009,U, +24834,31762,36950,25010,20378,35682,25602,25674,23899,27639,U,25732,6428, +35562,18934,25736,16367,25874,19392,26047,26293,10011,37989,22497,24981,23079, +63693,U,22201,17697,26364,20074,18740,38486,28047,27837,13848,35191,26521, +26734,25617,26718,U,26823,31554,37056,2577,26918,U,26937,31301,U,27130,39462, +27181,13919,25705,33,31107,27188,27483,23852,13593,U,27549,18128,27812,30011, +34917,28078,22710,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +U,U,U,U,14108,9613,28747,29133,15444,29312,29317,37505,8570,29323,37680,29414, +18896,27705,38047,29776,3832,34855,35061,10534,33907,6065,28344,18986,6176, +14756,14009,U,U,17727,26294,40109,39076,35139,30668,30808,22230,16607,5642, +14753,14127,33000,5061,29101,33638,31197,37288,U,19639,28847,35243,31229, +31242,31499,32102,16762,31555,31102,32777,28597,41695,27139,33560,21410,28167, +37823,26678,38749,33135,32803,27061,5101,12847,32840,23941,35888,32899,22293, +38947,35145,23979,18824,26046,27093,21458,19109,16257,15377,26422,32912,33012, +33070,8097,33103,33161,33199,33306,33542,33583,33674,13770,33896,34474,18682, +25574,35158,30728,37461,35256,17394,35303,17375,35304,35654,35796,23032,35849, +U,36805,37100,U,37136,37180,15863,37214,19146,36816,29327,22155,38119,38377, 38320,38328,38706,39121,39241,39274,39363,39464,39694,40282,40347,32415,40696, 40739,19620,38215,41619,29090,41727,19857,36882,42443,19868,3228,36798,21953, U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,36794, @@ -277,7 +286,7 @@ 19972,13687,23309,27826,21351,13996,14812,21373,13989,17944,22682,19310,33325, 21579,22442,23189,2425,U,14930,9317,29556,40620,19721,39917,15614,40752,19547, 20393,38302,40926,33884,15798,29362,26547,14112,25390,32037,16119,15916,14890, -36872,21196,15988,13946,17897,1166,30272,23280,3766,30842,18358,22695,16575, +36872,21196,15988,13946,17897,1166,30272,23280,3766,30842,32558,22695,16575, 22140,39819,23924,30292,42036,40581,19681,U,14331,24857,12506,17394,U,22109, 4777,22439,18787,40454,21044,28846,13741,U,40316,31830,39737,22494,5996,23635, 25811,38096,25397,29028,34477,3368,27938,19170,3441,U,20990,7951,23950,38659, @@ -327,9 +336,9 @@ 1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067, 1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081, 1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096, -1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,63461,204,20058,138,20994, -63466,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, -63467,20872,63469,30215,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,204,20058,138,20994, +17553,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, +40880,20872,40881,30215,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U, U,U,U,U,U,U,U,U,U,U,U,U,U,65506,65508,65287,65282,12849,8470,8481,12443,12444, 11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943, 11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991, @@ -417,67 +426,68 @@ },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 -},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, -0,0},{__big5hkscs_decmap+0,64,170},{__big5hkscs_decmap+107,64,254},{ -__big5hkscs_decmap+298,64,254},{__big5hkscs_decmap+489,64,253},{ -__big5hkscs_decmap+679,64,220},{__big5hkscs_decmap+836,96,254},{ -__big5hkscs_decmap+995,64,254},{__big5hkscs_decmap+1186,64,253},{ -__big5hkscs_decmap+1376,64,254},{__big5hkscs_decmap+1567,64,254},{ -__big5hkscs_decmap+1758,64,254},{__big5hkscs_decmap+1949,64,254},{ -__big5hkscs_decmap+2140,64,254},{__big5hkscs_decmap+2331,64,254},{ -__big5hkscs_decmap+2522,64,254},{__big5hkscs_decmap+2713,64,254},{ -__big5hkscs_decmap+2904,64,254},{__big5hkscs_decmap+3095,64,254},{ -__big5hkscs_decmap+3286,64,254},{__big5hkscs_decmap+3477,64,254},{ -__big5hkscs_decmap+3668,64,254},{__big5hkscs_decmap+3859,64,254},{ -__big5hkscs_decmap+4050,64,254},{__big5hkscs_decmap+4241,64,254},{ -__big5hkscs_decmap+4432,64,254},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 -},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, +},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ +__big5hkscs_decmap+0,64,121},{__big5hkscs_decmap+58,64,170},{ +__big5hkscs_decmap+165,64,254},{__big5hkscs_decmap+356,64,254},{ +__big5hkscs_decmap+547,64,253},{__big5hkscs_decmap+737,64,254},{ +__big5hkscs_decmap+928,64,254},{__big5hkscs_decmap+1119,64,254},{ +__big5hkscs_decmap+1310,64,253},{__big5hkscs_decmap+1500,64,254},{ +__big5hkscs_decmap+1691,64,254},{__big5hkscs_decmap+1882,64,254},{ +__big5hkscs_decmap+2073,64,254},{__big5hkscs_decmap+2264,64,254},{ +__big5hkscs_decmap+2455,64,254},{__big5hkscs_decmap+2646,64,254},{ +__big5hkscs_decmap+2837,64,254},{__big5hkscs_decmap+3028,64,254},{ +__big5hkscs_decmap+3219,64,254},{__big5hkscs_decmap+3410,64,254},{ +__big5hkscs_decmap+3601,64,254},{__big5hkscs_decmap+3792,64,254},{ +__big5hkscs_decmap+3983,64,254},{__big5hkscs_decmap+4174,64,254},{ +__big5hkscs_decmap+4365,64,254},{__big5hkscs_decmap+4556,64,254},{0,0,0},{0,0, +0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 -},{0,0,0},{0,0,0},{__big5hkscs_decmap+4623,161,254},{__big5hkscs_decmap+4717, -64,254},{__big5hkscs_decmap+4908,64,254},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0, -0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, +},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_decmap+4747, +161,254},{__big5hkscs_decmap+4841,64,254},{__big5hkscs_decmap+5032,64,254},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, -0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_decmap+5099,214,254},{ -__big5hkscs_decmap+5140,64,254},{__big5hkscs_decmap+5331,64,254},{ -__big5hkscs_decmap+5522,64,254},{__big5hkscs_decmap+5713,64,254},{ -__big5hkscs_decmap+5904,64,254},{0,0,0}, +0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ +0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ +__big5hkscs_decmap+5223,214,254},{__big5hkscs_decmap+5264,64,254},{ +__big5hkscs_decmap+5455,64,254},{__big5hkscs_decmap+5646,64,254},{ +__big5hkscs_decmap+5837,64,254},{__big5hkscs_decmap+6028,64,254},{0,0,0}, }; static const unsigned char big5hkscs_phint_0[] = { -160,89,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,1,8,0,0,0,0,0,0,0,0,0,0, -0,0,2,44,0,30,0,0,0,0,0,64,174,86,238,249,221,228,33,23,0,0,0,128,219,73,31, -76,130,55,237,228,223,189,247,245,239,31,100,136,94,253,223,11,0,0,0,192,247, -143,0,131,5,0,8,201,8,4,129,64,68,5,11,9,35,1,32,2,0,0,0,32,145,24,0,96,0,168, -6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,128,0,64,86,50,65,32,198, -80,72,2,0,0,0,0,160,192,168,1,164,85,48,58,209,106,46,159,176,241,65,136,5,57, -80,4,0,0,0,0,172,163,20,192,1,2,13,45,134,136,107,34,110,192,204,245,218,10, -24,122,0,0,0,0,50,115,0,15,68,252,3,33,49,32,25,232,96,160,65,19,82,42,250,9, -0,0,0,0,190,1,129,16,16,96,183,137,193,218,237,250,242,59,200,167,11,77,155, -11,0,0,0,0,24,0,220,116,19,94,192,168,0,60,240,208,68,224,172,60,75,230,29,15, -0,0,0,128,189,88,120,55,191,187,216,218,8,134,192,108,148,192,176,125,14,136, -145,3,0,0,0,64,99,139,197,22,24,68,124,152,75,112,3,92,219,185,208,26,40,149, -106,1,0,0,0,0,232,7,36,34,32,136,4,106,32,215,29,50,15,162,149,11,4,67,65,1,0, -0,0,104,48,64,19,207,57,183,16,8,7,4,180,33,217,183,15,11,127,69,91,0,0,0,0, -236,116,236,196,4,41,49,2,48,250,252,27,175,78,38,164,183,110,50,24,0,0,0,0, -220,22,67,34,1,0,0,128,0,0,0,4,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0, -0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,28,241,220,190,126,252,186,123,238,249,55,249, -93,165,255,31,215,2,0,0,0,128,63,255,213,117,117,187,120,231,62,245,177,173, -189,75,150,188,46,181,85,2,0,0,0,192,109,51,55,176,233,204,159,42,126,83,204, -255,77,234,218,198,255,55,165,0,0,0,0,160,192,252,222,50,83,161,28,0,0,33,176, -71,0,74,32,32,233,215,235,0,0,0,0,160,183,1,64,49,101,247,12,36,64,48,45,144, -123,18,0,0,2,0,0,0,0,0,0,0,8,80,144,69,0,4,0,0,32,64,4,161,128,96,2,0,32,0,8, -0,0,0,0,148,8,2,32,40,0,0,1,8,254,251,73, +32,5,95,68,15,82,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,44,4,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,4,0,0,0,0,0,0,0,0,0,0,0,0,1,22,0,15,0,0,0,0,0, +32,87,43,247,252,110,242,144,11,0,0,0,192,237,164,15,38,193,155,118,242,239, +222,251,250,247,15,50,68,175,254,239,5,0,0,0,224,251,71,128,193,2,0,132,100,4, +130,64,32,162,130,133,164,145,0,16,1,0,0,0,144,72,12,0,48,0,84,3,48,68,24,19, +53,137,38,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,0,32,43,153,32,16,99,40,36, +1,0,0,0,0,80,96,212,0,210,42,24,157,104,53,151,79,216,248,32,196,130,28,40,2, +0,0,0,0,214,81,10,224,0,129,134,22,67,196,53,17,55,96,230,122,109,5,12,61,0,0, +0,0,153,57,128,7,34,254,129,144,24,144,12,116,48,208,160,9,41,21,253,4,0,0,0, +0,223,128,64,8,8,176,219,196,96,237,118,125,249,29,228,211,133,166,205,5,0,0, +0,0,12,0,110,186,9,47,96,84,0,30,120,104,34,112,86,158,37,243,142,7,0,0,0,192, +94,44,188,155,223,93,108,109,4,67,96,54,74,96,216,62,7,196,200,1,0,0,0,160, +177,197,98,11,12,34,62,204,37,184,1,174,237,92,104,13,148,74,181,0,0,0,0,0, +244,3,18,17,16,68,2,53,144,235,14,153,7,209,202,5,130,161,160,0,0,0,0,52,24, +160,137,231,156,91,8,132,3,2,218,144,236,219,135,133,191,162,45,0,0,0,0,118, +58,118,98,130,148,24,1,24,125,254,141,87,39,19,210,91,55,25,12,0,0,0,0,110, +139,33,145,0,0,0,64,0,0,0,2,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,142,120,110,95,63,126,221,61,247,252,155,252,174, +210,255,143,107,1,0,0,0,192,159,255,234,186,186,93,188,115,159,250,216,214, +222,37,75,94,151,218,42,1,0,0,0,224,182,153,27,216,116,230,79,21,191,41,230, +255,38,117,109,227,255,155,82,0,0,0,0,80,96,126,111,153,169,80,14,0,128,16, +216,35,0,37,16,144,244,235,117,0,0,0,0,208,219,0,160,152,178,123,6,82,32,152, +22,200,61,9,0,0,1,0,0,0,0,0,0,0,4,40,200,34,0,2,0,0,16,32,130,80,64,48,1,0,16, +0,4,0,0,0,0,74,4,1,16,20,0,128,0,4,255,253,36, }; -static const unsigned char big5hkscs_phint_11939[] = { +static const unsigned char big5hkscs_phint_12130[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,128,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0, }; -static const unsigned char big5hkscs_phint_21733[] = { +static const unsigned char big5hkscs_phint_21924[] = { 0,0,0,0,0,26,172,248,250,90,192,250,51,0,0,0,0,0,129,0,160,156,130,144,9,1, 180,192,176,3,86,2,160,66,45,136,1,0,0,0,0,146,119,139,96,5,201,33,6,70,56,96, 72,192,180,36,222,132,224,192,36,0,0,0,0,205,80,197,52,192,40,162,173,124,153, @@ -485,33 +495,33 @@ 5,72,8,22,230,28,165,0,8,0,0,0,192,45,22,20,128,24,58,212,25,136,28,138,4, }; -static const DBCHAR __big5hkscs_bmp_encmap[26537] = { +static const DBCHAR __big5hkscs_bmp_encmap[26401] = { 50904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34905,34903,N,N,N,N,N,N, -34909,34907,34918,N,N,N,N,N,N,N,34913,34911,N,N,N,N,N,N,N,N,N,N,N,N,34922, -34920,N,N,N,N,N,N,34927,34925,34983,N,34931,34929,N,N,N,N,34935,34933,N,N,N,N, -51451,34939,34937,N,34978,34902,34919,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34906, -34924,N,N,N,N,N,N,34908,34926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34928,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51452,34910,34932,N,N,N,N,N, -51450,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34936,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,34904,34921,N,34930,34912,34934,N,34938,N,34940,N,34941,N, -34942,N,34977,51446,34923,N,N,51448,N,N,N,N,N,N,51447,N,N,N,N,N,34984,N,N,N,N, -N,N,N,N,51454,N,N,N,N,N,N,N,N,N,N,51449,N,N,N,N,N,N,N,N,N,N,N,N,N,51445,N,N,N, -N,N,N,51453,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50905,51193,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,51187,51188,51189,51190,51191,51192,51194,51195,51196,51197, -51198,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275, -51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288, -51289,51290,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302, -51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315, -51316,51317,N,51291,34915,34980,34917,34982,51410,N,N,N,N,N,N,N,N,N,N,51411,N, +34909,34907,M,N,N,N,N,N,N,N,34913,34911,N,N,N,N,N,N,N,N,N,N,N,N,34922,34920,N, +N,N,N,N,N,34927,34925,M,N,34931,34929,N,N,N,N,34935,34933,N,N,N,N,51451,34939, +34937,N,34978,34902,34919,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34906,34924,N,N,N,N, +N,N,34908,34926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34928,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51452,34910,34932,N,N,N,N,N,51450,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34936,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,34904,34921,N,34930,34912,34934,N,34938,N,34940,N,34941,N,34942,N,34977, +51446,34923,N,N,51448,N,N,N,N,N,N,51447,N,N,N,N,N,34984,N,N,N,N,N,N,N,N,51454, +N,N,N,N,N,N,N,N,N,N,51449,N,N,N,N,N,N,N,N,N,N,N,N,N,51445,N,N,N,N,N,N,51453,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50905,51193,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +51187,51188,51189,51190,51191,51192,51194,51195,51196,51197,51198,51264,51265, +51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278, +51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51292, +51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305, +51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,N, +51291,34915,34980,34917,34982,51410,N,N,N,N,N,N,N,N,N,N,51411,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50869,50870, +50871,50872,50873,50874,50875,50876,50877,50878,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,51319,51320,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51318,50849,50850,50851, +N,N,N,N,N,N,N,N,51319,51320,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51318,34985,34986,50849,50850,50851, 50852,50853,50854,50855,50856,50857,50858,N,N,N,N,N,N,N,N,N,N,50859,50860, 50861,50862,50863,50864,50865,50866,50867,50868,63993,63992,63974,63983,63965, 63976,63985,63967,63980,63989,63971,63982,63991,63973,63977,63986,63968,63979, @@ -536,231 +546,235 @@ 51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165, 51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178, 51179,51180,51181,51182,51183,51184,51185,51186,N,N,N,N,N,50915,50906,50907, -51409,37495,N,N,N,N,N,N,N,N,N,N,38623,N,N,N,N,N,N,N,N,N,N,N,35285,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37837,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39903,N,N, -N,N,N,N,64104,N,N,35290,36697,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35291,N, -N,36701,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35292,N,N,N,N,N,N,N,N,N,38647,N,N,N,N,N,N, -N,N,N,N,N,N,35546,N,N,N,N,35804,N,N,N,N,N,N,38875,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40531,N,N,N,N,40362,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,39914,35438,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35784,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,35304,N,35306,N,N,N,N,N,35915,N,N,N,N,N,N,N,64368,N,N,N,N,N,N,N,N,N, -N,N,35309,N,N,38109,N,35310,N,N,N,N,40628,35539,N,N,N,N,N,N,N,N,N,N,N,37595,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38107,35321,N,N,N,N,N,N,N,N,64378,N,N,N, -35323,N,N,N,N,N,N,N,40700,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35324,N,35263,N,N, -N,35326,N,35302,N,N,40262,N,N,N,40430,N,N,N,41086,N,N,N,41064,N,N,N,N,39145,N, -35688,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36349,35774,40921,N,N,N,N,N,N,N, -35563,N,N,40919,35690,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40028,N,35761,N,N,N,N,N,N,N, -N,64350,N,N,N,N,N,N,N,N,N,40435,N,N,N,N,N,N,N,41168,N,N,N,64614,N,N,N,N,37609, -N,N,N,N,N,N,N,N,39660,36779,64072,N,N,N,N,36421,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,40047,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40670,N,N,N,N,N,N, -35311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38633,N,N,N,N,N,N,N,N,N, -N,40635,N,N,N,N,38110,N,40632,N,N,N,38842,64357,N,N,N,38358,N,N,N,40123,N,N, -38874,N,N,N,N,36677,N,64381,37208,65124,N,38998,39757,N,N,N,N,N,N,N,N,N,N, -37723,38343,N,38887,N,N,N,N,N,N,37721,N,N,N,37365,38840,N,N,64930,64438,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,37626,37719,N,35750,N,N,N,N,64441,N,38832,N,N,64964,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,40097,N,N,N,N,N,37362,37369,N,36849,N,N,N,N,N,N,38725, -38995,N,N,65144,N,64449,37457,N,N,N,N,N,N,40365,N,N,N,N,N,64876,N,N,64107,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39874,N,N,N,N,N,N,N,N, -N,N,N,N,39547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,35680,N,N,N,N,N,N,N,N,37707,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39613,N,N,N,N,37303,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38324,N,N,N,N,N,65221, -N,N,40688,36196,N,N,N,N,N,N,N,N,N,37481,N,N,N,N,N,N,36199,N,N,N,N,N,N,N,N,N,N, -N,N,64490,N,N,N,N,N,N,N,N,64495,N,36200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37867,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,64578,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,37222,N,N,N,N,N,N,N,N,64205,N,N,N,N,37853,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35788,36205,N,N,N,N,N, -N,N,N,N,N,N,36206,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38568,N,N,N,N,N,N,N,N,N, -N,64678,N,N,N,N,N,N,N,N,N,N,N,N,36207,N,N,N,N,N,N,N,N,N,N,N,N,N,36208,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64612,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,36960,N,N,N,N,N,N,N,N,36212,38851,N,N,N,N,N,N,N,35536,N,N,N, -N,N,N,37492,N,39870,N,N,N,N,N,40136,N,N,40122,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,40633,N,N,N,N,N,38234,N,N,37300,N,N,N,N,N,N,35400,N,N,N,N,N,N,N,N,N,N,N, -36221,N,N,35453,N,N,35522,64842,N,36257,N,N,35537,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64692,35655,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37796,40666,N,N,N,N,N,N,N,N,N, -35409,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36262,N,N,N,N,N,N,40645,N,N, -N,N,64708,N,N,N,N,41080,N,38069,N,N,N,N,N,N,N,64706,35435,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36267,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64232,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36269,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64585,N,37825,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36975,N,36272,N,N,N,N,N,N,N,N, -38014,37114,N,N,N,N,N,N,N,N,N,N,38009,N,N,N,N,N,N,N,N,36274,N,N,N,N,N,N,N,N, -64750,N,N,N,N,N,N,N,N,N,N,N,N,N,39291,N,N,N,N,N,N,N,N,36276,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,36279,N,N,N,N,N,N,N,37299,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,36283,36282,N,N,N,N,N,N,N,N,36284,36932,N,N,N,64844,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37860,N,N,37856,N,N,N,N,N,N,N,64851,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36291,N,39864,N,N,N,64496,N,37865,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,37878,N,N,N,N,N,36293,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36298, -N,N,N,N,N,36300,64861,37813,64865,N,N,N,40184,N,N,N,37458,N,N,41192,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35926,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36310,N,38848,N,N,N,41182,N,N,N,N, -38866,N,N,N,N,N,64165,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64931,N,N,N,36315,36527,N,N, -N,N,N,N,N,N,N,37301,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64841,N,N,N,N,N,N, -N,N,64977,N,N,N,N,N,N,N,N,N,N,36331,N,N,N,N,N,38854,N,64974,N,N,37116,N,N,N,N, -N,N,N,N,N,N,N,N,N,64601,N,N,38614,N,N,N,N,N,N,38853,36335,N,N,N,N,38871,N,N,N, -N,N,36336,N,N,N,N,N,N,N,38566,N,N,N,N,N,N,N,64447,N,N,N,N,36339,N,N,N,N,37961, -N,36341,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39026,N,N,N,N,N,N,N,36459,N,N,N, -N,N,N,64253,N,N,N,N,N,N,N,N,N,N,36688,N,N,N,N,N,N,40396,64613,N,35908,N,N, -39278,38049,N,N,N,N,N,36707,N,N,N,N,N,N,N,41178,N,N,N,N,N,N,N,N,N,N,N,37459, -65001,N,N,40373,N,N,N,N,N,N,N,39033,N,N,N,40285,N,N,N,N,36195,38505,40816,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64618,N,N,35527,N,N,N,N,35287,N,N,N,N,N,N,N,N, -N,N,N,N,65101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40669,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65275,39100,64204,N,N,38320,N,N,N,37988,N,N,N,N, -N,N,37743,N,N,N,N,N,N,38073,N,N,38380,N,N,N,N,37358,N,N,39107,N,38390,N,N,N, -36861,39109,N,N,N,N,38758,65134,N,N,38877,36010,N,N,37586,N,N,38753,39115,N,N, -N,N,38384,N,38749,N,37347,N,N,N,N,39116,N,N,37993,39117,N,N,N,N,N,39118,N, -38396,N,N,38051,38498,N,N,N,65206,N,37987,N,N,N,N,N,N,N,39120,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39121,N,N,N,N,38005,64224,N,N,N,N,N, -N,N,N,N,38002,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39126,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35568,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39129,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,39131,N,N,N,N,39133,N,N,N,N,N,N,N,N,39080,N,N,N,N,N,N,N, -35437,N,N,N,N,N,N,N,N,N,N,N,35579,35502,64457,N,N,N,N,35933,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,39140,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,39142,N,N,N,N,N,N,N,N,N,N,N,39144,N,N,N,N,N,N,N,N,N,N,N,N,N,35405,N,N,N, -37463,N,N,N,N,N,N,N,N,N,N,38367,N,N,41132,N,N,N,N,39147,N,N,N,N,39148,N,36035, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39156,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35512, -N,N,N,40679,N,N,N,N,N,N,N,N,38076,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64721,N,N,N,N, -N,N,40134,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40574,39166, -65000,N,N,N,N,39232,N,N,N,N,38089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,38099,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39238,N,N,N,N,37056, -N,38097,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37826,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39240, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39243,N,N,N,N,N,36437,N,N,N,N,39246,N,N,N,N, -N,N,N,N,N,N,N,36606,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36441,N,N,N,N,N,N,N, -N,N,38124,38127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35936,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36724,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,39253,N,N,N,N,N,N,N,N,N,38212,N,N,N,N,N,N,N,N,N,N,N, -36043,N,N,N,39254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39257,N,N,N,N,N,N,N,39259, -N,N,N,N,N,N,N,N,N,N,N,N,N,36036,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64069,N,N, -N,37047,N,N,38723,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38349,N,N,N,N,N,N,38857, -64848,36537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38342,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35513,N,N,N,N,N,N,36348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35446,N, -N,N,N,N,40273,N,N,N,N,N,N,N,N,N,N,N,N,N,39283,N,N,N,N,40271,39290,38244,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,39329,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39333,N,N,N, -N,N,N,N,39335,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +34880,34881,34882,34883,34884,34886,34889,34890,34893,34895,34896,34897,34898, +34900,34901,51321,51409,37495,N,N,N,N,N,N,N,N,N,N,38623,N,N,N,N,N,N,N,N,N, +36084,N,35285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37837,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,39903,N,N,N,N,N,N,64104,N,N,35290,36697,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,35291,N,N,36701,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35292,N,N,N,N,N, +N,N,N,N,38647,N,N,N,N,N,N,N,N,N,N,N,N,35546,N,N,N,N,35804,N,N,N,N,N,N,38875,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40531,N,N,N,N,40362,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,39914,35438,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35784, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35304,N,35306,N,N,N,N,N,35915,N,N,N,N,N,N, +N,64368,N,N,N,N,N,N,N,N,N,N,N,35309,N,N,38109,N,35310,N,N,N,N,40628,35539,N,N, +N,N,N,N,N,N,N,N,N,37595,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38107,35321,N,N,N, +N,N,N,N,N,64378,N,N,N,35323,N,N,N,N,N,N,N,40700,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,35324,N,35263,N,N,N,35326,N,35302,N,N,40262,N,N,N,40430,N,N,N,41086,N,N,N, +41064,N,N,N,N,39145,N,35688,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36349,35774, +40921,N,N,N,N,N,N,N,35563,N,N,40919,35690,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40028,N, +35761,N,N,N,N,N,N,N,N,64350,N,34672,N,N,N,N,N,N,N,40435,N,N,N,N,N,N,N,41168,N, +N,N,64614,N,N,N,N,37609,N,N,N,N,N,N,N,N,39660,36779,64072,N,N,N,N,36421,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40047,N,36188,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40670,N,N,N,N,N,N,35311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,38633,N,N,N,N,N,N,N,N,N,N,40635,N,N,N,N,38110,N,40632,N,N,N,38842,64357,N, +N,N,38358,N,N,N,40123,N,N,38874,N,N,N,N,36677,N,64381,37208,65124,N,38998, +39757,N,N,N,N,N,N,N,N,N,N,37723,38343,N,38887,N,N,N,N,N,N,37721,N,N,N,37365, +38840,N,N,64930,64438,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37626,37719,N,35750,N,N,N,N, +64441,N,38832,N,N,64964,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40097,N,N,N,N,N,37362, +37369,N,36849,N,N,N,N,N,N,38725,38995,N,N,65144,N,64449,37457,N,N,N,N,N,N, +40365,N,N,N,N,N,64876,N,N,64107,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,39874,N,N,N,N,N,N,N,N,N,N,N,N,39547,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35680,N,N,N,N,N,N,N,N,37707, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39613,N,N,N,N,37303,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36171,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,38324,N,N,N,N,N,65221,N,N,40688,36196,N,N,N,N,N,N,N,N,N, +37481,N,N,N,N,N,N,36199,N,N,N,N,N,N,N,N,N,N,N,N,64490,N,N,N,N,N,N,N,N,64495,N, +36200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,37867,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64578,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37222,N,N,N,N,N,N,N,N, +64205,N,N,N,N,37853,N,N,36178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35788,36205,N,N,N,N,N,N,N,N,N,N,N,36206,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,38568,N,N,N,N,N,N,N,N,N,N,64678,N,N,N,N,N,N,N,N,N,N,N, +N,36207,N,N,N,N,N,N,N,N,N,N,N,N,N,36208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,64612,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36083,N,N,N,N,N,N,N,36960,N, +N,N,N,N,N,N,N,36212,38851,N,N,N,N,N,N,N,35536,N,N,N,N,N,N,37492,N,39870,N,N,N, +N,N,40136,N,N,40122,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36216,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40633,N,N,N,N,N,38234, +N,N,37300,N,N,N,N,N,N,35400,N,N,N,N,N,N,N,N,N,N,N,36221,N,N,35453,N,N,35522, +64842,N,36257,N,N,35537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64692,35655,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37796,40666,N,N,N,N,N,N,N,N,N,35409,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36262,N,N,N,N,N,N,40645,N,N,N,N,64708,N,N,N,N,41080,N, +38069,N,N,N,N,N,N,N,64706,35435,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36267,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64232,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36269,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64585,N,37825,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36975,N,36272,N,N,N,N,N,N,N,N,38014,37114,N,N,N,N,N,N,N,N,N,N, +38009,N,N,N,N,N,N,N,N,36274,N,N,N,N,N,N,N,N,64750,N,N,N,N,N,N,N,N,N,N,N,N,N, +39291,N,N,N,N,N,N,N,N,36276,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36279,N, +N,N,N,N,N,N,37299,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36283,36282,N,N,N,N,N,N,N,N, +36284,36932,N,N,N,64844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34635,37860,N, +N,37856,N,N,N,N,N,N,N,64851,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,36291,N,39864,N,N,N,64496,N,37865,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37878, +N,N,N,N,N,36293,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36298,N,N,N,N,N,36300,64861,37813, +64865,N,N,N,40184,N,N,N,37458,N,N,41192,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,36310,N,38848,N,N,N,41182,N,N,N,N,38866,N,N,N,N,N,64165,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,64931,N,N,N,36315,36074,36527,N,N,N,N,N,N,N,N,N,37301,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64841,N,N,N,N,N,N,N,N,64977,N,N,N,N,N,N,N, +N,N,N,36331,N,N,N,N,N,38854,N,64974,N,N,37116,N,N,N,N,N,N,N,N,N,N,N,N,N,64601, +N,N,38614,N,N,N,N,N,N,38853,36335,N,N,N,N,38871,N,N,N,N,N,36336,N,N,N,N,N,N,N, +38566,N,N,N,N,N,N,N,64447,N,N,36063,N,36339,N,N,N,N,37961,N,36341,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,39026,N,N,N,N,N,N,N,36459,N,N,N,N,N,N,64253,N,N,N,N, +N,N,N,N,N,N,36688,N,N,N,N,N,N,40396,64613,N,35908,N,N,39278,38049,N,N,N,N,N, +36707,N,N,N,N,N,N,N,41178,N,N,N,N,N,N,N,N,N,N,N,37459,65001,N,N,40373,N,N,N,N, +N,N,N,39033,34666,N,N,40285,N,N,N,N,36195,38505,40816,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,64618,N,N,35527,N,N,N,N,35287,N,N,N,N,N,N,N,N,N,N,N,N,65101,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40669,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,65275,39100,64204,N,N,38320,N,N,N,37988,N,N,N,N,N,N,37743,N,N,N,N,N,N, +38073,N,N,38380,N,N,N,N,37358,N,N,39107,N,38390,N,N,N,36861,39109,N,N,N,N, +38758,65134,N,N,38877,36010,N,N,37586,N,N,38753,39115,N,N,N,N,38384,N,38749,N, +37347,N,N,N,N,39116,N,N,37993,39117,N,N,N,N,N,39118,N,38396,N,N,38051,38498,N, +N,N,65206,N,37987,36167,N,N,N,N,N,N,39120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39121,N,N,N,N,38005,64224,N,N,N,N,N,N,N,N,N,38002,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39126,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,35568,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39129,N,N,N,N,N,N,N,36186,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,39131,N,N,N,N,39133,N,N,N,N,N,N,N,N,39080,N,N,N,N,N,N,N,35437,N,N,N,N,N, +N,N,N,N,N,N,35579,35502,64457,N,N,N,N,35933,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,39140,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39142,N,N,N,N, +N,N,N,N,N,N,N,39144,N,N,N,N,N,N,N,N,N,N,N,N,N,35405,N,N,N,37463,N,N,N,N,N,N,N, +N,N,N,38367,N,N,41132,N,N,N,N,39147,N,N,N,N,39148,N,36035,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39156,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35512,N,N,N,40679,N,N,N,N, +N,N,N,N,38076,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64721,N,N,N,N,N,N,40134,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36170,N,40574,36164,39166,65000,N,N,N,N, +39232,N,N,N,N,38089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,38099,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39238,N,N,N,N,37056,N,38097,N,N,N, +N,N,N,N,N,N,N,N,N,N,36174,N,N,38259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37826,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39240,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,39243,N,N,N,N,N,36437,N,N,N,N,39246,N,N,N,N,N,N,N,N,N, +N,N,36606,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36191,N,36441,N,N,N,N,N,N,N,N,N, +38124,38127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35936,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36724,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,39253,N,N,N,N,N,N,N,N,N,38212,N,N,N,N,N,N,N,N,N,N,N,36043, +N,N,N,39254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39257,N,N,N,N,N,N,N,39259,N,N,N, +N,N,N,N,N,N,N,N,N,N,36036,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64069,N,N,N, +37047,N,N,38723,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38349,N,N,N,N,N,N,38857,64848, +36537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38342,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39271,N,N, +36067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35513,N,N, +N,N,N,N,36348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35446,N,N,N,N,N, +40273,N,N,N,N,N,N,N,N,N,N,N,N,N,39283,N,N,34624,N,40271,39290,38244,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39329,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39333,N,N,N,N,N, +N,N,39335,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36589,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39341,N,N,N,N,N,N,N,N, +N,N,N,36589,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39341,N,51326,N,N,N,N,N,N, N,N,N,N,N,N,N,37998,36720,N,64208,N,N,N,N,N,N,N,N,N,N,N,N,N,39347,N,N,N,N,N,N, -41043,N,N,N,N,N,N,N,N,38492,N,N,N,N,64890,N,N,N,N,N,N,N,N,38910,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,37565,N,38909,N,N,N,N,36708,N,N,N,N,64759,38242,38861,40548,N,N, -N,N,N,N,N,37452,36553,39356,N,N,N,N,40357,N,36692,N,N,N,N,N,N,N,N,N,N,36732,N, -N,N,N,N,N,36514,N,N,N,N,N,N,N,N,N,36730,N,N,N,N,N,N,38830,N,N,N,N,38600,N,N,N, -N,N,N,N,39363,N,37078,N,40126,N,N,N,36726,N,N,N,N,N,N,N,N,N,N,N,N,N,38000, -64331,N,N,64970,N,N,N,N,N,N,36551,N,N,N,N,N,41209,N,N,N,N,N,N,N,36777,N,N,N,N, -N,N,N,N,N,N,N,N,39367,N,N,N,N,N,N,N,N,N,N,N,N,N,37079,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40671,39374,N,N,N,N,N,N,N,N,36794,N,N,N,N,N,36843,N,39375,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36802,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37577,N,N,N,N,N,38876,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38323,40057,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38322, -36827,N,N,N,N,39907,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40570,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39918,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39390,N,N,N,N,N,N,N,N,N,N,N,N, -N,64250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40677,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,35410,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39393,N,N,N,N,N,N,35431,35765,N,N,N,N,N,N,N,N,N,N,35500,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39401,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64458,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38878,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38353,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39413,64586,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39849,N,N,N,N,N,N,N,N,N,N,N,N,64476,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65110,N, -N,N,N,N,40612,N,N,N,N,N,N,40265,38363,N,N,N,N,N,N,N,N,N,N,35269,N,N,N,N,N,N,N, -N,N,N,N,N,39416,N,N,N,N,N,N,38500,N,N,N,N,36949,N,N,38612,N,N,N,N,N,N,N,38780, -N,N,N,N,N,N,38477,N,38881,N,N,N,N,N,N,39496,N,N,N,N,N,N,N,N,N,N,N,39497,N, -65149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37034,N,N,N,N,39504,N,N,N,N,N,N,N, -37703,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36568,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37065,N,N,N,N,N,39509,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37052,N,N,N,N,N,39512,N,35768,37077,N,N,N,N,N,N,N,N,N,N,N,N,N,38465,N,N,N,N,N, -N,39514,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39516,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,38850,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35515,N,N, -N,39850,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37109,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,39520,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37189,35928,N,N,N,N,N,N,N,N,39523,N,N,N,N,N,N,35913,N,N,N,N,N,N,N,N,N,N,N, -35766,N,N,N,N,N,N,N,N,N,N,64719,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38507,39534,N, -37199,N,N,N,N,N,N,N,N,38726,N,N,41190,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37591,N, -38517,N,N,37844,N,N,37307,38521,N,N,N,N,N,39536,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38520,37325,N,40010,41071,N,N,41066,N,N,N,N,N, -N,37215,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40869,N,N,35258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,40653,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39545,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40398,N,N,N,36050,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40307,N,N,N,N,N,N,N,N,N,38585,N,38588,N,N,N,N,N,N,40145,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35255,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,40686,N,N,N,N,N,N,N,N,N,N,N,64323,40649,N,N,N,N,N,N,64467,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37294,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40312,N,N,N,N,N,N,N,N,N,N,40315,40627,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,40626,N,40406,N,N,N,N,39247,N,N,35278,N,N,N,35776,N,40900,N,35796, -N,N,35954,N,N,N,N,N,N,50879,35833,N,N,N,N,N,35142,N,50880,N,N,N,N,N,N,N,N,N, -64229,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51323,35782,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40023,N,N,N,N,N,N,N,N,N,N,N,N,N,39675,N,N,N,N,N,N,N,35280,35279,N,N,N,50881,N, -35281,N,35298,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37502,N,40378,N,N,N,N,N,50882,N,N, -35951,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64504,N,N,N,35783,37483,N,N,35282, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,40911,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40361,35283,N,N,39394,N,N,N,N,N,N,N,N,N,37479,37540,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35955,N,N,35150,N,N,N,N,N,N,N,N,N,N,N,N,N,35151,37496,N, -N,N,N,N,N,N,N,37302,N,N,N,N,35284,N,40914,N,N,N,N,N,N,N,N,37543,N,N,38306,N,N, -N,N,N,37486,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,38634,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37487,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37539,N,N,N,N,N,35152,N,N,64087,N,N,N,N, -39014,N,N,N,N,N,N,N,N,N,N,N,N,35286,N,N,N,N,N,N,N,N,N,N,39090,N,N,N,37547,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38622,37548,N,N,N,N,N,N,N,N,N,N, -35952,N,40814,N,N,N,N,N,N,36594,N,N,N,40812,35288,N,N,N,N,64089,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37544,N,N,N,N,N, -37219,N,N,N,N,N,N,35904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40819,N,37549,N,N,N,N,N,N,N,N,N,N,N,N,N,39913,N,N,N,N,N,37545,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37546,N,N,N,N,N,N,35289,N,N,N,N,N,N,N,64854,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40872,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,35953,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37537,N,N,37091,N,N,N,N,N,N,N,N,41126, -N,N,N,N,N,38059,N,64626,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38852,N,N,N,N,N,N, -N,37550,64103,N,N,N,N,N,N,N,N,N,N,N,37538,64105,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37480,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35153,N,N,N,N,N,N,N,N,N,64111,N,N,N,N,N, -N,N,N,N,64113,N,N,N,N,N,N,N,N,N,35154,N,N,N,N,37978,N,N,N,N,N,N,N,N,50883,N,N, -N,35293,N,51362,N,N,N,N,N,N,N,N,N,N,N,N,N,50884,N,N,N,40530,N,35155,N,N,N,N,N, -N,N,N,N,N,40533,37562,N,N,50885,N,N,35931,N,N,N,64125,64168,39528,64071,N,N, -64126,N,N,N,N,N,N,N,N,N,N,37563,N,N,N,64950,N,64162,N,N,N,N,N,64163,N,64164, -39860,64166,N,N,N,N,N,N,N,35295,N,N,N,64987,N,N,64169,N,35156,N,N,N,N,N,N,N,N, -64171,N,N,N,N,N,N,64634,N,N,N,N,N,N,N,35296,N,40783,51325,N,N,35297,N,N,N,N,N, -64176,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40909,41191,N,N,N,N,N,64177,35238, -N,N,N,N,N,N,N,N,N,N,N,N,40698,N,N,N,N,N,N,N,64178,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,64180,N,37572,N,N,N,N,N,N,40815,N,N,N,N,N,N,N,35760,N, -N,N,N,N,N,N,N,N,N,40876,N,N,N,N,N,35299,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39891,35300,N,N,N,64181,N,N,N,N,N,40917,N,N,N,N,N,N,35157,N,N,37573,N,N,N, -35158,N,N,N,N,N,N,N,N,N,N,N,N,64179,N,N,N,64182,N,N,N,N,N,N,N,N,N,N,N,64183,N, -N,N,N,N,N,40668,N,N,N,64452,40817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64186,37575,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50886,39500,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35944,N,N,35301,N,N,N,N,40829,N,N, -N,N,N,41129,64196,N,N,N,N,50887,N,N,35159,N,N,N,N,N,N,64170,N,N,N,N,N,N,N,N,N, -N,N,35160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35811,N,35681,N,N,N,N,39665,N,N,40631,N, +41043,N,N,N,N,N,36190,N,N,38492,N,N,36064,N,64890,N,N,N,N,N,N,N,N,38910,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37565,36189,38909,N,N,N,N,36708,N,N,N,N,64759,38242, +38861,40548,N,N,N,N,N,N,N,37452,36553,39356,N,N,N,N,40357,N,36692,N,N,N,N,N,N, +N,N,N,N,36732,N,N,N,N,36181,N,36514,N,N,N,N,N,N,N,N,N,36730,N,N,N,N,N,N,38830, +N,N,N,N,38600,N,N,36068,N,N,N,N,39363,N,37078,N,40126,N,N,N,36726,N,N,N,N,N,N, +N,N,N,N,N,N,N,38000,64331,N,N,64970,N,N,36079,N,N,N,36551,N,N,N,N,36180,41209, +N,N,N,N,N,N,N,36777,N,N,36177,N,N,N,N,N,N,N,N,N,39367,34628,N,N,N,N,N,N,N,N,N, +N,N,N,37079,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +34627,N,N,N,N,N,N,N,N,N,N,N,N,34631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34648,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40671, +36185,34626,N,N,39374,N,N,N,N,N,N,N,N,36794,N,N,N,N,N,36843,N,39375,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36802,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37577,N,N,N,N,N,38876,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34653,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,36165,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38323,40057,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38322,N, +36172,36827,N,N,N,N,39907,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,34636,N,N,N,N,N,N,N,N,N,N,N,N,N,34637,N,N,N,N,N,N,N,N,N,40570,34647,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,39918,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39390,N,N,N, +N,N,N,N,N,N,N,N,N,N,64250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35410,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,39393,N,N,N,N,N,N,35431,35765,N,N,N,N,N,N,N,N,N,N,35500,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39401,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,64458,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38878,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38353,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39413,64586,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39849,N,N,N,N,N,N,N,N,N,N,N,N,64476,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,65110,N,N,N,N,N,40612,N,N,N,N,N,N,40265,38363,N,N,N,N,N,N,N,N,N,N,35269, +N,N,N,N,N,N,N,N,N,N,N,N,39416,N,N,N,N,N,N,38500,N,N,N,N,36949,N,N,38612,N,N,N, +N,N,N,N,38780,N,N,N,N,N,N,38477,N,38881,N,N,N,N,N,N,39496,N,N,N,N,N,N,N,N,N,N, +N,39497,N,65149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37034,N,N,N,N,39504,N,N,N,N, +N,N,N,37703,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36568,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37065,N,N,N,N,N,39509,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37052,N,N,N,N,N,39512,N,35768,37077,N,N,N,N,N,N,N,N,N,N,N,N,N,38465,N,N, +N,N,N,N,39514,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39516,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,38850,N,N,N,N,N,N,N,N,N,N,N,N,N,34652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35515,N,N,N,39850,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37109,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39520,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,37189,35928,N,N,N,N,N,N,N,N,39523,N,N,N,N,N,N,35913,N,N,N,N,N,N,N,N, +N,N,N,35766,N,N,N,N,N,N,N,N,N,N,64719,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38507, +39534,N,37199,N,N,N,N,N,N,N,N,38726,N,N,41190,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37591,N,38517,N,N,37844,N,N,37307,38521,N,N,N,N,N,39536,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38520,37325,N,40010,41071,N,N,41066,N, +N,N,N,N,N,37215,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,34625,N,N,N,N,N,N,N,N,40869,N,N,35258,N,34639,N,N,N,N,N,N,34638,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,34645,N,N,N,40653,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39545,N,N,N,N,N,N,N,N,N,36082,N,N,N,36183,N,40398,N,N,N,36050,N,N,N,34649,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40307,N,N,N,N,N,N,N,N, +N,38585,N,38588,N,N,N,N,N,N,40145,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35255,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40686,34633,N,N,N,N,N,N,N,N,N,N, +64323,34651,N,40649,N,N,N,N,N,N,64467,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37294,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,36184,34630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36182,N,N,N,N,N,N,N, +40312,N,N,N,N,N,N,N,N,N,N,40315,40627,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40626,N,40406,N,N,N,N,39247,N,N,35278,N,N,N,35776,N,40900,N,35796,N,N,35954, +N,N,N,N,N,N,50879,35833,N,N,N,N,N,35142,N,50880,N,N,N,N,N,N,N,N,N,64229,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,51323,35782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40023,N,N,N, +N,N,N,N,N,N,N,N,N,N,39675,N,N,N,N,N,N,N,35280,35279,N,N,N,50881,N,35281,N, +35298,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37502,N,40378,N,N,N,N,N,50882,N,N,35951,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64504,N,N,N,35783,37483,N,N,35282,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,40911,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40361,35283,N,N,39394,N,N,N,N,N,N,N,N,N,37479,37540,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35955,N,N,35150,N,N,N,N,N,N,N,N,N,N,N,N,N,35151,37496,N,N,N,N,N,N, +N,N,37302,N,N,N,N,35284,N,40914,N,N,N,N,N,N,N,N,37543,N,N,38306,N,N,N,N,N, +37486,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,38634,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37487,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37539,N,N,N,N,N,35152,N,N,64087,N,N,N,N,39014,N, +N,N,36088,N,N,N,N,N,N,N,N,35286,N,N,N,N,N,N,N,N,N,N,39090,N,N,N,37547,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38622,37548,N,N,N,N,N,N,N,N,N,N,35952,N, +40814,N,N,N,N,N,N,36594,N,N,N,40812,35288,N,N,N,N,64089,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37544,N,N,N,N,N,37219,N,N, +N,N,N,N,35904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40819,N, +37549,N,N,N,N,N,N,N,N,N,N,N,N,N,39913,N,N,N,N,N,37545,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,37546,N,N,N,N,N,N,35289,N,N,N,N,N,N,N,64854,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,40872,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35953, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37537,N,N,37091,N,N,N,N,N,N,N,N,41126,N,N,N,N, +N,38059,N,64626,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38852,N,N,N,N,N,N,N,37550, +64103,N,N,N,N,N,N,N,N,N,N,N,37538,64105,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,37480,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35153,N,N,N,N,N,N,N,N,N,64111,N,N,N,N,N,N,N,N,N, +64113,N,N,N,N,N,N,N,N,N,35154,N,N,N,N,37978,N,N,N,N,N,N,N,N,50883,N,N,N,35293, +N,51362,N,N,N,N,N,N,N,N,N,N,N,N,N,50884,N,N,N,40530,N,35155,N,N,N,N,N,N,N,N,N, +N,40533,37562,N,N,50885,N,N,35931,N,N,N,64125,64168,39528,64071,N,N,64126,N,N, +N,N,N,N,N,N,N,N,37563,N,N,N,64950,N,64162,N,N,N,N,N,64163,N,64164,39860,64166, +N,N,N,N,N,N,N,35295,N,N,N,64987,N,N,64169,N,35156,N,N,N,N,N,N,N,N,64171,N,N,N, +N,N,N,64634,N,N,N,N,N,N,N,35296,N,40783,51325,N,N,35297,N,N,N,N,N,64176,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40909,41191,N,N,N,N,N,64177,35238,N,N,N,N,N,N, +N,N,N,N,N,N,40698,N,N,N,N,N,N,N,64178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,64180,N,37572,N,N,N,N,N,N,40815,N,N,N,N,N,N,N,35760,N,N,N,N,N,N,N, +N,N,N,40876,N,N,N,N,N,35299,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39891, +35300,N,N,N,64181,N,N,N,N,N,40917,N,N,N,N,N,N,35157,N,N,37573,N,N,N,35158,N,N, +N,N,N,N,N,N,N,N,N,N,64179,N,N,N,64182,N,N,N,N,N,N,N,N,N,N,N,64183,N,N,N,N,N,N, +40668,N,N,N,64452,40817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64186,37575,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50886,39500,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35944,N,N,35301,N,N,N,N,40829,N,N,N,N,N, +41129,64196,N,N,N,N,50887,N,N,35159,N,N,N,N,N,N,64170,N,N,N,N,N,N,N,N,N,N,N, +35160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35811,N,35681,N,N,N,N,39665,N,N,40631,N, 50888,N,N,N,64209,N,N,N,N,N,N,64210,N,N,N,N,N,N,N,N,40634,64212,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,64217,N,N,N,N,N,N,N,N,N,N,N,N,64219,N,40160,N,N,N, 64503,N,64506,35303,41082,64220,N,N,64221,N,35305,N,N,N,N,N,50889,N,N,N,N,N,N, @@ -790,17 +804,17 @@ N,N,N,N,N,N,37472,N,N,N,N,N,N,N,N,N,N,N,37470,37313,N,35525,N,N,38819,N,N,N,N, N,N,N,N,N,N,35692,N,36222,N,N,N,N,N,N,N,40020,N,N,N,N,N,40381,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,40133,N,N,N,N,N,N,N,N,N,N,N,35163,N,N,N,N,N,N,N,N, -N,N,64348,N,64347,N,64343,N,N,N,N,N,N,N,N,N,N,N,39111,64346,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40174,N,N,N,N,N,N,N,37602,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,38055,N,N,N,N,N,N,N,N,N,N,36044,N,39892,N,N,64356,64374,N,N,64352,N, -N,N,N,N,N,N,N,N,N,N,N,N,39397,N,N,39618,N,N,N,37371,N,N,N,41075,N,N,N,N,N,N,N, -40818,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40908,N,N,N,39077,37608,N,N,N,N,N,N, -N,N,39868,N,38643,N,N,37607,N,N,64615,N,N,N,N,N,N,N,N,N,N,N,35709,N,N,N,N, -39924,N,N,N,N,N,40695,N,N,40641,N,N,N,N,N,N,N,N,N,39279,N,N,N,N,N,N,38641,N,N, -36417,N,N,N,N,N,38218,N,N,N,38886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38645,N,N,N,N,N, -37606,40770,N,N,N,N,N,N,N,64359,N,N,N,N,N,N,N,N,39337,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64230,64361,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38885,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,38525,N,N,N,64364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39330,N,N,N,N,N, +N,N,64348,N,64347,N,64343,N,N,N,N,N,N,N,N,N,34661,N,39111,64346,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40174,N,N,N,N,N,N,N,37602,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,38055,N,N,N,N,N,N,N,N,N,N,36044,N,39892,N,N,64356,64374,N,N, +64352,N,N,N,N,N,N,N,N,N,N,N,N,N,39397,N,N,39618,N,N,N,37371,N,N,N,41075,N,N,N, +N,N,N,N,40818,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40908,N,N,N,39077,37608,N,N, +N,N,N,N,N,N,39868,N,38643,N,N,37607,N,N,64615,N,N,N,N,N,N,N,N,N,N,N,35709,N,N, +N,N,39924,N,N,N,N,N,40695,N,N,40641,N,N,N,N,N,N,N,N,N,39279,N,N,N,N,N,N,38641, +N,N,36417,N,N,N,N,N,38218,N,N,N,38886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38645,N,N,N, +N,N,37606,40770,N,N,N,N,N,N,N,64359,N,N,N,N,N,N,N,N,39337,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,64230,64361,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38885,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,38525,N,N,N,64364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39330,N,N,N,N,N, 39611,N,N,N,39525,N,N,37966,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64366,N,N, 39391,N,N,N,N,N,N,N,N,N,39139,N,N,37460,N,N,N,N,N,38523,35503,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35959,N,N,N,N,N,N,35759,40637,N,N, @@ -808,405 +822,407 @@ N,63961,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37610,N,N,N,N,35960,N,N,N,N,N,N,N,N,N,N, N,64370,N,N,N,64369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35164,N,39152,38642,N,N,N,N, N,N,N,64372,35777,N,35165,35294,N,35166,N,N,50890,N,N,N,N,N,N,65090,N,N,N,N,N, -N,N,N,N,N,N,N,N,64379,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35167,N,35168,N,N,N, +N,N,N,N,N,N,34664,N,64379,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35167,N,35168,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39885,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40403,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38988,N,N,N,N,N,N,N,N,N,N,38738,N,N,N,N,N,38339,N,N,N,N,39862,N, -N,N,N,N,N,N,N,N,N,N,N,39609,N,N,N,38835,N,N,N,N,N,N,40820,37617,N,N,N,N,N,N,N, -N,N,N,N,38879,N,N,N,N,64422,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64427,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,39031,N,N,N,38996,38341,N,N,N,N,N,N,N,40277,64434,38270,N, -N,N,N,N,N,N,N,38722,N,38118,N,N,N,N,37621,N,N,N,N,N,N,N,36037,N,N,N,N,N,N, -37629,N,N,64418,N,N,40017,N,N,38121,39004,37616,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,37964,N,N,N,N,N,N,N,37227,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35704,N,N,N,N,38114,N, -N,N,N,N,N,N,38991,N,64437,N,N,N,N,37489,N,N,37733,N,N,39003,N,N,38992,N,N,N,N, -N,N,N,38844,N,N,N,N,37619,N,N,37696,38989,N,N,N,38258,N,65007,N,N,N,N,N,N,N,N, -64961,N,N,N,N,64442,N,N,37611,N,N,N,N,N,N,64627,38839,N,N,N,N,N,N,N,N,N,64436, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37031,N,N,N,N,N,N,N,N,N,N,38721, -37620,N,N,N,64444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38263,N,N,N,N,N,N,N,N,N,N,N, -40674,N,36728,N,N,N,N,N,N,N,63964,N,N,N,38514,40629,N,N,N,38475,N,N,N,36012,N, -N,N,N,N,N,N,N,N,41210,N,N,N,N,N,N,N,N,N,N,N,38261,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,37082,N,N,37735,N,65188,N,N,N,37087,N,N,N,N,37716,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35169,N,35764,N,N,N,N,40384,N,N,N,N,N,N,36424,N, -64453,N,N,N,N,N,64455,N,N,N,50891,N,64121,N,N,N,N,N,N,N,N,N,N,N,N,N,40551,N,N, -N,N,N,36057,N,N,N,N,N,N,64466,35170,35171,N,N,N,N,N,N,N,N,N,N,64637,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40811,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64460,N,65198,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64465,N,N, -N,N,N,N,N,N,N,N,N,64373,64468,N,N,N,N,N,N,N,N,N,N,N,N,N,64470,64472,N,N,N,N,N, -N,N,35677,N,37708,N,39650,N,N,35785,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64475,40905,N,N,N,N,N,N,N,N,40772,N,N,N,N,N,N, -N,N,N,N,39149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,64477,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36338,35172,N,65010,N, -37709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64487,N,N,N,N,N,N, -41202,39016,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40792,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36211,N,N,N,64478,N,N,N,N,N,64479,N,N,N,N,N,35912,64483,N,N,N,N,36264,N, -N,64484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40053,N,N,39032,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,36192,N,N,N,N,N,N,N,64485,N,36193,N,N,N,N,N,N,N,N,N,N,N,N,N,36194, -41121,N,N,N,40000,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39085,N,N,N,40682,N, -N,N,N,N,N,36052,N,N,N,N,N,N,N,N,N,40171,N,N,N,N,N,64480,N,N,40785,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36197,N,N,N,N,N,N,40177,N,N,N,N,N,N,N,N,N,N, -64600,N,N,36198,N,N,N,N,N,N,N,38484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64488,N,N,N,50892,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40910, -64508,N,39652,N,N,N,N,N,N,40821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,64497,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36201,N,N,N,N,N,37711,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37710,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,64500,N,N,N,N,50894,N,N,N,64451,N,N,35173,N,N,N,N,N,N,N,N, -N,N,N,35962,N,N,N,N,N,N,35963,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,36202,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37715,N,N,40443,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64509,N,N,N, -36953,64576,N,64577,64579,37729,64582,37730,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36203,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64588,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,38328,N,N,50896,35786,N,N,N,N,N,N,N,N,N,N,39034,N,N,N,N, -50897,N,64593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64596,N,N,N,N,N,N,N,N,64175,N,N,N,N, -N,N,N,36204,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64097,N,N,64599,N,N,N,N,N,N,N,N,N,39792,N,N,N,N,N,N,N,N,41041,N,N,N,N,N,N,N, -35964,N,35787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37742,N,N,N,64725, -64681,N,N,N,N,N,N,N,N,N,N,N,N,N,64609,N,N,N,N,N,N,N,N,N,35174,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,64203,N,N,N,N,N,N,N,63962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37754,N,41184,N,N,N,N,N,N,37739,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64619,N,N,N,N,N,41180,N,N,37992,N, -N,N,N,N,N,N,N,N,N,N,64621,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,36209,N,N,N,N,N,N,64868,N,N,N,N,39354,N,N,N,39632,39521, -41189,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41051,38572,N,N,N,N,38720,N,N,N,N, -N,N,N,N,N,N,N,N,40689,N,N,N,N,N,N,N,N,35917,N,N,N,N,N,N,N,N,N,N,N,N,N,40830,N, -N,N,N,N,N,N,N,N,N,N,N,36210,N,N,N,N,64630,N,N,N,N,N,N,N,N,N,N,N,N,N,38569,N,N, -N,N,N,N,N,N,41070,N,N,64682,N,N,N,64461,N,N,N,64628,N,N,N,N,N,N,N,N,N,N,41076, -N,N,N,N,N,N,N,N,N,N,N,N,N,41073,N,N,N,64633,N,N,N,N,N,64636,N,N,N,N,N,N,N,N,N, -N,N,N,N,40016,N,N,37753,37752,N,N,41181,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,36213,N,36214,N,N,N,N,N,N,37748,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36215,64677,N,N,64674,N,N,N,N,N,N,37059,N,N,N,N,N,N,N,41081,36217,N,N,N,N,N,N, -N,N,N,N,35836,N,41078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35789,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40794,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40948,N,N,40890,N,N,N,N,N,N,N,N,N,N,36218,N,N,N,N,N,N,N,N,N, -N,N,N,40517,N,N,N,N,N,N,37808,N,41077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39750,N,64686,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64688,N,N,N,N,N,N, -N,N,N,64081,N,N,N,N,N,36219,36220,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40662,N,N,37804,N,N,N,40795,N,37801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41084,N,N,N,N,N,N,N,64690,N,N,N, -N,N,N,N,N,N,N,N,N,35521,N,N,N,N,N,40884,N,N,N,N,N,N,N,N,N,N,N,64684,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,40524,N,N,N,N,N,N,N,36805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37805,N,N,N,N,N,N,N, -N,N,N,N,N,40387,N,N,N,36258,N,N,N,40266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64694,N,N,36259,40523,N,40525,36260,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35581,N,N,N,N,N,64693,N,64707,37810, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36261,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37793,N,N,N,N,N,N,N,N,N,N,35526,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,35419,N,N,N,35149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,65236,N,N,N,N,35448,N,37803,N,N,N,N,N,N,N,N,N,36263,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40773,N,N,N,N,N,N,N,N,N,35414,N,N,N,64703,N,N,N, -64704,N,36582,N,N,35492,35139,N,N,N,N,N,N,37875,N,N,N,N,N,N,N,N,N,N,N,N,64683, -40610,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40391,N,N,N,50898,35790,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64715,N, -N,N,N,N,N,N,N,N,N,N,37811,N,64714,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,64713,36268,N,64454,35175,N,35966,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64717,N,N,N,N,N,N,N,N,40179,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,64720,N,N,38331,N,N,N,N,N,N,N,N,N,N,N,64723,N,N, -64724,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36270,64727,N,N,N, -N,N,37851,N,N,N,N,65123,N,N,N,N,N,N,N,N,N,N,N,N,37845,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,64730,N,N,N,39793,N,N,64733,N,N,N,N,N,N,N,36271,N,N,N,64242,N,N, -N,N,N,N,N,N,N,N,N,37848,N,N,N,64735,N,N,N,37843,N,N,N,N,N,N,N,64737,N,N,N,N,N, -N,N,N,N,36470,N,N,N,N,N,N,N,64610,N,N,N,N,N,N,N,N,37841,N,N,N,36273,N,N,N,N,N, -N,N,39001,N,N,N,N,N,N,N,N,N,64338,N,N,N,N,N,N,N,N,64339,N,N,N,N,N,64333,N,N, -40127,N,N,N,N,N,N,N,N,39794,N,N,N,N,N,N,N,N,N,N,N,N,N,64336,37822,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40433,64747,N,N,N,N,N, -N,N,N,N,41147,N,39806,N,N,N,N,N,N,N,36275,N,N,35922,N,N,N,N,39656,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,39885,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40403,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,38988,N,N,N,N,N,N,N,N,N,N,38738,N,N,N,N,N,38339,N,N,N,N, +39862,N,N,N,N,N,N,N,N,N,N,N,N,39609,N,N,N,38835,N,N,N,N,N,N,40820,37617,N,N,N, +N,N,N,36090,N,N,N,N,38879,N,N,N,N,64422,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64427,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39031,N,N,N,38996,38341,N,N,N,N,N,N,N,40277, +64434,38270,N,N,N,N,N,N,N,N,38722,N,38118,N,N,N,N,37621,N,N,N,N,N,N,N,36037,N, +N,N,N,N,N,37629,N,N,64418,N,N,40017,N,N,38121,39004,37616,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,37964,N,N,N,N,N,N,N,37227,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35704,N,N,N, +N,38114,N,N,N,N,N,N,N,38991,N,64437,N,N,N,N,37489,N,N,37733,N,N,39003,N,N, +38992,N,N,N,N,N,N,N,38844,N,N,N,N,37619,N,N,37696,38989,N,N,N,38258,N,65007,N, +N,N,N,N,N,N,N,64961,N,N,N,N,64442,N,N,37611,N,N,N,N,N,N,64627,38839,N,N,34671, +N,N,N,N,N,N,64436,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37031,N,N,N,N, +N,N,N,N,N,N,38721,37620,N,34674,N,64444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38263, +N,N,N,N,N,N,N,N,N,N,N,40674,N,36728,N,N,N,N,N,N,N,63964,N,N,N,38514,40629,N,N, +N,38475,N,N,N,36012,N,N,N,N,N,N,N,N,N,41210,N,N,N,N,N,N,N,N,N,N,N,38261,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37082,N,N,37735,N,65188,N,N,N,37087,N,N,N, +N,37716,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35169,N,35764,N,N,N,N, +40384,N,N,N,N,N,N,36424,N,64453,N,N,N,N,N,64455,N,N,N,50891,N,64121,N,N,N,N,N, +N,N,N,N,N,N,N,N,40551,N,N,N,N,N,36057,N,N,N,N,N,N,64466,35170,35171,N,N,N,N,N, +N,N,N,N,N,64637,N,N,N,N,N,N,N,N,N,N,N,N,34675,N,N,N,N,N,N,N,N,N,N,N,40811,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64460,N,65198,N,N,N,34669,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,64465,N,N,N,N,N,N,N,N,N,N,N,64373,64468,N,N,N,N,N,N,N, +N,N,N,N,N,N,64470,64472,N,N,N,N,N,N,N,35677,N,37708,N,39650,N,N,35785,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64475,40905, +N,N,N,N,N,N,N,N,40772,N,N,N,N,N,N,N,N,N,N,39149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,36073,N,N,N,N,N,N,N,N,N,N,N,N,64477,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,36338,35172,N,65010,N,37709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,64487,N,N,N,N,N,N,41202,39016,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40792,N,N,N,36070,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36211,N,N,N,64478,N,N,N,N,N, +64479,N,N,N,N,N,35912,N,N,N,N,N,N,34676,64483,N,N,N,N,36264,N,N,64484,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40053,N,N,39032,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36192,N,N,N,N,N,N,N,64485,N,36193,N,N,N,N,N,N,N,N,N,N,N,N,N,36194,41121,N,N,N, +40000,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39085,N,N,N,40682,N,N,N,36076,N, +N,36052,N,N,N,N,N,N,N,N,N,40171,N,N,N,N,N,64480,N,N,40785,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36197,N,N,N,N,N,N,40177,N,N,N,N,N,N,N,N,N,N,64600,N,N, +36198,N,N,N,N,N,N,N,38484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64488,N,N, +N,50892,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40910,64508,N,39652, +N,N,N,N,N,N,40821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64497, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36201,N,N,N,N,N,37711,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,37710,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,64500,N,N,N,N,50894,N,N,N,64451,N,N,35173,N,N,N,N,N,N,N,N,N,N,N,35962,N, +N,N,N,N,N,35963,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,36202,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37715,N,N,40443,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64509,N,N,N,36953,64576,N, +64577,64579,37729,64582,37730,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36203,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64588,36094,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,38328,N,N,50896,35786,N,N,N,N,N,N,N,N,N,N,39034,N,N,N,N,50897,N, +64593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64596,N,N,N,N,N,N,N,N,64175,N,N,N,N,N,N,N, +36204,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64097,N, +N,64599,N,N,N,N,N,N,N,N,N,39792,N,N,N,N,N,N,N,N,41041,N,N,N,N,N,N,N,35964,N, +35787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37742,N,N,N,64725,64681,N,N, +N,N,N,N,N,N,N,N,N,N,N,64609,N,N,N,N,N,N,N,N,N,35174,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,64203,N,N,N,N,N,N,N,63962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,37754,N,41184,N,N,N,N,N,N,37739,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64619,N,N,N,N,N,41180,N,N,37992,N,N,N,N,N,N, +N,N,N,N,N,64621,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,36209,N,N,N,N,N,N,64868,N,N,N,N,39354,N,N,N,39632,39521,41189,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41051,38572,N,N,N,N,38720,N,N,N,N,N,N,N,N,N,N,N, +N,40689,N,N,N,N,N,N,N,N,35917,N,N,N,N,N,N,N,N,N,N,N,N,N,40830,N,N,N,N,N,N,N,N, +N,N,N,N,36210,N,N,N,N,64630,N,N,N,N,N,N,N,N,N,N,N,N,N,38569,N,N,N,N,N,N,N,N, +41070,N,N,64682,N,N,N,64461,N,N,N,64628,N,N,N,N,N,N,N,N,N,N,41076,N,N,N,N,N,N, +N,N,N,N,N,N,N,41073,N,N,N,64633,N,N,N,N,N,64636,N,N,N,N,N,N,N,N,N,N,N,N,N, +40016,N,N,37753,37752,N,N,41181,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,36213,N,36214,N,N,N,N,N,N,37748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36215,64677, +N,N,64674,N,N,N,N,N,N,37059,N,N,N,N,N,N,N,41081,36217,N,N,N,N,N,N,N,N,N,N, +35836,N,41078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35789,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40794,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40948,N,N,40890,N,N,N,N,N,N,N,N,N,N,36218,N,N,N,N,N,N,N,N,N,N,N,N, +40517,N,N,N,N,N,N,37808,N,41077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39750,N,64686,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64688,N,N,N,N,N,N,N,N,N, +64081,N,N,N,N,N,36219,36220,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40662,N, +N,37804,N,N,N,40795,N,37801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41084,N,N,N,N,N,N,N,64690,N,N,N,N,N,N,N, +N,N,N,N,N,35521,N,N,N,N,N,40884,N,N,N,N,N,N,N,N,N,N,N,64684,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40524, +N,N,N,N,N,N,N,36805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37805,N,N,N,N,N,N,N,N,N,N,N, +N,40387,N,N,N,36258,N,N,N,40266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64694,N,N, +36259,40523,N,40525,36260,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35581,N,N,N,N,N,64693,N,64707,37810,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36261,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37793,N,N,N,N,N,N,N,N,N,N,35526,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,35419,N,N,N,35149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,65236,N,N,N,N,35448,N,37803,N,N,N,N,N,N,N,N,N,36263,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,40773,N,N,N,N,N,N,N,N,N,35414,N,N,N,64703,N,N,N,64704,N,36582, +N,N,35492,35139,N,N,N,N,N,N,37875,N,N,N,N,N,N,N,N,N,N,N,N,64683,40610,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,40391,N,N,N,50898,35790,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,64709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64715,N,N,N,N,N,N,N,N, +N,N,N,37811,N,64714,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64713,36268, +N,64454,35175,N,35966,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,64717,N,N,N,N,N,N,N,N,40179,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,64720,N,N,38331,N,N,N,N,N,N,N,N,N,N,N,64723,N,N,64724,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36270,64727,N,N,N,N,N,37851,N,N,N,N, +65123,N,N,N,N,N,N,N,N,N,N,N,N,37845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64730,N,N,N,39793,N,N,64733,N,34660,N,N,N,N,N,36271,N,N,N,64242,N,N,N,N,N,N,N, +N,N,N,N,37848,N,N,N,64735,N,N,N,37843,N,N,N,N,N,N,N,64737,N,N,N,N,N,N,N,N,N, +36470,N,N,N,N,N,N,N,64610,N,N,N,N,N,N,N,N,37841,N,N,N,36273,N,N,N,N,N,N,N, +39001,N,N,N,N,N,N,N,N,N,64338,N,N,N,N,N,N,N,N,64339,N,N,N,N,N,64333,N,N,40127, +N,N,N,N,N,N,N,N,39794,N,N,N,N,N,N,N,N,N,N,N,N,N,64336,37822,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36059,N,N,N,N,N,N,N,N,N,40433,64747,N,N,N,N,N,N, +N,N,N,41147,N,39806,N,N,N,N,N,N,N,36275,N,N,35922,N,N,N,N,39656,N,N,N,N,N,N, 36572,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40185,N,N,N,N,N,N,N,N,N,N,N,N,N,64080,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39143,64755,N,N,N,N, -64754,N,N,N,36042,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,37861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39513,N,N,N,36277,N,N,N,N,N,N, -N,64845,N,N,N,N,64862,N,N,N,N,N,N,N,N,N,N,N,N,N,36733,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,38215,64758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37456,N,N,N,N,35176,36278,64763,41085,39164,35177,N,N,N,N, -N,N,N,N,65103,N,N,37462,N,N,N,N,N,N,N,N,N,N,64201,N,N,37864,N,N,N,64760,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40163,64937,N,N,N,N,N,N,64580,N,N,N,N,N,N,N,N, -38464,N,N,36280,N,N,N,N,N,N,N,N,N,N,39754,36793,N,N,N,N,N,N,64766,N,N,N,N,N,N, -N,35178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36281,N,N, -N,37246,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37876,N,N,N,N,N,N,N,N,N,N,N,N,N,64380,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37863,N,N,38895,N,N,N,65098,N,N,N,N,N,64837,N, -38565,N,N,N,N,65248,64840,64839,65266,65130,N,N,N,N,N,36285,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,39841,36002,39607,36604,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40865,N,N,N, -N,N,N,N,N,N,64849,N,N,N,N,N,N,N,64173,N,N,N,N,36286,N,N,35236,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39641,N,N,N,N,N,N,N,N,N,N,N,64846,N,N,36288,N,N,38896,N,N,N,N,N,N, -N,N,N,N,37812,64836,N,N,N,N,N,N,N,N,N,N,N,N,40871,N,N,N,N,36290,N,N,N,N,39350, -N,N,N,N,N,N,N,N,N,N,N,N,N,64850,N,N,N,N,N,N,36289,N,N,36422,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,41169,N,N,N,N,N,N,N,N,N,N,N,N,N,40906,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37583,N,N,N,40180,36292,N,N,N,N,N,N,N,N,N,N,64833,N,N,N,N,N,N,N,39756,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,64855,64751,40158,N,N,N,N,N,N,N,64834,39020,N,N,N,N, -N,N,N,N,N,N,N,N,N,38905,N,38232,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39006,65147,38093, -N,N,N,N,N,37870,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36003,N,64858,N,N,N,N,N,N,37877, -N,N,N,N,N,37871,36586,N,N,N,36699,N,N,N,N,N,N,N,N,N,N,N,35934,N,36294,N,N,N,N, -N,N,N,N,N,N,N,36296,N,N,36295,N,N,N,N,N,37879,N,N,N,N,N,N,N,36297,N,N,N,N,N,N, -N,64498,N,N,N,N,38512,N,N,N,N,N,N,N,N,N,36299,N,N,N,64860,N,N,N,N,N,N,N,N,N, -36709,N,N,N,36301,N,N,N,N,N,40360,38137,N,N,36302,N,N,N,N,N,N,N,N,37866,N,N,N, -N,N,N,N,N,N,64863,37872,40886,N,N,N,N,N,N,N,N,N,36303,N,N,N,38755,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36304,37873,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,64866,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40923,N,N,N,N, -37880,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35831,N,N,N,N,64870,N,N,N, -N,N,35791,N,N,N,N,N,N,36305,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64754,N,N,N,36042,N,N,34677,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,37861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39513,N,N,N,36277,N,N,N,N, +N,N,N,64845,N,N,N,N,64862,N,N,N,N,N,N,N,N,N,N,N,N,N,36733,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,38215,64758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,37456,N,N,N,N,35176,36278,64763,41085,39164,35177,N,N, +N,N,N,N,N,N,65103,N,N,37462,N,N,N,N,N,N,N,N,N,N,64201,N,N,37864,N,N,N,64760,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40163,64937,N,N,N,N,N,N,64580,N,N,N,N,N,N, +N,N,38464,N,N,36280,N,N,N,N,N,N,N,N,N,N,39754,36793,N,N,N,N,N,N,64766,N,N,N,N, +N,N,N,35178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36281, +N,N,N,37246,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37876,N,N,N,N,N,N,N,N,N,N,N,N,N, +64380,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37863,N,N,38895,N,N,N,65098,N,N,N,N,N, +64837,N,38565,N,N,N,N,65248,64840,64839,65266,65130,N,N,N,N,N,36285,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39841,36002,39607,36604,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40865,N,N,N,N,N,N,N,N,N,64849,N,N,N,N,N,N,N,64173,N,N,N,N,36286,N,N,35236,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,39641,N,N,N,N,N,N,N,N,N,N,N,64846,N,N,36288,N,N,38896, +N,N,N,N,N,N,N,N,N,N,37812,64836,N,N,N,N,N,N,N,N,N,N,N,N,40871,N,N,N,N,36290,N, +N,N,N,39350,N,N,N,N,N,N,N,N,N,N,N,N,N,64850,N,N,N,N,N,N,36289,N,N,36422,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,41169,N,N,N,N,N,N,N,N,N,N,N,N,N,40906,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,37583,N,N,N,40180,36292,N,N,N,N,N,N,N,N,N,N,64833,N,N,N,N,N,N, +N,39756,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64855,64751,40158,N,N,N,N,N,N,N,64834, +39020,N,N,N,N,N,N,N,N,N,N,N,N,N,38905,N,38232,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39006,65147,38093,N,N,N,N,N,37870,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36003,N,64858, +N,N,N,N,N,N,37877,N,N,N,N,N,37871,36586,N,N,N,36699,N,N,N,N,N,N,N,N,N,N,N, +35934,N,36294,N,N,N,N,N,N,N,N,N,N,N,36296,N,N,36295,N,N,N,N,N,37879,N,N,N,N,N, +N,N,36297,N,N,N,N,N,N,N,64498,N,N,N,N,38512,N,N,N,N,N,N,N,N,N,36299,N,N,N, +64860,N,N,N,N,N,N,N,N,N,36709,N,N,N,36301,N,N,N,N,N,40360,38137,N,N,36302,N,N, +N,N,N,N,N,N,37866,N,N,N,N,N,N,N,N,N,64863,37872,40886,N,N,N,N,N,N,N,N,N,36303, +N,N,N,38755,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36304, +37873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64866,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,64869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40923,N,N,N,N,37880,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35831,N,N,N,N,64870,N,N,N,N,N,35791,N,N,N,N,N,N,36305,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,64881,N,N,N,N,64879,N,N,N,N,N,N,N,N,36307,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40935,37053,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40912,N,N,N,35792,N,64882, +N,40110,35793,N,N,35547,N,N,N,N,N,N,N,N,N,N,N,64228,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,38350,N,64886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64354,N,N,N,N,N,N,36308, +N,N,N,64888,N,N,N,N,N,36579,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36982,N,N,39110,N,N,N,N,N,N,N,36309,N,N,N,N,38865,N,N,40630,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64199,N,N,41026,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,39027,N,N,N,N,N,N,N,N,N,N,40956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,36005,36311,N,N,37627,36312,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,37967,N,36313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,35179,N,N,N,N,N,N,N,N,38862,N,N,N,64243,64942,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64431,37559,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36314,N,N,N,N,N,N,N,N,N,N,N,N,N,40026,N,N,N,N,N,N,64941,N,N,N,N,N,N,N,N,N,N,N, +N,N,36316,37956,N,N,N,N,N,N,N,N,N,N,N,36317,N,N,N,N,N,N,N,41174,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35905,38869,N,37962,N,N,N,N,N, +37965,N,N,N,N,38859,N,N,N,N,N,36318,N,N,36319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36320,65273,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,64960,64761,N,N,N,N,N,N,36061,N,64382,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37555,N,N,N,N,N,64943,N,N,N,N,N,N,N,N,N,36321,N,N,N,N, +38355,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64872,N,N,40119,N,N,36323,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,64192,36325,64100,N,35143,N,N,N,N,36324,N,N,N,N,N,36327, +36328,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64967,64944,N,N,N,N,N,N,37957,38870,N,N, +N,N,N,N,N,N,N,64710,38980,N,N,N,N,N,N,N,N,N,N,N,N,36329,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,36330,N,N,N,N,N,N,N,N,65104,N,N,N,N,N,N,64972,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40359,N,N,N,N,N,64973,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64975,N,N,N,N,38354,N,N,N,N,N,N,N,36333,N,N,N,N,N,N,N,N,64698,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,64965,N,64978,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40156,N,N,N,N,N,38351,N,N,36334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64980, +N,N,N,N,N,38636,38635,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37046,N,64963,39083,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38638, +N,N,N,N,N,N,N,N,N,N,N,N,N,36340,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64992,N,35943,N,N,36342,N,N,N,36343,N,N,N,N,N,N,N,36858,N,N,N,N, +N,N,N,N,N,N,38864,N,N,N,N,35794,N,N,36344,N,N,N,N,N,37081,N,35911,N,64240,N,N, +N,N,64993,36345,N,64995,N,N,N,N,N,N,N,36346,N,64355,N,N,N,37030,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39280,N,N,37355,N,38768,39023,64994,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39154,N,39676,35180,65021,N,N,39262,N,N,N,38333,N,N,N,N,N,N,N,64996, +N,N,N,37350,N,N,N,N,64997,64998,N,N,N,N,N,N,N,N,64999,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,37972,N,N,N,39352,N,N,N,N,N,N,N,N,38889,37702,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,39011,N,N,N,N,N,N,N,N,N,N,N,38332,N,65005,65015,N,N,N, +N,N,N,39024,38646,36521,N,N,N,N,N,37969,N,N,36419,N,35674,N,N,N,N,65006,N,N,N, +N,65008,N,N,N,N,65012,N,39925,N,N,N,N,N,36078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,38782,N,N,N,N,N,39893,N,39619,N,38856,41179,37328,N,N,40932,N,36829,N, +37353,N,N,N,N,N,N,N,N,N,39136,N,N,N,37578,N,38999,N,N,35921,N,N,N,N,65003,N, +39753,N,N,N,N,N,N,N,N,N,40310,40623,N,N,N,N,N,N,N,N,N,40140,N,N,N,N,N,N,65002, +N,N,36337,N,N,65019,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36435,N,N,N,N, +N,N,N,N,N,N,N,64207,N,N,N,N,N,N,N,N,N,N,N,N,N,38649,N,N,N,N,N,N,N,N,N,39103, +40521,36007,N,N,N,N,N,N,N,N,39882,N,N,N,N,65022,37596,N,N,N,N,N,65089,37324, +37346,N,N,N,N,N,N,N,N,N,N,N,N,65092,34655,N,N,N,N,N,35795,N,N,65095,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,65096,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37973,N,N,N,N, +65099,N,65100,N,N,N,N,36287,N,N,N,N,N,N,N,N,N,40568,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,65105,N,N,N,N,37974,N,N,N,N,N,N,N,40289,N,N,N,N, +37975,N,N,N,N,N,N,N,N,N,N,39270,N,N,N,N,N,N,N,N,N,N,N,N,N,35797,N,N,N,N,41065, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39092,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,41033,41036,N,40549,N,N,N,N,N,N,N,N,N,N,N,39093,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65112,N,39285,65107,41061,N,65113,N,N,N,N, +N,N,N,N,N,39095,39096,N,N,N,N,N,N,N,39098,N,N,N,N,N,N,39099,N,N,N,N,N,N,40892, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41034,N,N, +40647,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36009,N,N,39086,N,N,N,N,N, +N,N,N,37590,N,N,N,64225,N,37332,N,N,N,N,N,N,N,N,64222,N,N,65115,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,35923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65118,N,N,N,N,64471,65114, +38085,N,N,N,N,64202,N,N,N,N,N,N,N,N,N,N,N,39105,38748,N,65140,N,38771,N,N,N,N, +N,N,N,N,64070,N,N,N,38756,N,N,N,65128,N,38478,N,38757,35930,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,35233,38394,N,37588,65129,N,64325,N,39112,N,N,37103,N,39113,39114,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37997,38071,65132,N,N,37995,N,N,N, +N,N,N,37628,N,38379,N,65139,38766,65119,N,N,N,N,N,N,N,N,N,64957,N,N,37589,N,N, +N,N,N,N,65209,N,N,65137,34680,N,N,N,64443,N,N,38010,N,N,38395,65143,N,N,N,N,N, +N,N,65145,N,65141,N,N,N,37981,N,N,N,N,N,N,N,65148,N,N,N,N,N,N,N,N,N,37700, +36518,N,N,N,N,N,N,N,N,N,N,N,37587,N,38072,N,34681,N,N,N,N,N,N,64625,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,38750,N,N,N,N,36013,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65191,N,N, +N,37994,N,N,N,37859,N,N,39119,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41177,N,N, +N,N,N,N,N,N,41151,41037,41144,N,N,N,N,N,41166,41143,N,N,N,N,N,N,N,N,65193,N,N, +N,N,N,N,N,N,N,N,35267,N,N,N,N,65195,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40436,35181,N,N,N,N,N,40059,N,N,N,N,N,N,39122,N,N,N,40873,N,N,N,65202,N,N, +65201,N,N,N,38873,N,41156,N,38006,N,N,N,N,N,N,N,N,N,N,39288,N,N,N,N,N,N,65203, +N,N,N,N,N,39123,65204,N,N,N,39124,N,N,N,N,N,N,N,40889,N,N,N,N,N,N,N,N,38001,N, +N,N,N,N,N,N,N,N,39125,65208,N,N,N,50900,N,N,N,N,N,N,N,N,N,N,N,65210,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40540,N,N,65211,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41028,N, +N,N,N,39127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39128,65212,N,N,N,N,40958,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65213,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40413,N,N,N,N,40673,N,N,N,N,N,N,N,N,N,N,N,N,39130, +40415,65215,N,65214,N,N,40683,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40537,41052,N, +N,N,N,N,N,N,65216,N,N,N,38007,39132,N,65217,N,N,N,39134,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,65219,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65224,N,N,N,65225,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65226,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +65227,N,N,N,N,N,N,N,N,N,40898,N,N,35947,39108,N,38064,38065,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,65233,N,N,N,N,N,41153,N,65234,N,N,N,N,41165,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,65235,N,N,39141,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65238, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37348,N,N,N,N,36807,38062,N, +35407,38066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36820,N,N,N,N,39146, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65240,N,N,N,N,N,N,N,N,N,40416,N,N, +N,N,39150,N,N,N,N,38340,N,64744,N,N,N,N,N,39151,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,35950,N,N,N,N,N,N,N,N,64216,N,N,N,N,N,N,N,N,N,N,N,N,N,65244,N,N,N,N,N,N,N, +N,N,41134,40268,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39153,N,N,N,39155,N,38081,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39157,N,N,64079,38626,N,N,N,N, +37968,N,38562,N,N,39158,N,N,N,38629,N,N,N,N,N,39159,N,41030,38627,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40676,N,N,N, +N,N,N,63958,N,N,N,N,N,N,38083,N,N,N,N,38082,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65249,N,65257,N,N,N,N,38628,N,35244,38619,N,N, +N,N,N,N,N,N,N,N,N,N,N,65250,N,N,N,N,N,N,N,N,N,N,38084,65251,N,N,N,65255,40955, +N,N,N,N,N,N,N,N,N,N,N,35929,N,N,N,N,N,N,N,N,N,37833,N,38120,64342,N,N,N,37061, +41128,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,65253,N,N,N,39165,39163,65256,N,36543,N,N,N,N,35800,65271,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36712,38086,N,N,N,N,N,N,N,N,40426,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,64617,N,N,N,N,N,N,N,N,N,N,N,N,40154,N,65267,N,N,40050, +N,N,65264,35273,N,N,N,N,N,N,N,N,N,39233,N,N,N,N,N,N,N,39234,N,N,N,65269,N, +37335,N,N,N,N,N,38092,N,N,N,65272,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,38824,N,65276,N,N,N,36062,N,64959,N,N,N,N,N,N,N,65278,N,N,N,N,N,N,N,N, +N,N,N,N,N,38609,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38101,N,N,38096,39236,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35939,N,N,41139,N,N, +N,N,N,N,N,N,N,N,N,N,38095,N,N,N,40954,N,N,N,N,37349,N,40042,N,N,N,36425,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36428,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36429,N,N,N,N,N,39539,N,N,N,N,N,N,N,N,N,N,N,N,N,39239,N, +36017,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36432,N,N,N,N,N, +N,N,N,N,N,36431,39241,N,N,N,N,N,36433,36434,N,N,N,N,39602,35237,N,N,N,N,N, +39244,N,N,N,40952,N,N,N,N,N,N,36438,39245,37322,36439,N,N,N,N,38113,N,N,N,N, +36935,N,36824,36440,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38123,36444,38227,N, +N,N,N,N,N,N,40933,N,N,N,N,N,N,N,N,N,N,40790,N,N,N,N,N,N,N,38223,N,36446,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,39274,N,N,N,N,N,N,N,N,40036,40153,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,36445,N,N,N,N,N,N,N,N,N,N,N,N,39248,N,N,N,N,N,N,N,N,N,39249,N,N, +36450,N,N,N,N,N,N,N,N,N,N,N,39250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36456,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36449,40793,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35763,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40797,36454,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36018,N,N,N,N,N,N,N,N,N,N,N, +N,N,36462,N,40804,39251,N,N,64184,N,N,N,N,N,39252,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36464,N,N,N,N,N,N,N,N,N,N,N,N,40801,N,36466,N,N,N,N,N,N, +N,N,N,N,N,N,41067,N,N,N,N,40768,N,N,N,N,N,N,38125,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,38126,N,N,40893,N,N,N,36475,N,N,N,N,N,N,39255,38135,N,40799,N,N,N,N,36467,N, +N,40802,N,N,N,N,N,N,N,38134,N,N,N,N,N,N,N,N,N,N,N,N,N,39256,N,N,N,N,N,N,N,N,N, +36469,63963,N,N,N,N,36978,N,38136,N,N,N,N,N,N,N,N,N,39258,N,N,N,N,N,N,N,N,N, +41136,36019,N,N,N,36473,N,36472,N,N,N,38131,N,N,N,N,N,39087,N,N,N,N,N,N,41138, +N,N,N,N,N,N,N,N,N,N,N,36474,N,N,N,N,N,N,39260,N,N,N,N,N,36476,N,36477,N,N,N, +35801,N,N,35234,40663,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,41142,N,N,N,N,N,N,N,N,N,N,N,N,40514,N,N,36516,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64881,N,N,N,N,64879, -N,N,N,N,N,N,N,N,36307,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40935,37053,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40912,N,N,N,35792,N,64882,N,40110,35793,N,N,35547,N, -N,N,N,N,N,N,N,N,N,N,64228,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38350,N,64886,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,64354,N,N,N,N,N,N,36308,N,N,N,64888,N,N,N,N,N, -36579,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36982,N,N, -39110,N,N,N,N,N,N,N,36309,N,N,N,N,38865,N,N,40630,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,64199,N,N,41026,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39027,N,N, -N,N,N,N,N,N,N,N,40956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36005,36311,N,N, -37627,36312,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37967,N, -36313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,35179,N,N,N,N,N,N,N,N,38862,N,N,N,64243,64942,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,64431,37559,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36314,N,N,N,N,N,N,N,N,N, -N,N,N,N,40026,N,N,N,N,N,N,64941,N,N,N,N,N,N,N,N,N,N,N,N,N,36316,37956,N,N,N,N, -N,N,N,N,N,N,N,36317,N,N,N,N,N,N,N,41174,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,35905,38869,N,37962,N,N,N,N,N,37965,N,N,N,N,38859,N,N,N,N, -N,36318,N,N,36319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36320,65273,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64960,64761,N,N,N,N,N, -N,N,N,64382,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37555,N,N, -N,N,N,64943,N,N,N,N,N,N,N,N,N,36321,N,N,N,N,38355,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64872,N,N,40119,N,N, -36323,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64192,36325, -64100,N,35143,N,N,N,N,36324,N,N,N,N,N,36327,36328,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64967,64944,N,N,N,N,N,N,37957,38870,N,N,N,N,N,N,N,N,N,64710,38980,N,N,N,N, -N,N,N,N,N,N,N,N,36329,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36330,N,N,N,N,N,N,N,N, -65104,N,N,N,N,N,N,64972,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40359,N,N,N,N,N, -64973,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64975,N,N,N,N,38354,N,N,N, -N,N,N,N,36333,N,N,N,N,N,N,N,N,64698,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64965, -N,64978,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40156,N,N,N,N,N,38351,N,N, -36334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64980,N,N,N,N,N,38636,38635,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37046,N,64963,39083,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38638,N,N,N,N,N,N,N,N,N,N,N,N,N, -36340,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64992,N, -35943,N,N,36342,N,N,N,36343,N,N,N,N,N,N,N,36858,N,N,N,N,N,N,N,N,N,N,38864,N,N, -N,N,35794,N,N,36344,N,N,N,N,N,37081,N,35911,N,64240,N,N,N,N,64993,36345,N, -64995,N,N,N,N,N,N,N,36346,N,64355,N,N,N,37030,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39280,N,N,37355,N,38768,39023,64994,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39154,N, -39676,35180,65021,N,N,39262,N,N,N,38333,N,N,N,N,N,N,N,64996,N,N,N,37350,N,N,N, -N,64997,64998,N,N,N,N,N,N,N,N,64999,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37972,N, -N,N,39352,N,N,N,N,N,N,N,N,38889,37702,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,39011,N,N,N,N,N,N,N,N,N,N,N,38332,N,65005,65015,N,N,N,N,N,N,39024,38646, -36521,N,N,N,N,N,37969,N,N,36419,N,35674,N,N,N,N,65006,N,N,N,N,65008,N,N,N,N, -65012,N,39925,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38782,N,N,N,N, -N,39893,N,39619,N,38856,41179,37328,N,N,40932,N,36829,N,37353,N,N,N,N,N,N,N,N, -N,39136,N,N,N,37578,N,38999,N,N,35921,N,N,N,N,65003,N,39753,N,N,N,N,N,N,N,N,N, -40310,40623,N,N,N,N,N,N,N,N,N,40140,N,N,N,N,N,N,65002,N,N,36337,N,N,65019,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36435,N,N,N,N,N,N,N,N,N,N,N,64207,N,N, -N,N,N,N,N,N,N,N,N,N,N,38649,N,N,N,N,N,N,N,N,N,39103,40521,36007,N,N,N,N,N,N,N, -N,39882,N,N,N,N,65022,37596,N,N,N,N,N,65089,37324,37346,N,N,N,N,N,N,N,N,N,N,N, -N,65092,N,N,N,N,N,N,35795,N,N,65095,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65096,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37973,N,N,N,N,65099,N,65100,N,N,N,N,36287,N,N,N,N, -N,N,N,N,N,40568,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65105,N, -N,N,N,37974,N,N,N,N,N,N,N,40289,N,N,N,N,37975,N,N,N,N,N,N,N,N,N,N,39270,N,N,N, -N,N,N,N,N,N,N,N,N,N,35797,N,N,N,N,41065,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,39092,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41033,41036,N, -40549,N,N,N,N,N,N,N,N,N,N,N,39093,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,65112,N,39285,65107,41061,N,65113,N,N,N,N,N,N,N,N,N,39095,39096,N,N,N,N,N,N, -N,39098,N,N,N,N,N,N,39099,N,N,N,N,N,N,40892,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41034,N,N,40647,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,36009,N,N,39086,N,N,N,N,N,N,N,N,37590,N,N,N,64225,N,37332,N,N, -N,N,N,N,N,N,64222,N,N,65115,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35923,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,65118,N,N,N,N,64471,65114,38085,N,N,N,N,64202,N,N,N,N,N,N,N,N,N, -N,N,39105,38748,N,65140,N,38771,N,N,N,N,N,N,N,N,64070,N,N,N,38756,N,N,N,65128, -N,38478,N,38757,35930,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35233,38394,N,37588,65129,N, -64325,N,39112,N,N,37103,N,39113,39114,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,37997,38071,65132,N,N,37995,N,N,N,N,N,N,37628,N,38379,N,65139,38766, -65119,N,N,N,N,N,N,N,N,N,64957,N,N,37589,N,N,N,N,N,N,65209,N,N,65137,N,N,N,N, -64443,N,N,38010,N,N,38395,65143,N,N,N,N,N,N,N,65145,N,65141,N,N,N,37981,N,N,N, -N,N,N,N,65148,N,N,N,N,N,N,N,N,N,37700,36518,N,N,N,N,N,N,N,N,N,N,N,37587,N, -38072,N,N,N,N,N,N,N,N,64625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38750,N,N,N,N,36013, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,65191,N,N,N,37994,N,N,N,37859,N,N,39119,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,41177,N,N,N,N,N,N,N,N,41151,41037,41144,N,N,N,N,N, -41166,41143,N,N,N,N,N,N,N,N,65193,N,N,N,N,N,N,N,N,N,N,35267,N,N,N,N,65195,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40436,35181,N,N,N,N,N,40059,N,N,N,N,N,N, -39122,N,N,N,40873,N,N,N,65202,N,N,65201,N,N,N,38873,N,41156,N,38006,N,N,N,N,N, -N,N,N,N,N,39288,N,N,N,N,N,N,65203,N,N,N,N,N,39123,65204,N,N,N,39124,N,N,N,N,N, -N,N,40889,N,N,N,N,N,N,N,N,38001,N,N,N,N,N,N,N,N,N,39125,65208,N,N,N,50900,N,N, -N,N,N,N,N,N,N,N,N,65210,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40540,N,N,65211,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,41028,N,N,N,N,39127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,39128,65212,N,N,N,N,40958,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,65213,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40413,N,N,N,N, -40673,N,N,N,N,N,N,N,N,N,N,N,N,39130,40415,65215,N,65214,N,N,40683,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40537,41052,N,N,N,N,N,N,N,65216,N,N,N,38007,39132,N, -65217,N,N,N,39134,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65219,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,65224,N,N,N,65225,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65226, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65227,N,N,N,N,N,N,N,N,N,40898,N,N, -35947,39108,N,38064,38065,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65233,N,N,N,N,N,41153,N, -65234,N,N,N,N,41165,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65235,N,N,39141,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65238,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,37348,N,N,N,N,36807,38062,N,35407,38066,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,36820,N,N,N,N,39146,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,65240,N,N,N,N,N,N,N,N,N,40416,N,N,N,N,39150,N,N,N,N,38340,N,64744,N, -N,N,N,N,39151,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35950,N,N,N,N,N,N,N,N,64216,N, -N,N,N,N,N,N,N,N,N,N,N,N,65244,N,N,N,N,N,N,N,N,N,41134,40268,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39153,N,N,N,39155,N,38081,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39157,N,N,64079,38626,N,N,N,N,37968,N,38562,N,N,39158,N,N,N,38629, -N,N,N,N,N,39159,N,41030,38627,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39160,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40676,N,N,N,N,N,N,63958,N,N,N,N,N,N,38083,N,N,N, -N,38082,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -65249,N,65257,N,N,N,N,38628,N,35244,38619,N,N,N,N,N,N,N,N,N,N,N,N,N,65250,N,N, -N,N,N,N,N,N,N,N,38084,65251,N,N,N,65255,40955,N,N,N,N,N,N,N,N,N,N,N,35929,N,N, -N,N,N,N,N,N,N,37833,N,38120,64342,N,N,N,37061,41128,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65253,N,N,N,39165,39163, -65256,N,36543,N,N,N,N,35800,65271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36712,38086,N,N,N,N,N,N,N,N,40426,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64617, -N,N,N,N,N,N,N,N,N,N,N,N,40154,N,65267,N,N,40050,N,N,65264,35273,N,N,N,N,N,N,N, -N,N,39233,N,N,N,N,N,N,N,39234,N,N,N,65269,N,37335,N,N,N,N,N,38092,N,N,N,65272, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38824,N,65276,N,N,N,N,N, -64959,N,N,N,N,N,N,N,65278,N,N,N,N,N,N,N,N,N,N,N,N,N,38609,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,38101,N,N,38096,39236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35939,N,N,41139,N,N,N,N,N,N,N,N,N,N,N,N,38095,N,N,N, -40954,N,N,N,N,37349,N,40042,N,N,N,36425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,36428,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36429,N,N, -N,N,N,39539,N,N,N,N,N,N,N,N,N,N,N,N,N,39239,N,36017,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36432,N,N,N,N,N,N,N,N,N,N,36431,39241,N,N,N,N,N, -36433,36434,N,N,N,N,39602,35237,N,N,N,N,N,39244,N,N,N,40952,N,N,N,N,N,N,36438, -39245,37322,36439,N,N,N,N,38113,N,N,N,N,36935,N,36824,36440,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,38123,36444,38227,N,N,N,N,N,N,N,40933,N,N,N,N,N,N,N,N,N,N, -40790,N,N,N,N,N,N,N,38223,N,36446,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39274,N,N,N,N, -N,N,N,N,40036,40153,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36445,N,N,N,N,N,N,N,N,N, -N,N,N,39248,N,N,N,N,N,N,N,N,N,39249,N,N,36450,N,N,N,N,N,N,N,N,N,N,N,39250,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36456,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36449,40793,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35763,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,40797,36454,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,36018,N,N,N,N,N,N,N,N,N,N,N,N,N,36462,N,40804,39251,N,N,64184,N,N, -N,N,N,39252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36464,N,N,N,N,N, -N,N,N,N,N,N,N,40801,N,36466,N,N,N,N,N,N,N,N,N,N,N,N,41067,N,N,N,N,40768,N,N,N, -N,N,N,38125,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38126,N,N,40893,N,N,N,36475,N,N,N,N, -N,N,39255,38135,N,40799,N,N,N,N,36467,N,N,40802,N,N,N,N,N,N,N,38134,N,N,N,N,N, -N,N,N,N,N,N,N,N,39256,N,N,N,N,N,N,N,N,N,36469,63963,N,N,N,N,36978,N,38136,N,N, -N,N,N,N,N,N,N,39258,N,N,N,N,N,N,N,N,N,41136,36019,N,N,N,36473,N,36472,N,N,N, -38131,N,N,N,N,N,39087,N,N,N,N,N,N,41138,N,N,N,N,N,N,N,N,N,N,N,36474,N,N,N,N,N, -N,39260,N,N,N,N,N,36476,N,36477,N,N,N,35801,N,N,35234,40663,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41142,N,N,N,N,N,N, -N,N,N,N,N,N,40514,N,N,36516,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36519,N,35958,N,N,N,N,N,N,N,N,N,N,N,38210, -N,N,N,N,N,N,N,N,N,N,N,N,39037,N,N,N,38741,N,N,36520,N,N,N,N,N,N,N,36522,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35235,N,39264,39266,N,N,38140, -39265,N,N,N,N,N,N,N,38138,N,N,N,N,N,N,N,36526,36530,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,36528,N,N,N,N,N,N,N,39267,38826,38139,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,36539,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36060,N,N,N,N,N,N,N,N, -N,39030,N,36513,N,N,N,N,36020,N,36535,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40358,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40624,N,N,N,36536,N,N,N,N,N,N,N,N,N,N,N,N,40304,N,N, -N,N,35182,N,N,N,N,N,N,N,35183,N,N,N,N,N,N,N,N,N,N,N,N,N,35184,N,N,N,N,N,N,N,N, -N,N,N,N,35185,N,N,N,N,N,N,N,35186,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35187,35188,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35189,N,N,N,N,N,N,N,N,36540,36541,N,N,N,N,N,36542,N,40401,N,N, -N,N,38141,N,N,N,35799,35802,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,41186,N,N,N,N,N,N,40937,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64936,N,N,N,35559,N,N,N,36546,N,N,N,N,N,N,N,N,N,N,N,36548,N,N,N,N,N,N,N,N,N,N, -39268,N,N,N,N,N,39269,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,38222,N,N,N,N,N,N,N,N,N,39091,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,36555,35807,N,N,N,N,N,36558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,36559,N,N,39272,N,N,N,N,39273,N,N,N,N,N,N,N,N,39275,36561,N,39276,N,N,N,N,N, -N,N,N,N,36564,36565,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39277,N,N,N, -N,N,N,41150,N,N,N,N,N,36566,41148,41141,N,N,41140,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,35253,N,N,N,N,N,N,N,36573,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40541,39281,N, -N,N,N,35246,40424,N,N,N,N,N,N,N,N,38245,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39282,N,N,35676,N,N,N,N,N,N,N,N,N,35249,41152,N, -N,N,36575,N,38246,N,N,39284,N,39286,N,N,N,39287,N,39289,N,N,40410,N,N,36576,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37724,N,N,N,N,N,N,N,40422,N,35679,N,N,38243,N,N,N, -N,N,N,N,N,N,N,38247,N,N,N,N,N,40419,N,N,N,N,N,N,N,N,N,N,N,N,N,39292,N,N,39293, -39294,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35675,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39331,N,N,N,N,N,N,N,39332,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39334,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39336,N,N,N,N,35518,N,N,N,N,N,N,N,N,N,N,N,40545,N,N,N,N,N,N,N, -N,N,N,39338,N,N,N,N,N,N,41160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,39339,N,N,N,N,N,N,N,N,N,N,65220,N,N,N,N,N,N,39106,36584,N,41146,N,N,N,N, -N,N,N,N,N,N,N,64887,N,N,36590,N,N,N,40639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39340,N,N,N,N,N,N,N,N,N,N,N,N, -N,38251,N,N,38252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39343,N,N,39242,35190,36680, -N,N,N,N,N,N,N,N,N,N,N,64494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,39342,N,N,N,36603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36048,N,N, -N,N,35666,N,N,N,N,N,39344,N,N,N,N,35191,36673,N,N,N,N,N,N,N,39345,N,N,N,N,N,N, -N,N,N,36681,N,N,N,N,N,N,N,N,N,N,N,64077,N,N,N,N,N,N,N,N,40420,36021,N,N,N, -64489,39764,N,39346,40552,N,N,N,N,N,N,N,N,N,N,N,N,36682,N,36674,N,N,36689,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38982,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39348,N,N,N,N,N,N,N,N,N,N,36597,64853,N,N, -40141,N,N,N,N,N,N,N,N,35192,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36691,N, -N,N,N,N,N,N,N,N,N,N,36719,N,N,N,N,N,N,N,N,N,N,36451,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,36694,N,N,N,N,N,N,N,N,N,N,N,N,65142,N,N,N,N,40902,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64172,N,N,N,N,N,36696,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38984,39351,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38501,N,64108,N,40423,N,N,N,40546,N,N, -N,38604,36455,N,N,64629,N,39038,N,N,N,N,N,N,N,64953,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,38908,N,N,N,N,N,N,N,N,N,39161,N,36710,N,N,N,N,N,N,N,N,38254,N,37445,N,N, -36704,N,N,N,40657,N,N,N,N,N,65229,N,39353,N,N,N,N,N,N,N,N,N,N,N,N,36706,38732, -N,N,N,N,N,N,N,N,N,N,N,N,37319,38239,N,N,N,N,N,N,N,39355,N,N,N,N,N,N,N,N,N, -36461,36721,N,N,38091,N,N,N,N,N,N,N,N,N,N,N,N,38321,N,N,N,N,N,N,N,N,N,39666,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,38595,39357,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,41167,N,N,N,36717,N,N,39358,36596,N,36722,38372,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,39359,37442,N,64421,N,N,N,N,N,N,N,N,N,N,39360,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64948,36727,N,N,N, -39361,N,N,N,N,N,N,N,N,N,64185,N,N,N,N,N,N,N,N,36672,64068,N,N,N,N,N,39362,N,N, -N,N,N,N,N,36700,N,N,N,N,36029,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39364,39365,N,N, -36731,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36022,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36046,N,N,N,N,N,N,N,N, -N,39366,N,N,N,N,N,N,N,N,N,N,N,N,N,38605,N,N,N,N,N,N,N,N,N,N,N,N,N,38599,36773, -N,N,N,N,N,N,N,N,N,N,64187,N,35937,38256,N,N,N,37736,N,36734,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,36778,N,N,N,N,N,N,41040,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37075,N,N,38230,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,36792,N,N,N,N,N,39368,N,N,N,N,N,N,N,N,N,N,N,36783,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,39369,N,N,N,N,N,N,N,N,N,N,N,N,N,38265,N,N,N,N,N,N,N,N, -N,N,N,N,40777,N,N,N,N,39370,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39371, -40405,36784,N,N,N,N,N,N,N,N,N,N,N,64122,N,N,N,N,N,N,N,N,40543,N,N,N,N,39373, -41161,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39643,N,N,N,41158,N,N,N, -N,N,N,N,36788,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41175,N,N,N,N,N,N,N,N,N,N,N,N, -41159,N,N,N,N,N,N,N,41027,N,N,N,36789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36786,N,N,N,N,N,N,41057,40542,N,N,N,N,N,N,N,N,N,N,36790,N,N,N,N,N,N,N,N,40936, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,40114,N,N,N,N,N,38268,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,40903,N,N,36795,36796,N,N,N,N,N,N,N,N,36844,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36800,N,37738,N,N,N,35812,40060,N,N,N,N,N,N,N,N,38305,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,65260,N,N,38307,N,N,N,N,N,N,N,35909,36024,N,N,N,N,N,N, -N,N,N,N,N,36801,N,N,N,41042,N,N,N,N,N,N,N,N,N,N,N,N,N,39376,N,N,N,N,N,36803, -36804,N,N,N,N,N,N,N,N,N,38308,N,N,N,N,N,36806,N,40544,N,N,N,N,N,N,N,63960,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38309,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40115,N,N,N,N,N,N,N,N,N,39377,65265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,39378,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40130,N,N,N,39379,N,N,N,N,N,38311,N,N,N,N,N,N,38313,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,38310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40029,N,N,N,N,N, -N,N,N,39138,N,N,N,N,N,N,36809,N,41154,36810,N,N,N,N,N,N,39380,N,N,41145,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,39768,N,36813,N,41172,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36814,N,N,N,N,35813,N,N,N,N,35193,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,36816,38326,N,N,N,N,N,N,N,N,N,N,N,N,39382,N,38373,N, -N,N,N,N,N,N,N,N,N,N,N,39383,N,N,N,N,38325,N,N,N,N,N,N,N,N,N,N,N,41162,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40957,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,41048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36822,N,N,N, -39384,N,N,N,N,N,N,N,36819,N,N,N,N,N,N,N,N,N,N,N,N,36837,N,N,N,N,N,36841,N,N,N, -N,39385,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37500,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40005,36830,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36831,N,N,N,N,N,N,N,N,N,N,N,N,N,41035,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,36834,N,N,N,41164,N,N,N,N,N,N,N,N,36835,36836,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39876,N,N,N,39932,N,N,N,N,N,N,38476,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,39670,N,36014,N,N,N,N,N,N,N,N,N,N,N,N,36839,N,N,N,N,N,N,N,N,N,N,36840, -N,N,N,N,35815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35194, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35195, -39386,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36519,N,35958,N,N,N,N,N,N,N,N,N,34663,N,38210,N,N,N,N,N,N,N,N,N,N,N,N,39037,N, +N,N,38741,N,N,36520,N,N,N,N,N,N,N,36522,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35235,N,39264,39266,N,N,38140,39265,N,N,N,N,N,N,N,38138,N,N,N,N,N, +N,N,36526,36530,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36528,N,N,N,N,N,N,N,39267,38826, +38139,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36539,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,36060,N,N,N,N,N,N,N,N,N,39030,N,36513,N,N,N,N,36020,N, +36535,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40358,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40624, +N,N,N,36536,N,N,N,N,N,N,N,N,N,N,N,N,40304,N,N,N,N,35182,N,N,N,N,N,N,N,35183,N, +N,N,N,N,N,N,N,N,N,N,N,N,35184,N,N,N,N,N,N,N,N,N,N,N,N,35185,N,N,N,N,N,N,N, +35186,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35187,35188,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35189,N,N,N, +N,N,N,N,N,36540,36541,N,N,N,N,N,36542,N,40401,N,N,N,N,38141,N,N,N,35799,35802, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41186,N,N,N,N,N,N, +40937,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64936,N,N,N,35559,N,N,N, +36546,N,N,N,N,N,N,N,N,N,N,N,36548,N,N,N,N,N,N,N,N,N,N,39268,N,N,N,N,N,39269,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38222,N,N,N,N,N,N,N,N,N,39091,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36555,35807, +N,N,N,N,N,36558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36559,N,N,39272,N,N,N, +N,39273,N,N,N,N,N,N,N,N,39275,36561,N,39276,N,N,N,N,N,N,N,N,N,36564,36565,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39277,N,N,N,N,N,N,41150,N,N,N,N,N, +36566,41148,41141,N,N,41140,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35253,N,N,N, +N,N,N,N,36573,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40541,39281,N,N,N,N,35246,40424,N,N, +N,N,N,N,N,N,38245,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,39282,N,N,35676,N,N,N,N,N,N,N,N,N,35249,41152,N,N,N,36575,N,38246,N,N, +39284,N,39286,N,N,N,39287,N,39289,N,N,40410,N,N,36576,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37724,N,N,N,N,N,N,N,40422,N,35679,N,N,38243,N,N,N,N,N,N,N,N,N,N,38247,N, +N,N,N,N,40419,N,N,N,N,N,N,N,N,N,N,N,N,N,39292,N,N,39293,39294,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,36091,35675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39331,N,N,N,N,N,N,N, +39332,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39336,N,N,N,N,35518,N,N,N,N,N,N,N,N,N,N,N,40545,N,N,N,N,N,N,N,N,N,N,39338,N,N, +N,N,N,N,41160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39339,N,N, +N,N,N,N,N,N,N,N,65220,N,N,N,N,N,N,39106,36584,N,41146,N,N,N,N,N,N,N,N,N,N,N, +64887,N,N,36590,N,N,N,40639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35266,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39340,N,N,N,N,N,N,N,N,N,N,N,N,N,38251,N,N,38252, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39343,N,N,39242,35190,36680,N,N,N,N,N,N,N,N,N, +N,N,64494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39342,N, +N,N,36603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36048,N,N,N,N,35666,N,N,N,N, +N,39344,N,N,N,N,35191,36673,N,N,N,N,N,N,N,39345,N,N,N,N,N,N,N,N,N,36681,N,N,N, +N,N,N,N,N,N,N,N,64077,N,N,N,N,N,N,N,N,40420,36021,N,N,N,64489,39764,N,39346, +40552,N,N,N,N,N,N,N,N,N,N,N,N,36682,N,36674,N,N,36689,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38982,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,39348,N,N,N,N,N,N,N,N,N,N,36597,64853,N,N,40141,N,N,N,N,N,N,N, +N,35192,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36691,N,N,N,N,N,N,N,N,N,N,N, +36719,N,N,N,N,N,N,N,N,N,N,36451,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36694,N,N,N,N,N, +N,N,N,N,N,N,N,65142,N,N,N,N,40902,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64172,N,N,N,N,N, +36696,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38984,39351,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,38501,N,64108,N,40423,N,N,N,40546,N,N,N,38604,36455,N,N, +64629,N,39038,N,N,N,N,N,N,N,64953,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38908,N,N,N,N, +N,N,N,N,N,39161,N,36710,N,N,N,N,N,N,N,N,38254,N,37445,N,N,36704,N,N,N,40657,N, +N,N,N,N,65229,N,39353,N,N,N,N,N,N,N,N,N,N,N,N,36706,38732,N,N,N,N,N,N,N,N,N,N, +N,N,37319,38239,N,N,N,N,N,N,N,39355,N,N,N,N,N,N,N,N,N,36461,36721,N,N,38091,N, +N,N,N,N,N,N,N,N,N,N,N,38321,N,N,N,N,N,N,N,N,N,39666,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,38595,39357,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41167,N, +N,N,36717,N,N,39358,36596,N,36722,38372,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39359,37442,N,64421,N,N,N,N,N,N,N,N,N,N,39360,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64948,36727,N,N,N,39361,N,N,N,N,N,N,N,N,N, +64185,N,N,N,N,N,N,N,N,36672,64068,N,N,N,N,N,39362,N,N,N,N,N,N,N,36700,N,N,N,N, +36029,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39364,39365,N,N,36731,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34678,N,N,N,36022,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36771,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36046,N,N,N,N,N,N,N,N,N,39366,N,N,N,N,N,N,N,N, +N,N,N,N,N,38605,N,N,N,N,N,N,N,N,N,N,N,N,N,38599,36773,N,N,N,N,N,N,N,N,N,N, +64187,N,35937,38256,N,N,N,37736,N,36734,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36778,N,N,N,N,N,N,41040,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37075,N,N,38230,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36845,N,N,N,38336,N,N,N,N,N,N,N,N,N,N,N,N,N,41163,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40520,N,N,N,N,N,N,39387,N,36851,N,N,N,N, -36857,N,N,N,N,N,N,N,N,N,N,N,N,N,38337,N,41038,N,N,N,N,N,N,39388,N,N,N,N,41060, -36855,N,N,N,N,N,N,N,35248,41032,N,N,N,N,36859,36854,N,N,N,N,N,40412,N,N,N, -39389,35816,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37569,N,N,N,N,N,N,N,40918,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41170,N,N,36928,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35524,N,N,39392,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40944,40947,N,N,N,N,N,N,N,N,N,N,N,N,40383,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,40950,N,38344,N,N,40538,N,N,N,N,N,N,N,N,N,N,N,N,39395, -N,N,N,N,N,N,N,N,N,N,N,35402,N,N,N,N,N,N,N,N,40945,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,35495,N,N,N,N,N,N,N,N,39398,N,N,N,40951,N,40941,N,N,N,N,N, -N,35420,N,40366,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38345,N,N,N,N,N,36936,N,N,39400,N,N,N,N,N,36937,N,N,36026,N,N, -37041,N,N,N,N,N,N,36938,N,N,N,N,N,N,N,N,N,N,39402,N,N,N,N,N,N,N,N,N,N,N,39889, -N,N,N,N,N,N,N,39403,N,39404,N,N,N,N,N,N,N,N,39405,N,N,N,N,39406,36940,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36941,N,N,38347,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38882,N,N,N,N,N,N,N,N,38348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40824,N,N,N,N,N, -N,N,N,N,35196,35197,N,N,N,N,N,N,35198,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39261,N,N,N,N,N,N,N,N,N,N,N,N,39770,N,N,N,N, -36944,N,35919,N,N,N,N,N,N,N,N,N,N,N,36948,N,50902,39592,39407,65259,40355, +36792,N,N,N,N,N,39368,N,N,N,N,N,N,N,N,N,N,N,36783,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39369,N,N,N,N,N,N,N,N,N,N,N,N,N,38265,N,N,N,N,N,N,N,N,N,N,N,N,40777, +N,N,N,N,39370,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39371,40405,36784,N,N, +N,N,N,N,N,N,N,N,N,64122,N,N,N,N,N,N,N,N,40543,N,N,N,N,39373,41161,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39643,N,N,N,41158,N,N,N,N,N,N,N,36788,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,41175,N,N,N,N,N,N,N,N,N,N,N,N,41159,N,N,N,N,N,N,N, +41027,N,N,N,36789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36786,N,N,N,N,N,N, +41057,40542,N,N,N,N,N,N,N,N,N,N,36790,N,N,N,N,N,N,N,N,40936,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40114,N,N,N,N,N,38268,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40903, +N,N,36795,36796,N,N,N,N,N,N,N,N,36844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36800,N, +37738,N,N,N,35812,40060,N,N,N,N,N,N,N,N,38305,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,65260,N,N,38307,N,N,N,N,N,N,N,35909,36024,N,N,N,N,N,N,N,N,N,N,N, +36801,N,N,N,41042,N,N,N,N,N,N,N,N,N,N,N,N,N,39376,N,N,N,N,N,36803,36804,N,N,N, +N,N,N,N,N,N,38308,N,N,N,N,N,36806,N,40544,N,N,N,N,N,N,N,63960,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38309,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40115,N,N,N,N,N, +N,N,N,N,39377,65265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,39378,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40130,N,N,N,39379,N,N,N,N,N,38311,N,N,N,N,N,N,38313,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,38310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40029,N,N,N,N,N,N,N,N,39138,N,N, +N,N,N,N,36809,N,41154,36810,N,N,N,N,N,N,39380,N,N,41145,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39768,N,36813,N,41172,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36814,N,N, +N,N,35813,N,N,N,N,35193,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,36816,38326,N,N,N,N,N,N,N,N,N,N,N,N,39382,N,38373,N,N,N,N,N,N,N,N,N, +N,N,N,39383,N,N,N,N,38325,N,N,N,N,N,N,N,N,N,N,N,41162,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40957,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,41048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36822,N,N,N,39384,N,N,N,N,N,N,N, +36819,N,N,N,N,N,N,N,N,N,N,N,N,36837,N,N,N,N,N,36841,N,N,N,N,39385,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36087,N,N,N,N,N,N,N,N,N,N,N,N,N,37500,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,40005,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36072,36830,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,36831,N,N,N,N,N,N,N,N,N,N,N,N,N,41035,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36834,N,N,N,41164,N,N,N,N,N,N,N,N,36835,36836,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39876,N,N,N,39932,N,N,N,N,N,N,38476,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,39670,N,36014,N,N,N,N,N,N,N,N,N,N,N,N,36839,N,N,N,N, +N,N,N,N,N,N,36840,N,N,N,N,35815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35194,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,35195,39386,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36845,N,N,N,38336,N,N,N,N,N,N,N,N,N,N,N,N,N,41163,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40520,N,N,N,N,N,N,39387,N,36851, +N,N,N,N,36857,N,N,N,N,N,N,N,N,N,N,N,N,N,38337,N,41038,N,N,N,N,N,N,39388,N,N,N, +N,41060,36855,N,N,N,N,N,N,N,35248,41032,N,N,N,N,36859,36854,N,N,N,N,N,40412,N, +N,N,39389,35816,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37569,N,N,N,N,N,N,N,40918,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41170,N,N,36928, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35524,N,N,39392,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,40944,40947,N,N,N,N,N,N,N,N,N,N,N,N,40383,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,40950,N,38344,N,N,40538,N,N,N,N,N,N,N,N,N,N,N,N, +39395,N,N,N,N,N,N,N,N,N,N,N,35402,N,N,N,N,N,N,N,N,40945,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35495,N,N,N,N,N,N,N,N,39398,N,N,N,40951,N,40941,N,N, +N,N,N,N,35420,N,40366,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,38345,N,N,N,N,N,36936,N,N,39400,N,N,N,N,N,36937,N,N,36026, +N,N,37041,N,N,N,N,N,N,36938,N,N,N,N,N,N,N,N,N,N,39402,N,N,N,N,N,N,N,N,N,N,N, +39889,N,N,N,N,N,N,N,39403,N,39404,N,N,N,N,N,N,N,N,39405,N,N,N,N,39406,36940,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36941,N,N,38347,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,38882,N,N,N,N,N,N,N,N,38348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40824,N,N, +N,N,N,N,N,N,N,35196,35197,N,N,N,N,N,N,35198,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39261,N,N,N,N,N,N,N,N,N,N,N,N,39770,N,N, +N,N,36944,N,35919,N,N,N,N,N,N,N,N,N,N,N,36948,N,50902,39592,39407,65259,40355, 40353,39235,39237,N,40317,N,N,39408,N,N,N,N,N,N,N,N,39409,N,39410,N,N,36028, 40288,N,N,N,N,N,N,N,N,N,41123,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,36955,40667,N,N,N,N,N,N,N,N,N,40313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, @@ -1259,82 +1275,76 @@ N,N,N,N,37063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37604,40786,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,37083,N,N,N,N,N,41062,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37074,N,N,N,N,37076,N,N,N,N,N,N,N,N,N,39515,38397,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,35780,N,N,N,35942,N,37086,N,N,N,N,N,40164,N,37089,N,N,N,N,N,N,N,N,N,N,N,N,N, -40518,N,N,N,38481,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64344,N,37094,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38480,N,N,N,37095,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37096,39517,N,40826,N,N,N,39772,N,40828,N,N,64594,37097,N,37098,N,39518,N, -N,N,N,N,40822,N,N,N,N,N,N,N,N,N,37099,N,N,N,N,N,N,N,N,N,N,N,N,N,37100,N,N,N,N, -N,35822,N,N,N,N,N,N,N,37102,N,N,N,37318,N,N,37106,64700,35444,N,N,N,N,N,N,N,N, -N,38487,N,N,N,40175,N,N,N,N,N,N,N,N,N,N,40927,N,N,N,N,37111,37110,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,39774,N,N,N,37112,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,37113,N,36041,N,N,N,64106,N,N,N,N,N,N,N,N,35823,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40928,N,N,37186,N,39522,N,N,N,N,N,N,N,N,N, -38249,N,N,N,37188,37187,N,37185,N,N,N,35824,N,N,N,N,N,N,N,N,N,N,N,N,N,38496,N, -35825,N,39414,37193,N,N,N,N,37194,N,N,N,N,N,37195,N,N,N,N,39524,N,N,N,35519, -39526,N,N,N,N,N,N,N,N,N,N,39527,N,N,39529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39530,38482,37197,N,38502,N,N,N,N,40827,N,39531,N,N,N,N,N,N,N, -41068,N,N,38503,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39532,N,N,N,N,39533,35826,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,38506,N,N,N,N,N,N,N,N,64746,N,N,N,N,N,38508,N,N,N,N, -N,N,N,N,N,N,N,N,N,37316,N,N,N,38519,N,N,N,N,N,N,N,39412,39535,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,40875,N,N,N,N,N,36030,36545,N,N,N,N,38229,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,37202,37203,N,N,N,37205,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38237,N, -38513,N,N,N,N,40045,N,N,N,N,N,N,N,N,38515,N,N,N,N,N,N,N,N,N,N,N,37204,39537,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37206,N,N,N,38509,N,N,N,N, -N,N,38231,N,N,N,N,N,N,N,N,35270,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,35434,N,N,N,35671,N,N,N,40929,N,N,39775,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41053,N,N,N,N,N,N,N,N,37211,N,37212,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,37214,N,N,N,N,N,N,N,N,N,N,40796,40791,N,N,N,N,N,N,40805, -N,N,N,N,N,39538,N,N,N,N,37216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40798, -N,N,37217,N,N,N,N,N,N,37220,N,N,N,N,40769,N,N,N,N,N,N,37225,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,37224,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39540,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38578,N,39541,N,64933,N,N,N,N,N,N,N,40681, -N,35770,37229,41056,N,N,N,N,N,N,N,40926,N,N,N,N,N,40899,N,38581,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,41063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,38579,N,N,N,N,N,N,N,N,N,N,N,N,N,39542,N,N,N,N,N,N,N,N,N,N,N,38357,N,N,N, -40650,N,N,N,39543,N,N,39544,N,N,N,N,N,N,N,N,N,N,37232,37231,N,N,N,N,N,N,N, -40867,N,37233,N,N,N,38577,N,N,N,N,40803,N,N,N,N,N,40807,N,N,N,35769,39546,N,N, -N,N,N,35670,N,N,N,N,N,N,N,N,39642,N,N,N,N,N,38576,N,N,N,N,39550,N,N,N,N,N,N,N, -N,N,N,40414,N,N,N,N,N,N,N,N,N,38573,N,N,N,38574,N,N,N,N,N,N,N,N,N,40609,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40528,N,N,N,N,N,N,N,N,38575,35828,40868,N,N, -N,N,N,N,N,N,N,38589,N,N,N,N,N,N,N,N,N,38644,N,N,N,N,N,N,N,N,N,N,38584,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,64161,N,N,N,N,37287,N,N,N,N,N,N,N,N,N,N,41054,N,N, -N,N,39549,N,N,N,N,35144,N,40625,N,N,N,N,N,N,N,N,N,N,N,N,N,40411,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38335,35443,N,N,N,N,N,N,N,N,N,N,N,N,N,40702,N,37242,N,N,N,N, -37243,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39587,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38594,N,N,N,N,N,40823,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39588,N,N,39589,N,N,N, -37281,N,N,N,N,35256,N,N,N,N,N,N,N,N,N,N,37235,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39590,35261,N,35257,N,37245,N,N, -N,N,N,N,N,N,N,38587,N,N,N,40946,N,N,35829,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39593,N,N, -N,N,N,40788,N,N,40931,40685,N,N,N,N,N,N,N,N,N,N,37290,N,N,N,N,37291,41072,N, -40813,N,N,N,N,N,37292,N,N,N,37293,N,N,N,41213,N,40930,N,37295,40513,39594,N,N, -37296,N,39595,N,N,N,N,N,N,N,N,N,N,N,39596,N,39498,N,37298,N,N,35830,N,39597, -35254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39599,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,39600,N,N,N,N,N,N,39601,N,N,N,N,N,39585,37305,N,N,N,N,N,37306,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41025,35767,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37312,N,N,N,N,N,N,N,N,N,N,39603,37315,N,N,N,N,N,N, -N,N,N,N,41212,N,N,40942,N,N,N,N,N,N,40809,N,N,N,N,N,N,N,37320,N,N,N,N,N,N, -37321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36326,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37323,N,N,N,N,N,N,N,N,N,N,35272,N,N,N,N,N,36266,N,N,N,N,N,40925,34880, -34881,34882,34883,34884,N,34886,N,N,34889,34890,N,N,34893,N,34895,34896,34897, -34898,N,34900,34901,N,N,N,N,N,N,N,N,N,N,N,N,34914,N,34916,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34979,N,34981,N,N,N,34985,34986,35907,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35949,N,N,N,N,N,N,35956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36023,N,36025,N,36027,N,N,N,N,36032,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,36055,36056,N,36058,51321,N,N,N,N,51326,51361,N,51363,35832,51408, -N,N,N,N,51407,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50916,N,50917,N,N,N,N,N,N,N,N,N,N,N,N,N, +37074,N,N,34667,N,37076,N,N,N,N,N,N,N,N,N,39515,38397,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,35780,N,N,N,35942,N,37086,N,N,N,N,N,40164,N,37089,N,N,N,N,N,N,N,N,N,N,N, +N,N,40518,N,N,N,38481,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64344,N,37094, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38480,N,N,N,37095,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,37096,39517,N,40826,N,N,N,39772,N,40828,N,N,64594,37097,N,37098,N, +39518,N,N,N,N,N,40822,N,N,N,N,N,N,N,N,N,37099,N,N,N,N,N,N,N,N,N,N,N,N,N,37100, +N,N,N,N,N,35822,N,N,N,N,N,N,N,37102,N,N,N,37318,N,N,37106,64700,35444,N,N,N,N, +N,N,N,N,N,38487,N,N,N,40175,N,N,N,N,N,N,N,N,N,N,40927,N,N,N,N,37111,37110,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39774,N,N,N,37112,N,N,N,N,N,N,N,N,N,N,36092,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,37113,N,36041,N,N,N,64106,N,N,N,N,N,N,N,N,35823,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40928,N,N,37186,N,39522,N,N,N,N,N, +N,N,N,N,38249,N,N,N,37188,37187,N,37185,N,N,N,35824,N,N,N,N,N,N,N,N,N,N,N,N,N, +38496,N,35825,N,39414,37193,N,N,N,N,37194,N,N,N,N,N,37195,N,N,N,N,39524,N,N,N, +35519,39526,N,N,N,N,N,N,N,N,N,N,39527,N,N,39529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39530,38482,37197,N,38502,N,N,N,N,40827,N,39531,N,N,N,N, +N,N,N,41068,N,N,38503,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39532,N,N,N,N,39533,35826, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38506,N,N,N,N,N,N,N,N,64746,N,N,N,N,N,38508,N, +N,N,N,N,N,N,N,N,N,N,N,N,37316,N,N,N,38519,N,N,N,N,N,N,N,39412,39535,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40875,N,N,N,N,N,36030,36545,N,N,N,N,38229,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37202,37203,N,N,N,37205,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38237,N,38513,N,N,N,N,40045,N,N,N,N,N,N,N,N,38515,N,N,N,N,N,N,N,N,N,N,N,37204, +39537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37206,N,N,N,38509, +N,N,N,N,N,N,38231,N,N,N,N,N,N,N,N,35270,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35434,N,N,N,35671,N,N,N,40929,N,N,39775,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41053,N,N,N,N,N,N,N,N,37211,N,37212,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37214,N,N,N,N,N,N,N,N,N,N,40796,40791,N,N,N,N,N, +N,40805,N,N,N,N,N,39538,N,N,N,N,37216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40798,N,N,37217,N,N,N,N,N,N,37220,N,N,N,N,40769,N,N,N,N,N,N,37225,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,37224,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38578,N,39541,N,64933,N,N,N,N, +N,N,N,40681,N,35770,37229,41056,N,N,N,N,N,N,N,40926,N,N,N,N,N,40899,N,38581,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,38579,N,N,N,N,N,N,N,N,N,N,N,N,N,39542,N,N,N,N,N,N,N,N,N,N,N, +38357,N,N,N,40650,N,N,N,39543,N,N,39544,N,N,N,N,N,N,N,N,N,N,37232,37231,N,N,N, +N,N,N,N,40867,N,37233,N,N,N,38577,N,N,N,N,40803,N,N,N,N,N,40807,N,N,N,35769, +39546,N,N,N,N,N,35670,N,N,N,N,N,N,N,N,39642,N,N,N,N,N,38576,N,N,N,N,39550,N,N, +N,N,N,N,N,N,N,N,40414,N,N,N,N,N,N,N,N,N,38573,N,N,N,38574,N,N,N,N,N,N,N,N,N, +40609,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40528,N,N,N,N,N,N,N,N,38575, +35828,40868,N,N,N,N,N,N,N,N,N,38589,N,N,N,N,N,N,N,N,N,38644,N,N,N,N,N,N,N,N,N, +N,38584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64161,N,N,N,N,37287,N,N,N,N,N,N,N, +N,N,N,41054,N,N,N,N,39549,N,N,N,N,35144,N,40625,N,N,N,N,N,N,N,N,N,N,N,N,N, +40411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38335,35443,N,N,N,N,N,N,N,N,N,N,N,N,N,40702, +N,37242,N,N,N,N,37243,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39587,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,38594,N,N,N,N,N,40823,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39588,N, +N,39589,N,N,N,37281,N,N,N,N,35256,N,N,N,N,N,N,N,N,N,N,37235,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39590,35261,N, +35257,N,37245,N,N,N,N,N,N,N,N,N,38587,N,N,N,40946,N,N,35829,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,39593,N,N,N,N,N,40788,N,N,40931,40685,N,N,N,N,N,N,N,N,N,N,37290,N,N,N, +N,37291,41072,N,40813,N,N,N,N,N,37292,N,N,N,37293,N,N,N,41213,N,40930,N,37295, +40513,39594,N,N,37296,N,39595,N,N,N,N,N,N,N,N,N,N,N,39596,N,39498,N,37298,N,N, +35830,N,39597,35254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39599, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,39600,N,N,N,N,N,N,39601,N,N,N,N,N,39585,37305,N,N, +N,N,N,37306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37310,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +41025,35767,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37312,N,N,N,N,N,N,N,N,N,N,39603, +37315,N,N,N,N,N,N,N,N,N,N,41212,N,N,40942,N,N,N,N,N,N,40809,N,N,N,N,N,N,N, +37320,N,N,N,N,N,N,37321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36326,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37323,N,N,N,N,N,N,N,N,N,N,35272,N,N,N,N,N,36266,N,N,N,N, +N,40925,35907,35949,35956,36023,36025,36027,36032,36055,36056,36058,51361, +51363,36077,36168,35832,51408,N,N,N,N,51407,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50916,N, +50917,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51405,N, -51406,N,N,N,N,N,N,N,N,63998, +N,N,N,N,N,N,N,N,N,N,N,51405,N,51406,N,N,N,N,N,N,N,N,63998, }; static const struct unim_index big5hkscs_bmp_encmap[256] = { @@ -1343,65 +1353,66 @@ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+506,190, -193},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+510,22,231},{0,0,0},{0,0,0},{ -__big5hkscs_bmp_encmap+720,96,125},{__big5hkscs_bmp_encmap+750,80,112},{0,0,0 -},{__big5hkscs_bmp_encmap+783,61,61},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ -0,0,0},{__big5hkscs_bmp_encmap+784,128,227},{__big5hkscs_bmp_encmap+884,51,51 -},{__big5hkscs_bmp_encmap+885,5,254},{0,0,0},{__big5hkscs_bmp_encmap+1135,49, -49},{0,0,0},{__big5hkscs_bmp_encmap+1136,53,251},{__big5hkscs_bmp_encmap+1335, -6,254},{__big5hkscs_bmp_encmap+1584,9,245},{__big5hkscs_bmp_encmap+1821,1,251 -},{__big5hkscs_bmp_encmap+2072,15,250},{__big5hkscs_bmp_encmap+2308,8,254},{ -__big5hkscs_bmp_encmap+2555,1,251},{__big5hkscs_bmp_encmap+2806,14,244},{ -__big5hkscs_bmp_encmap+3037,13,239},{__big5hkscs_bmp_encmap+3264,19,253},{ -__big5hkscs_bmp_encmap+3499,6,255},{__big5hkscs_bmp_encmap+3749,0,250},{ -__big5hkscs_bmp_encmap+4000,4,250},{__big5hkscs_bmp_encmap+4247,3,249},{ -__big5hkscs_bmp_encmap+4494,17,252},{__big5hkscs_bmp_encmap+4730,43,242},{ -__big5hkscs_bmp_encmap+4930,1,244},{__big5hkscs_bmp_encmap+5174,3,233},{ -__big5hkscs_bmp_encmap+5405,6,245},{__big5hkscs_bmp_encmap+5645,19,244},{ -__big5hkscs_bmp_encmap+5871,0,250},{__big5hkscs_bmp_encmap+6122,6,231},{ -__big5hkscs_bmp_encmap+6348,15,255},{__big5hkscs_bmp_encmap+6589,16,192},{ -__big5hkscs_bmp_encmap+6766,4,237},{__big5hkscs_bmp_encmap+7000,9,156},{ -__big5hkscs_bmp_encmap+7148,4,248},{__big5hkscs_bmp_encmap+7393,3,253},{ -__big5hkscs_bmp_encmap+7644,3,252},{__big5hkscs_bmp_encmap+7894,1,254},{ -__big5hkscs_bmp_encmap+8148,2,249},{__big5hkscs_bmp_encmap+8396,1,254},{ -__big5hkscs_bmp_encmap+8650,19,239},{__big5hkscs_bmp_encmap+8871,2,251},{ -__big5hkscs_bmp_encmap+9121,5,253},{__big5hkscs_bmp_encmap+9370,0,254},{ -__big5hkscs_bmp_encmap+9625,3,251},{__big5hkscs_bmp_encmap+9874,2,249},{ -__big5hkscs_bmp_encmap+10122,2,254},{__big5hkscs_bmp_encmap+10375,13,255},{ -__big5hkscs_bmp_encmap+10618,5,245},{__big5hkscs_bmp_encmap+10859,16,245},{ -__big5hkscs_bmp_encmap+11089,9,252},{__big5hkscs_bmp_encmap+11333,12,223},{ -__big5hkscs_bmp_encmap+11545,35,253},{__big5hkscs_bmp_encmap+11764,7,226},{ -__big5hkscs_bmp_encmap+11984,44,229},{__big5hkscs_bmp_encmap+12170,24,254},{ -__big5hkscs_bmp_encmap+12401,7,234},{__big5hkscs_bmp_encmap+12629,10,255},{ -__big5hkscs_bmp_encmap+12875,24,241},{__big5hkscs_bmp_encmap+13093,2,254},{ -__big5hkscs_bmp_encmap+13346,0,202},{__big5hkscs_bmp_encmap+13549,0,250},{ -__big5hkscs_bmp_encmap+13800,3,246},{__big5hkscs_bmp_encmap+14044,5,250},{ -__big5hkscs_bmp_encmap+14290,28,255},{__big5hkscs_bmp_encmap+14518,2,254},{ -__big5hkscs_bmp_encmap+14771,2,250},{__big5hkscs_bmp_encmap+15020,4,248},{ -__big5hkscs_bmp_encmap+15265,3,254},{__big5hkscs_bmp_encmap+15517,5,246},{ -__big5hkscs_bmp_encmap+15759,0,226},{__big5hkscs_bmp_encmap+15986,2,251},{ -__big5hkscs_bmp_encmap+16236,2,248},{__big5hkscs_bmp_encmap+16483,5,220},{ -__big5hkscs_bmp_encmap+16699,2,217},{__big5hkscs_bmp_encmap+16915,12,254},{ -__big5hkscs_bmp_encmap+17158,8,245},{__big5hkscs_bmp_encmap+17396,6,244},{ -__big5hkscs_bmp_encmap+17635,6,254},{__big5hkscs_bmp_encmap+17884,11,252},{ -__big5hkscs_bmp_encmap+18126,18,252},{__big5hkscs_bmp_encmap+18361,37,254},{ -__big5hkscs_bmp_encmap+18579,7,223},{__big5hkscs_bmp_encmap+18796,6,250},{ -__big5hkscs_bmp_encmap+19041,2,246},{__big5hkscs_bmp_encmap+19286,3,246},{ -__big5hkscs_bmp_encmap+19530,24,255},{__big5hkscs_bmp_encmap+19762,11,237},{ -__big5hkscs_bmp_encmap+19989,5,248},{__big5hkscs_bmp_encmap+20233,3,252},{ -__big5hkscs_bmp_encmap+20483,2,239},{__big5hkscs_bmp_encmap+20721,112,245},{ -__big5hkscs_bmp_encmap+20855,4,255},{__big5hkscs_bmp_encmap+21107,0,231},{ -__big5hkscs_bmp_encmap+21339,28,234},{__big5hkscs_bmp_encmap+21546,12,226},{ -__big5hkscs_bmp_encmap+21761,81,247},{__big5hkscs_bmp_encmap+21928,3,212},{ -__big5hkscs_bmp_encmap+22138,1,242},{__big5hkscs_bmp_encmap+22380,25,249},{ -__big5hkscs_bmp_encmap+22605,8,196},{__big5hkscs_bmp_encmap+22794,81,254},{ -__big5hkscs_bmp_encmap+22968,8,253},{__big5hkscs_bmp_encmap+23214,3,244},{ -__big5hkscs_bmp_encmap+23456,1,246},{__big5hkscs_bmp_encmap+23702,45,244},{ -__big5hkscs_bmp_encmap+23902,29,244},{__big5hkscs_bmp_encmap+24118,3,245},{ -__big5hkscs_bmp_encmap+24361,20,245},{__big5hkscs_bmp_encmap+24587,14,245},{ -__big5hkscs_bmp_encmap+24819,12,255},{__big5hkscs_bmp_encmap+25063,2,255},{ -__big5hkscs_bmp_encmap+25317,2,124},{__big5hkscs_bmp_encmap+25440,2,252},{ -__big5hkscs_bmp_encmap+25691,10,254},{__big5hkscs_bmp_encmap+25936,2,165},{0, +193},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+510,22,231},{0,0,0},{ +__big5hkscs_bmp_encmap+720,218,219},{__big5hkscs_bmp_encmap+722,96,125},{ +__big5hkscs_bmp_encmap+752,80,112},{0,0,0},{__big5hkscs_bmp_encmap+785,61,61}, +{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+786, +128,227},{__big5hkscs_bmp_encmap+886,51,51},{__big5hkscs_bmp_encmap+887,5,254 +},{__big5hkscs_bmp_encmap+1137,192,207},{__big5hkscs_bmp_encmap+1153,49,49},{ +0,0,0},{__big5hkscs_bmp_encmap+1154,53,251},{__big5hkscs_bmp_encmap+1353,6,254 +},{__big5hkscs_bmp_encmap+1602,9,245},{__big5hkscs_bmp_encmap+1839,1,251},{ +__big5hkscs_bmp_encmap+2090,15,250},{__big5hkscs_bmp_encmap+2326,8,254},{ +__big5hkscs_bmp_encmap+2573,1,251},{__big5hkscs_bmp_encmap+2824,14,244},{ +__big5hkscs_bmp_encmap+3055,13,239},{__big5hkscs_bmp_encmap+3282,18,253},{ +__big5hkscs_bmp_encmap+3518,6,255},{__big5hkscs_bmp_encmap+3768,0,250},{ +__big5hkscs_bmp_encmap+4019,4,250},{__big5hkscs_bmp_encmap+4266,2,249},{ +__big5hkscs_bmp_encmap+4514,17,252},{__big5hkscs_bmp_encmap+4750,43,242},{ +__big5hkscs_bmp_encmap+4950,1,244},{__big5hkscs_bmp_encmap+5194,3,234},{ +__big5hkscs_bmp_encmap+5426,3,247},{__big5hkscs_bmp_encmap+5671,19,244},{ +__big5hkscs_bmp_encmap+5897,0,250},{__big5hkscs_bmp_encmap+6148,6,231},{ +__big5hkscs_bmp_encmap+6374,15,255},{__big5hkscs_bmp_encmap+6615,16,192},{ +__big5hkscs_bmp_encmap+6792,4,237},{__big5hkscs_bmp_encmap+7026,7,156},{ +__big5hkscs_bmp_encmap+7176,4,248},{__big5hkscs_bmp_encmap+7421,3,253},{ +__big5hkscs_bmp_encmap+7672,3,252},{__big5hkscs_bmp_encmap+7922,1,254},{ +__big5hkscs_bmp_encmap+8176,2,249},{__big5hkscs_bmp_encmap+8424,1,254},{ +__big5hkscs_bmp_encmap+8678,19,239},{__big5hkscs_bmp_encmap+8899,2,251},{ +__big5hkscs_bmp_encmap+9149,5,253},{__big5hkscs_bmp_encmap+9398,0,254},{ +__big5hkscs_bmp_encmap+9653,3,251},{__big5hkscs_bmp_encmap+9902,2,249},{ +__big5hkscs_bmp_encmap+10150,2,254},{__big5hkscs_bmp_encmap+10403,13,255},{ +__big5hkscs_bmp_encmap+10646,5,252},{__big5hkscs_bmp_encmap+10894,16,245},{ +__big5hkscs_bmp_encmap+11124,9,252},{__big5hkscs_bmp_encmap+11368,12,223},{ +__big5hkscs_bmp_encmap+11580,35,253},{__big5hkscs_bmp_encmap+11799,7,226},{ +__big5hkscs_bmp_encmap+12019,44,229},{__big5hkscs_bmp_encmap+12205,24,254},{ +__big5hkscs_bmp_encmap+12436,7,234},{__big5hkscs_bmp_encmap+12664,10,255},{ +__big5hkscs_bmp_encmap+12910,24,241},{__big5hkscs_bmp_encmap+13128,2,254},{ +__big5hkscs_bmp_encmap+13381,0,202},{__big5hkscs_bmp_encmap+13584,0,250},{ +__big5hkscs_bmp_encmap+13835,3,246},{__big5hkscs_bmp_encmap+14079,5,250},{ +__big5hkscs_bmp_encmap+14325,28,255},{__big5hkscs_bmp_encmap+14553,2,254},{ +__big5hkscs_bmp_encmap+14806,2,250},{__big5hkscs_bmp_encmap+15055,4,248},{ +__big5hkscs_bmp_encmap+15300,3,254},{__big5hkscs_bmp_encmap+15552,5,246},{ +__big5hkscs_bmp_encmap+15794,0,226},{__big5hkscs_bmp_encmap+16021,2,251},{ +__big5hkscs_bmp_encmap+16271,2,248},{__big5hkscs_bmp_encmap+16518,5,220},{ +__big5hkscs_bmp_encmap+16734,2,217},{__big5hkscs_bmp_encmap+16950,12,254},{ +__big5hkscs_bmp_encmap+17193,8,245},{__big5hkscs_bmp_encmap+17431,6,244},{ +__big5hkscs_bmp_encmap+17670,6,254},{__big5hkscs_bmp_encmap+17919,11,252},{ +__big5hkscs_bmp_encmap+18161,18,252},{__big5hkscs_bmp_encmap+18396,37,254},{ +__big5hkscs_bmp_encmap+18614,7,223},{__big5hkscs_bmp_encmap+18831,6,250},{ +__big5hkscs_bmp_encmap+19076,2,246},{__big5hkscs_bmp_encmap+19321,3,246},{ +__big5hkscs_bmp_encmap+19565,24,255},{__big5hkscs_bmp_encmap+19797,11,237},{ +__big5hkscs_bmp_encmap+20024,5,248},{__big5hkscs_bmp_encmap+20268,3,252},{ +__big5hkscs_bmp_encmap+20518,2,239},{__big5hkscs_bmp_encmap+20756,112,245},{ +__big5hkscs_bmp_encmap+20890,4,255},{__big5hkscs_bmp_encmap+21142,0,231},{ +__big5hkscs_bmp_encmap+21374,28,249},{__big5hkscs_bmp_encmap+21596,12,226},{ +__big5hkscs_bmp_encmap+21811,81,247},{__big5hkscs_bmp_encmap+21978,3,212},{ +__big5hkscs_bmp_encmap+22188,1,242},{__big5hkscs_bmp_encmap+22430,25,249},{ +__big5hkscs_bmp_encmap+22655,8,196},{__big5hkscs_bmp_encmap+22844,81,254},{ +__big5hkscs_bmp_encmap+23018,8,253},{__big5hkscs_bmp_encmap+23264,3,244},{ +__big5hkscs_bmp_encmap+23506,1,246},{__big5hkscs_bmp_encmap+23752,45,244},{ +__big5hkscs_bmp_encmap+23952,29,244},{__big5hkscs_bmp_encmap+24168,3,245},{ +__big5hkscs_bmp_encmap+24411,20,245},{__big5hkscs_bmp_encmap+24637,14,245},{ +__big5hkscs_bmp_encmap+24869,12,255},{__big5hkscs_bmp_encmap+25113,2,255},{ +__big5hkscs_bmp_encmap+25367,2,124},{__big5hkscs_bmp_encmap+25490,2,252},{ +__big5hkscs_bmp_encmap+25741,10,254},{__big5hkscs_bmp_encmap+25986,2,179},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, @@ -1410,13 +1421,12 @@ },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 -},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+26100,3,75}, -{0,0,0},{__big5hkscs_bmp_encmap+26173,122,239},{0,0,0},{__big5hkscs_bmp_encmap -+26291,229,237},{0,0,0},{__big5hkscs_bmp_encmap+26300,7,7},{0,0,0},{0,0,0},{0, -0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+26301,2,237}, +},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, +0,0},{0,0,0},{__big5hkscs_bmp_encmap+26164,7,7},{0,0,0},{0,0,0},{0,0,0},{0,0,0 +},{0,0,0},{__big5hkscs_bmp_encmap+26165,2,237}, }; -static const DBCHAR __big5hkscs_nonbmp_encmap[28325] = { +static const DBCHAR __big5hkscs_nonbmp_encmap[29306] = { 40049,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37749,N,N,N,N,N, N,N,37750,N,N,N,N,N,N,N,38216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,36550,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35781,35834, @@ -1427,34 +1437,34 @@ N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35501,N,37490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64583,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38111,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,40913,64459,N,N,N,N,N,N,N,37501,N,N,N,N,N,N,N, +N,N,N,N,N,N,36085,N,N,N,N,35501,N,37490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,64583,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38111,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40913,64459,N,N,N,N,N,N,N,37501,N,N,N,N,N,N,N, 39076,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38119,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37067,37499,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38104,N,N,N,N,64607,N,64084,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39605,N,N,N,N,N,N,N,38618,37497,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64116, -37493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36347,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35401,N,N,N,37599,39804,64099,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,64096,37485,64098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,39606,N,N,N,N,N,N,38763,N,N,N,N,N,N,N,N,N,N,N,N,N, -64874,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64852,N,37491,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38872,N,N,N,N,N, -N,40891,37698,37494,N,N,N,N,N,N,N,N,N,N,64101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,64110,N,N,N,N,N,N,40672,N,N,37568,37567,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,37566,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39610,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35507,N,38773,64064,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64118,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,64464,N,N,N,N,N,N,N,N,N,N,N,N,N,64123,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,65133,N,N,N,N,N,N,39859,N,N,N,N,N,35276,N,N,N,N,39614,N,N,N,N,N,N, -N,N,N,64066,37564,N,N,N,N,N,N,N,N,N,N,37980,39861,N,N,N,39615,N,N,N,39079, +36089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38119, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37067,37499,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38104,N,N,N,N,64607,N, +64084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39605,N,N,N,N,N,N,N,38618, +37497,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64116,37493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36347,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35401,N,N,N,37599,39804,64099,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,64096,37485,64098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39606,N,N,N,N,N,N,38763,N,N,N,N,N,N,N,N,N,N,N,N, +N,64874,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64852,N,37491,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38872,N,N,N,N, +N,N,40891,37698,37494,N,N,N,N,N,N,N,N,N,N,64101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,64110,N,N,N,N,N,N,40672,N,N,37568,37567,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,37566,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39610,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35507,N,38773,64064,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64118,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,64464,N,N,N,N,N,N,N,N,N,N,N,N,N,64123,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,65133,N,N,N,N,N,N,39859,N,N,N,N,N,35276,N,N,N,N,39614,N,N,N,N,N, +N,N,N,N,64066,37564,N,N,N,N,N,N,N,N,N,N,37980,39861,N,N,N,39615,N,N,N,39079, 38820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37117,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64635,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39616,37571,N,N,N,N,N,N,N,N,N,N,N,N,N, @@ -1473,38 +1483,38 @@ N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35250,40038,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36947,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,35938,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,38849,N,N,N,N,N,N,N,N,N,N,N,N,N,39620,N,N,N,N,N,N,N,N,N,N,39621,36591,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38849,N,N,N,N,N,N,N,N,N,N,N,N,N,39620,N,N,N,N,N,N,N,N,N,N,39621,36591,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,64233,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37474, -35575,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39622,N,N,N,N,N,N,37601,N,N,N, -N,39625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64198,N,N,N,N,N,N,N,N, -38821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39627,N,N,N,64114,35422,N,38112,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37580,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35557,N, -N,N,N,N,65116,39628,N,N,N,N,N,40441,35395,35494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,64238,39884,N,N,N,39631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39633,N,N,N,N,N,N,N, -N,40442,N,N,N,N,N,40316,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39635, -N,N,38822,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39263,N,N,N,64502,40901, -35417,35691,N,N,N,N,N,N,39636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39637,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,38818,35396,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40778,N, -N,N,N,N,N,N,N,37025,64932,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35428,35570, -35576,40408,N,N,38102,64254,64423,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,39638,N,40781,N,N,64246,N,N,N,N,N,N,N,35415,N,35651,35652, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35510,N,N,N,N,N,35520,N,N,N,N,N,N, -N,N,N,N,40532,N,N,N,N,N,N,N,N,N,N,39639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39640,39644,N,N,N,N,35530,40616,N,N,37475,39645,35685,35695,35710,N,N,N,N, -36675,N,N,N,N,N,N,37584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35572,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40382,N,N,N,N,N,39649,N,64734,40445,35686,35696, -35701,35556,35748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35565,N,N,N,N,N,N,N,N,N, -35421,N,35656,N,N,N,N,40429,N,N,N,N,40512,N,N,N,N,N,N,N,35567,35574,40566,N,N, -N,N,N,N,N,N,N,40675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,39646,36350,N,N,N,N,64252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,40113,40567,35684,35687,38731,N,N,N,N,N,N,N,N,38483,N,N,N,N,N,N,39648, +N,N,N,N,N,N,N,N,N,N,64233,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36160,N,N,N,N,N,N,N,N, +37474,35575,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39622,N,N,N,N,N,N,37601, +N,N,N,N,39625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64198,N,N,N,N,N,N,N, +N,38821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39627,N,N,N,64114,35422,N,38112,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,37580,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35557, +N,N,N,N,N,65116,39628,N,N,N,N,N,40441,35395,35494,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,39629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,64238,39884,N,N,N,39631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39633,N,N,N,N,N,N, +N,N,40442,N,N,N,N,N,40316,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39635,N,N,38822,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39263,N,N,N,64502, +40901,35417,35691,N,N,N,N,N,N,39636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39637,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38818,35396,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40778,N,N,N,N,N,N,N,N,37025,64932,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35428, +35570,35576,40408,N,N,38102,64254,64423,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,39638,N,40781,N,N,64246,N,N,N,N,N,N,N,35415,N,35651, +35652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35510,N,N,N,N,N,35520,N,N,N, +N,N,N,N,N,N,N,40532,N,N,N,N,N,N,N,N,N,N,39639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39640,39644,N,N,N,N,35530,40616,N,N,37475,39645,35685,35695,35710,N, +N,N,N,36675,N,N,N,N,N,N,37584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35572,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40382,N,N,N,N,N,39649,N,64734,40445,35686, +35696,35701,35556,35748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35565,N,N,N,N,N,N,N,N, +N,35421,N,35656,N,N,N,N,40429,N,N,N,N,40512,N,N,N,N,N,N,N,35567,35574,40566,N, +N,N,N,N,N,N,N,N,40675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,39646,36350,N,N,N,N,64252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,40113,40567,35684,35687,38731,N,N,N,N,N,N,N,N,38483,N,N,N,N,N,N,39648, 35658,N,35569,35543,N,N,N,N,N,N,N,N,N,41131,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, 35509,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35423,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35566,N,N,39647,N, @@ -1574,151 +1584,152 @@ N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64076,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37623,39744,N,N,N,N,N,N,64462,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39745,N,N,N,N,N,65197,64469,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,39745,N,N,N,N,N,65197,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,34657,64469,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35778,39548,39746,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39747,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35778,39548,39746,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,40569,N,N,64473,N,N,N,N,N,N,39748,41127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39747,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40569,N,N,64473,N,N, +N,N,N,N,39748,41127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34670,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35961,N,N,N,37726,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,35275,N,N,N,N,N,N,40787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37847,N,N,N,N,N,N,N,N,N,N,N,N,N,64481,65232,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,64482,N,N,N,N,N,64739,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,39923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,35961,N,N,N,37726,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35275,N,N,N,N, +N,N,40787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37847,N,N,N,N,N,N, +N,N,N,N,N,N,N,64481,65232,N,N,N,N,N,N,36081,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,64482,N,N,N,N,N,64739,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36980,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,64486,N,N,N,39863,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,39749,N,N,N,N,N,N,N,N,N,N,N,N,39751,40784,N,N,N,N,N,39752, +N,N,N,N,N,N,N,N,N,N,36980,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64486,N,N,N,39863,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,39749,N,N,N,N,N,N,N,N,N,N,N,N,39751,40784,N,N,N,N,N,39752,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64603, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,64603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39081,N,N,40189,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,39081,N,N,40189,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34892,39755,N,N,N,64492,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,35945,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39848,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35541,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64115,64857,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37282,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64493,N,N,N,N,N,N,40105,N, +N,N,N,N,N,N,N,N,N,N,N,N,34892,39755,N,N,N,64492,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35496,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39875, -35553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35945,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39848,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35541,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64115,64857,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37282,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64493,N,N,N,N,N,N,40105,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35496,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36162,N,39875,35553,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,39758,38352,N,N,N,36959,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39758,38352,N, +N,N,36959,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,38894,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64590,N,N,N,N,N,N, -39759,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39760,40646,N,N,N,N,N,N,N,N,N,N,N,64592,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,64883,N,N,N,N,N,64935,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40354,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64088,64094,N, -N,N,N,N,N,N,41049,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64117,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64446,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,37744,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37745,37751,65263,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,37741,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64605,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,35580,N,64321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40555,38115,36578,35965,N,36567, -N,N,N,N,N,N,40013,N,N,N,38563,N,N,N,N,N,N,N,N,N,N,39761,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35523,N,N,N,N,N,N,N,N,N,N,N, -38570,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,64616,35693,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,64871,35561,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64673,37740,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65136,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,64680,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64745,40116,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,35562,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39763,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39765,N,N,N,38571,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64679,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39766,35516,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35531,N,N,N,N, -N,39767,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35277,N,39769,39771,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37797,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39773,N,N,N,40527,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37795,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35451,N,N,N,35650, -38736,36787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35408,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,39776,N,N,N,N,35653,N,N,N,35654,N,N,N,N,N,N,N,N,N,N,N,N,40446,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39778,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37755,N,N,N,N,N,37809,N,N,N,N,N,N,N,35424,N,N, -N,N,N,N,N,N,35544,N,N,N,N,39779,N,N,N,N,N,N,N,N,N,N,35433,N,N,N,35399,N,N, -35532,37756,39781,N,N,N,N,N,N,N,N,N,39782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35442,N,N,N,N,N, -N,N,35450,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37807,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35504,N,N,N,N, -N,N,N,39784,N,N,N,N,N,N,N,N,N,N,40611,N,N,64236,35703,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,39783,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35673,64689,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64699,N,N,N,N,N, -N,N,N,N,N,N,39785,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37800,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,35552,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36703,39786,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,39787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38892,39788,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65102,N,N,N,N,N,N,64962,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,39789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37223,64716,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37814,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37092,N,N,N,N,37093,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40690,37834,N,N,N,N,N,N,N,N, +38894,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64590,N,N,N,N,N,N,39759,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39760,40646,N,N,N,N,N, +N,N,N,N,N,N,64592,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64883,N,N, +N,N,N,64935,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40354, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,35772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64088,64094,N,N,N,N,N,N,N,41049,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64446,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36678,N,N,N,N,37839,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,64731,64732,N,N,N,N,N,N,N,N,N,N,N,N,N,37824,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,64742,38631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64728,64729,64934,37838,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,38385,N,N,N,N,N,N,N,N,N,40169,N,64740,38063,64119, -37836,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,36954,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,35924,N,N,N,N,N,N,N,37823,64337,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37817,65239,37815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37849,N,N,N,N,N,N,N,N,N,N,N,N,N,37819, -37850,39075,N,N,N,N,N,N,N,N,N,37073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39790,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64112,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39915,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,39791,N,N,N,N,N,N,N,64764,N,N,N,N,N,N,N,N,N,N,N,N,N,35648,41083,N,N,N, -36001,38903,N,N,N,37858,64726,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38233,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37798,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,64832,N,N,37727,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38898,40054,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,36600,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,36679,N,N,N,N,N,N,N,N,N,N,N,N,39796,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37556, -N,N,N,37357,N,N,38610,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64838,36687,38217,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39797,64092,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,64843,N,N,N,38611,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,64856,N,N,N,N,N,37983,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,41205,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37443,N,N,N,N,N,N,38906,N,N,N,N,N,N,N,N,N,N,N,N, +40098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37744, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,37745,37751,65263,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37741,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64605,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,37048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35580,N, +64321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40555,38115,36578,35965,N,36567,N,N,N,N,N,N, +40013,N,N,N,38563,N,N,N,N,N,N,N,N,N,N,39761,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35523,N,N,N,N,N,N,N,N,N,N,N,38570,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,64616,35693,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64871,35561,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64673,37740,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,39762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65136,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,64680,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64745,40116,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,35562,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39763,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39765,N,N,N,38571,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,64679,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39766,35516,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35531,N,N,N,N,N,39767,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35277,N,39769,39771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37797,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39773,N,N, +N,40527,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37795,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35451,N,N,N,35650,38736,36787,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35408,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39776,N,N,N,N,35653,N,N,N,35654,N,N,N,N,N,N,N,N,N,N,N,N,40446,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39778,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37755,N,N,N,N,N,37809,N,N,N,N,N,N,N,35424,N,N,N,N,N,N,N, +N,35544,N,N,N,N,39779,N,N,N,N,N,N,N,N,N,N,35433,N,N,N,35399,N,N,35532,37756, +39781,N,N,N,N,N,N,N,N,N,39782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35442,N,N,N,N,N,N,N,35450,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37807,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35504,N,N,N,N,N,N,N,39784, +N,N,N,N,N,N,N,N,N,N,40611,N,N,64236,35703,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39783,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35673,64689,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64699,N,N,N,N,N,N,N,N,N,N,N, +39785,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37800,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35552,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,40529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36703,39786,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,39787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38892,39788,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,65102,N,N,N,N,N,N,64962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37223, +64716,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37814,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37092,N,N,N,N,37093,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40690,37834,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,35772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36678,N,N, +N,N,37839,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64731,64732,N,N,N,N,N,N,N,N,N,N,N,N,N,37824,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,64742,38631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64728,64729,64934,37838,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,38385,N,N,N,N,N,N,N,N,N,40169,N,64740,38063,64119,37836,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36065,N,N,N,N,N, +N,N,N,N,N,N,36954,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35924,N,N,N,N,N,N,N,37823,64337,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,37817,65239,37815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37849,N,N,N,N,N,N,N,N,N,N,N,N,N,37819,37850, +39075,N,N,N,N,N,N,N,N,N,37073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39790,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64112,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39915,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39791,N,N,N,N,N,N,N,64764,N,N,N,N,N,N,N,N,N,N,N,N,N,35648,41083,N,N,N,36001, +38903,N,N,N,37858,64726,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38233,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37798,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,64832,N,N,37727,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38898,40054,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,36600,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36075,N,N,N,N,N,N,N,N,36679,N,N,N,N,N,N,N,N,N,N,N,N,39796,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37556,N, +N,N,37357,N,N,38610,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64838,36687,38217,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39797,64092,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,34641,N,N,39801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64843,N,N,N,38611,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,64856,N,N,N,N,N,37983,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,41205,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,37443,N,N,N,N,N,N,38906,N,N,N,N,N,N,N,N,N,N,N,N, 40409,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, 38900,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37453,64859,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,39802,N,N,N,N,N,N,N,N,N,40661,N,N,N,N,N,N,N,N,N,N,N,N,64174,N,40137,N,N,N, @@ -1729,418 +1740,442 @@ N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37868,38902,38607,37854,35535,39842,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,64873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37714,N,N,N,N,N,N, -N,N,N,N,N,39074,64878,36004,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64124,37882,36988,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36711,N,40375,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,41193,64078,64929,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40564,40895,40651,39865, -40404,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38841,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36593,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38267,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40658,38739,38564,36798,38105,36952,64889,64891,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36570,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36602,39845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40665,38868,37051,64956,64966,37448,N,N,N,N,N,N,N,37557,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40385, -37561,37542,36683,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39846,N,N,N,N,N,37558,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,36416,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40664,37982,39007,38094,37450,64880,37991,N,N,N,N,N,N,N,N,N,N,N, -36332,N,N,N,N,N,N,N,N,39896,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37960,64193,40183,64958, -N,N,N,N,N,N,N,N,N,N,N,N,36826,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,64985,N,N,64638,N,N,N,N,N,N,N,N,37881,N,N,N,N,64067,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64235, -64195,38867,38393,40008,64984,41176,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64983,64330,39855,37963,64969,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36524,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64946,N,N,N,N,N,37466, -64701,37593,N,N,N,64981,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37597,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37465,38586,N,N,N,N,N,N,N,N,N,N,37467,N,N,N,N,N, -N,N,N,N,39851,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,64986,64990,N,N,N,64979,N,N,N,N,N,N,N,N,N,35910,N,N,N,N,N,N,64982, -64988,64989,N,N,N,N,37118,N,N,65185,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,35757,N,N,40152,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40557,64892,64353,N,N,N,N,N,N,38648,N,N,N,N,N,N,N,N, -38640,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64756,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,65120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38994,38479,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37230,N,N,N,N,N,N,N,N,N,N,39021,N,N,39012,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37971,65004,64376,N,N,N,N,N,N, -N,N,N,N,N,38330,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39005,N,37625,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,39002,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65014,N, -N,N,N,N,N,N,37840,39010,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39853,N,N,N,N,N,N,N,N,N,N,N,38735,39854,N,N,N,N,N,N,N,N,N,N,N, -N,37970,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39856,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37330,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,38890,64363,37297,65011,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37579,N,N,N,N,N,N,N,N,N,39857,N,N,N,N,N,64748,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39019,N,N,N,38737,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -39025,38383,N,N,N,N,N,N,N,40691,N,N,N,N,N,37352,39866,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64332, -37482,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -65016,39009,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37351,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,37869,38724,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37345,N,N,64501,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,39017,N,N,N,N,35426,N,N,39867,36008,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40021,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36471,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35506, -40636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37862,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39074,36071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64878, +36004,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64124,37882,36988,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36711,N,40375,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41193, +64078,64929,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40564,40895,40651,39865,40404,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38841,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38267, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40658,38739,38564,36798,38105,36952,64889,64891,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36570,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36602,34658,N,N,N,N,N,N,N,N,N,N,39845,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,40665,38868,37051,64956,64966,37448,N,N,N,N,N,N,N, +37557,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,40385,37561,37542,36683,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39846,N,N,N,N,N,37558,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36416,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,40664,37982,39007,38094,37450,64880,37991,N,N,N,N,N,N,N, +N,N,N,N,36332,N,N,N,N,N,N,N,N,39896,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,34659,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37960,64193, +40183,64958,N,N,N,N,N,N,N,N,N,N,N,N,36826,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64985,N,N,64638,N,N,N,N,N,N,N,N,37881,N,N, +N,N,64067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,64235,64195,38867,38393,40008,64984,41176,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64983,64330,39855,37963,64969, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36524,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64946,N,N, +N,N,N,37466,64701,37593,N,N,N,64981,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37597,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37465,N,N,N,N,N,N,N,N,N,N,36080, +38586,N,N,N,N,N,N,N,N,N,N,37467,N,N,N,N,N,N,N,N,N,39851,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64986,64990,N,N,N,64979,N, +N,N,N,N,N,N,N,N,35910,N,N,N,N,N,N,64982,64988,64989,N,N,N,N,37118,N,N,65185,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35757,N,N,40152,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40557,64892, +64353,N,N,N,N,N,N,38648,N,N,N,N,N,N,N,N,38640,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64756,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65120,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38994,38479,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37230,N,N,N, +N,N,N,N,N,N,N,39021,N,N,39012,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,37971,65004,64376,N,N,N,N,N,N,N,N,N,N,N,38330,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,39005,N,37625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39002,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,34640,N,65014,N,N,N,N,N,N,N,37840,39010,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39853,N,N,N,N,N,N,N, +N,N,N,N,38735,39854,N,N,N,N,N,N,N,N,N,N,N,N,37970,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39856,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37330,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38890,64363,37297,65011,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37579,N,N,N, +N,N,N,N,N,N,39857,N,N,N,N,N,64748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,39019,N,N,N,38737,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39025,38383,N,N,N,N,N,N,N,40691,N,N,N,N, +N,37352,39866,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64332,37482,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65016,39009,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,37351,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37869,38724,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,37345,N,N,64501,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39017,N,N,N,N, +35426,N,N,39867,36008,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40021,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36471,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35506,40636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37862,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37794,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37757,40550,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37977,N,N,N,N,N,N,N,N,N,39871,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,37976,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40613,39879,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,65108,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,35798,N,N,N,N,N,N,38070,64884,39104,38053,N,N,N,N,N,N,N, +39880,N,N,N,38381,64894,64491,N,N,N,N,N,N,N,N,N,N,64893,N,N,N,N,N,N,N,N,N, +38767,37985,N,40897,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38359,N,N,N, +64082,40024,N,N,N,N,N,N,N,N,N,40808,39911,64718,38632,64073,38817,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38221,40696,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,65097,37326,38769,N,N,N,N,36047,N,N,N,64945,N,N,64622,N,N,N,N,N, +40178,37816,36931,38745,38103,65126,38013,64623,N,N,N,N,37446,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64109,N,N,36599,N,64439,N,38012,37581,38834,N,N,N,N,N,N,N,N,N, +65125,38526,38744,39799,37327,N,N,N,N,N,N,N,N,N,38052,N,N,N,N,N,N,N,N,N,N, +40109,N,N,N,N,N,N,N,N,N,35755,N,N,N,38613,64691,N,N,N,37806,N,38765,N,N,N,N,N, +N,37958,38391,N,N,N,N,N,N,N,N,40006,38235,37329,38132,N,65127,37541,N,N,N, +65247,36011,N,39881,N,N,N,N,N,N,N,N,N,N,N,64749,65018,64712,65122,37372,65131, +65017,64711,37198,40120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38759,N,N,N, +38382,N,N,39858,N,N,N,N,37984,N,N,N,38050,39029,38828,37331,N,N,N,N,N,N,N,N,N, +N,N,39035,N,N,N,N,N,N,N,36587,38762,38494,N,N,N,N,N,N,N,N,N,38891,N,N,N,N,N, +40953,38392,65186,36838,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65150,N,N,N,N,N,N, +40356,38760,36588,38077,N,N,N,N,N,N,N,N,N,N,N,N,N,37979,40182,64167,39897,N,N, +N,N,N,N,N,N,N,64093,38486,38754,N,N,N,N,N,N,38074,41039,37592,N,N,N,39883,N,N, +N,N,N,N,38075,N,N,40287,N,N,N,N,N,N,37071,N,N,N,N,N,N,N,N,N,N,N,N,N,37989,N,N, +40780,N,N,N,N,N,N,37080,36187,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40638,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,64365,38346,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,40386,38904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36860,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38003, +38004,N,N,N,N,N,N,N,N,N,N,N,N,65207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,37794,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,37757,40550,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37977,N,N,N,N,N,N,N,N,N,39871,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35403,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37976,N,N,N,N, +35413,35689,35548,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35702,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39886,N,35432,41208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,39135,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,65205,N,N,N,39887,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38651,N, +N,39931,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40654,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36581,N, +N,N,N,N,N,N,N,N,40571,39890,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,35493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,65230,35397,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,40444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65231,35749,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35914,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35564,N,N,64736,38061,65237,38060,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40613,39879,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65108,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +64602,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39894, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35439,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35753,36447,N,N,40395,N, +64743,39895,N,N,N,N,N,N,N,N,N,N,N,37832,N,N,N,N,N,N,N,N,N,37360,36832,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39899,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37101,N,39900,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36179,41196,N,N,N, +39162,N,N,N,N,N,N,N,N,N,39904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37831,37449,38625,39906,N,N,N,39908,N,N,36833,39909,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38080,N,N,37827,N,N,N,N,N,N,N,N,N,N,37829,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36985,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38779,N,N,N,N,N, +36990,N,N,N,N,65254,65094,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40376,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,37488,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38312,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36016,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,38088,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39097,37184,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64702,N,N,N,N,N,N,N,37207,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64223,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,36468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35798,N,N,N,N,N,N, -38070,64884,39104,38053,N,N,N,N,N,N,N,39880,N,N,N,38381,64894,64491,N,N,N,N,N, -N,N,N,N,N,64893,N,N,N,N,N,N,N,N,N,38767,37985,N,40897,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,38359,N,N,N,64082,40024,N,N,N,N,N,N,N,N,N,40808,39911,64718, -38632,64073,38817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38221,40696,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65097,37326,38769,N,N,N,N,36047,N, -N,N,64945,N,N,64622,N,N,N,N,N,40178,37816,36931,38745,38103,65126,38013,64623, -N,N,N,N,37446,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64109,N,N,36599,N,64439,N,38012, -37581,38834,N,N,N,N,N,N,N,N,N,65125,38526,38744,39799,37327,N,N,N,N,N,N,N,N,N, -38052,N,N,N,N,N,N,N,N,N,N,40109,N,N,N,N,N,N,N,N,N,35755,N,N,N,38613,64691,N,N, -N,37806,N,38765,N,N,N,N,N,N,37958,38391,N,N,N,N,N,N,N,N,40006,38235,37329, -38132,N,65127,37541,N,N,N,65247,36011,N,39881,N,N,N,N,N,N,N,N,N,N,N,64749, -65018,64712,65122,37372,65131,65017,64711,37198,40120,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38759,N,N,N,38382,N,N,39858,N,N,N,N,37984,N,N,N,38050,39029, -38828,37331,N,N,N,N,N,N,N,N,N,N,N,39035,N,N,N,N,N,N,N,36587,38762,38494,N,N,N, -N,N,N,N,N,N,38891,N,N,N,N,N,40953,38392,65186,36838,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,65150,N,N,N,N,N,N,40356,38760,36588,38077,N,N,N,N,N,N,N,N,N,N,N,N,N, -37979,40182,64167,39897,N,N,N,N,N,N,N,N,N,64093,38486,38754,N,N,N,N,N,N,38074, -41039,37592,N,N,N,39883,N,N,N,N,N,N,38075,N,N,40287,N,N,N,N,N,N,37071,N,N,N,N, -N,N,N,N,N,N,N,N,N,37989,N,N,40780,N,N,N,N,N,N,37080,40638,N,N,N,N,N,N,N,N,N,N, +N,39910,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38467,36420,40015,65268, +N,N,N,N,N,39912,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37852,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38511,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36426,39917,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37622,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40377,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,64365,38346,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,36430,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,64463,34656,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40642, +N,N,N,N,N,N,38117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39920,38116,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,38225,35771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39921,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,38128,36452,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38122,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36705,N,N,N,39780,36443,N,N,N,N, +39922,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40894,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40393,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36460,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36723,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36015,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,36725,36465,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36448,36458,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,35916,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38226,38228, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40379,38211,37630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,38130,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38129,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41194,40402,41137,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37368, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40386,38904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,36860,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38003,38004,N,N, -N,N,N,N,N,N,N,N,N,N,65207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37986,39844, +36525,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40621,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38608,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65262,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,35508,N,N,N,N,N,N,N,N,N,N,N,N,38743,35447,39927,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36533,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41069, +36534,38742,38208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,41203,38078,N,N,N,39930,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64991,40380,N,N,N,N,N,N,N, +N,38142,N,N,N,N,N,N,N,N,35803,41214,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,36544,40775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35806,41211,N,N,N,N, +36547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38473,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,65218,N,N,38220,39933,N,N,N,N,N,N,N,N,N,N,N,N,N,37068, +40032,38219,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39934,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,40003,N,N,N,40007,36556,N,N,N,36436,N,N,N,N,N,N,N,N,N,N,36580, +40009,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35678,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38238,N,N,N,N,N,N,N, +N,N,N,N,N,38236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40011,35809,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36569,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40372,N, +37471,N,N,N,40012,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35489,N,N,N,N,N,N,N,N,N,N,N,N,N,36571,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40022,35490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38740,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40030,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40660,38248,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,41155,35558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,41207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40033,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64589,N,40539,N,N,N,N,N,N,N,N,40553,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40035,65223,N,N,65222,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40039,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40041,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,37221,N,N,N,N,N,N,N,N,N,N,N,N,40167,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,35412,N,N,N,N,N,N,N,40044,40046,65117,N,N,N,N,N,40051,N, +N,N,N,N,N,N,N,N,N,N,N,N,38250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38253,36592,36685,N, +N,N,N,36598,N,N,N,N,N,N,N,N,64188,N,36053,N,N,N,N,N,N,N,N,N,N,N,N,N,34654,N,N, +N,N,64474,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,35660,64885,39901,64245,N,N,N,N,N,N,N,40052,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,38213,N,N,N,N,N,N,N,N,N,N,N,N,38598,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,36714,36686,N,N,N,N,N,40056,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64085,N,N,N,N,N,N,N,N,N,N,N,N,38884,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40001,37468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38650,36086,N,N,N,N,36173,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64358,36453,38985, +64424,38978,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40058,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38907,37066,N,N,N,N,40027,N,N,38733, +N,N,36563,N,N,N,N,N,N,N,N,N,N,N,N,N,38241,40779,40885,37842,64938,38976,37190, +39015,64090,64425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,38977,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,36051,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,64765,64939,37309,36684,38601,36693,64430,38255,N,N, +N,N,N,N,40061,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,41200,N,N,N,N,N,N,N,N,N,N,N,N,N,37999,64940,N,N,N,N, +38603,38606,N,N,N,N,41046,N,40161,N,N,N,N,N,N,N,N,N,N,38596,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +36702,36716,36515,64435,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,64595,N,N,N,64947,N,N,N,N,36715,N,N,N,N,N,N,N,N,N,N, +N,N,38602,N,N,N,N,N,N,34643,N,N,N,N,N,N,N,N,N,N,N,N,N,36729,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,40559,41157,64632,36418,36698,37058,36517,36961,37455,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35403,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35413, -35689,35548,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35702,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37747,64949,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39886,N, -35432,41208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,65228,N,64445,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36054, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38979,38597, +35260,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40099,N,N,N,N,N,N,37451,38986, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,39135,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,65205,N,N,N,39887,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38651,N,N,39931, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,40654,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36581,N,N,N,N,N, -N,N,N,N,40571,39890,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,36772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,41201,40699,40146,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36775,N,N,N,N,34644,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64604,38981,N,N,36934,36049,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65274,38240,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,65230,35397,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,40444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65231,35749,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,40776,37447,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37115,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35914,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,35564,N,N,64736,38061,65237,38060,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64602,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39894,N,N,N,N,N,N, +N,40100,38257,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35439,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35753,36447,N,N,40395,N,64743,39895,N,N, -N,N,N,N,N,N,N,N,N,37832,N,N,N,N,N,N,N,N,N,37360,36832,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,39899,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37101,N,39900,41196,N,N,N,39162,N,N,N,N,N,N,N,N,N,39904,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37831,37449,38625,39906,N, -N,N,39908,N,N,36833,39909,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38080,N,N,37827,N,N,N,N,N,N,N,N,N,N,37829,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36985,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,38779,N,N,N,N,N,36990,N,N,N,N,65254,65094,N,N,N,N, +N,N,N,N,34629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40102,N,N,N,N, +40103,N,N,N,N,N,40106,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,40659,N,N,N,40560,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40108,34642,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,40376,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37488,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36782,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,38312,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36016,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38088,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,39097,37184,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,64702,N,N,N,N,N,N,N,37207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64223,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,36176,38269,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40112,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39910,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,38467,36420,40015,65268,N,N,N,N,N,39912,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37852,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38838,N,41149,35551,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40618,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38511,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,36426,39917,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,36797,N,N,N,36799,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37737, +39847,51364,N,N,N,N,65258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,39905,N,N,N,N,N,N,35649,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,40374,41195,39843,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,37622,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40377,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,35745,36808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,35148,39008,N,N,N,N,N,N,N,N,N,N,38087,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,35672,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38315,38314,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36430,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64463,40642,N,N,N,N,N, -N,38117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39920,38116,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,40131,40132,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,40364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35814,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35441,36817,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,38225,35771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39921,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38128,36452,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38122,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36705,N,N,N,39780,36443,N,N,N,N,39922,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40894,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40393,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36460,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36723,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36015,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36725, -36465,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36448,36458,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,35916,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38226,38228,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,35540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40379,38211, -37630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -38130,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38129,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,41194,40402,41137,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37368,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37986,39844,36525,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40621,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38608,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,65262,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35508,N, -N,N,N,N,N,N,N,N,N,N,N,38743,35447,39927,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,36533,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41069,36534,38742, -38208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,41203,38078,N,N,N,39930,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64991,40380,N,N,N,N,N,N,N,N,38142,N,N, -N,N,N,N,N,N,35803,41214,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36544, -40775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35806,41211,N,N,N,N,36547,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38473,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,65218,N,N,38220,39933,N,N,N,N,N,N,N,N,N,N,N,N,N,37068,40032, -38219,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39934,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,40003,N,N,N,40007,36556,N,N,N,36436,N,N,N,N,N,N,N,N,N,N,36580,40009,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35678,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38238,N,N,N,N,N,N,N,N,N,N,N,N, -38236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40011,35809,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,36569,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40372,N,37471,N,N,N, -40012,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35489,N,N,N,N,N,N,N,N,N,N,N,N,N,36571,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40022,35490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,38740,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40030,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,40660,38248,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -41155,35558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,41207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40033,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64589,N,40539,N,N,N,N,N,N,N,N,40553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40035,65223,N, -N,65222,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40039,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,40041,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35810,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,37221,N,N,N,N,N,N,N,N,N,N,N,N,40167,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,35412,N,N,N,N,N,N,N,40044,40046,65117,N,N,N,N,N,40051,N,N,N,N,N,N,N,N, -N,N,N,N,N,38250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38253,36592,36685,N,N,N,N,36598,N, -N,N,N,N,N,N,N,64188,N,36053,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64474,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35660, -64885,39901,64245,N,N,N,N,N,N,N,40052,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,38213,N,N,N,N,N,N,N,N,N,N,N,N,38598,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,36714,36686,N,N,N,N,N,40056,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64085,N,N,N,N,N,N,N,N,N,N,N,N,38884,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40001,37468, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38650,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64358,36453,38985,64424,38978,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40058,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,38907,37066,N,N,N,N,40027,N,N,38733,N,N,36563,N,N,N,N,N,N,N,N,N, -N,N,N,N,38241,40779,40885,37842,64938,38976,37190,39015,64090,64425,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38977,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36051,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64765,64939,37309,36684,38601,36693,64430,38255,N,N,N,N,N,N,40061,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,39381,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37108,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35491,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -41200,N,N,N,N,N,N,N,N,N,N,N,N,N,37999,64940,N,N,N,N,38603,38606,N,N,N,N,41046, -N,40161,N,N,N,N,N,N,N,N,N,N,38596,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36702,36716,36515,64435,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64595,N,N,N,64947,N,N,N,N,36715,N,N,N,N,N,N,N,N,N,N,N,N,38602,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,36729,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40559,41157,64632, -36418,36698,37058,36517,36961,37455,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37747,64949,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65228,N,64445,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36054,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38979,38597,35260,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,40099,N,N,N,N,N,N,37451,38986,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36772,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41201, -40699,40146,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36775,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,64604,38981,N,N,36934,36049,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,65274,38240,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40776,37447,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37115,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40100,38257,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40102,N,N,N,N,40103,N,N,N,N,N,40106,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40659,N,N,N,40560,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,40108,36782,38269,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40112,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38838, -N,41149,35551,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,40618,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36797,N,N,N,36799,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37737,39847, -51364,N,N,N,N,65258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,39905,N,N,N,N,N,N,35649,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,40374,41195,39843,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35745,36808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,35148,39008,N,N,N,N,N,N,N,N,N,N,38087,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,35672,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,38315,38314,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40131,40132,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,37846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35814,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35441,36817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,39381,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37108,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35491,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40142,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40148,40149,N,N,N,64456,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40371,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64624,N,N,N,N,N,36823,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39795,N,N,N,N,N,N,N,N,N,N,64091,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40142,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40148,40149,N,N,N,64456,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40371,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64624,N,N,N,N,N,36823,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39795,N,N,N,N,N,N,N,N,N,N,64091,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,36818,36964,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39094, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36818,36964,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39094, 38504,N,N,N,N,40150,N,N,N,N,N,N,N,N,N,N,N,N,39101,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36828,65270,36825,N,N,N,N,N,N,N,N,N,N,N,N,N, 38209,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38899,39928,40556,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36850,36846,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,40151,N,N,N,N,N,N,N,N,N,N,N,N,40558,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,35392,N,N,N,N,N,N,N,N,N,N,36847,N,N,N,N,N,N,N,N,36852,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36853,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38338,39018,N,38863,40572,36929,N,N,N, -N,N,N,40155,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37953,N,N,N,N,40166,40368, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40170,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40173,N,N,N,N,N,N,N,N,N,N,N,N,40186,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,35682,35406,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,40138,35430,N,N,N,N,N,N,N,N,N,N,40187,40188,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40190,N,N,N,N,N,N,N,N,N,N,N, -N,N,35411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40165,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40256,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,40257,N,N,N,N,N,N,N,N,N,N,N,N,36933,35699,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,38858,N,40258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,35758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35538,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40434,40259,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40159,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,40260,N,N,N,N,N,N,N,N,N,N,36554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36942,N,N,N,N,N,N,N,36531,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40949,N,N,N,N,N,N,N,N,N,N,N,N,40261,36943,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,34668,N,N,N,N,38899,39928,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40263,N,N,N,35274,N,N,N,N,N,N,40117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64510,36958,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36963,36951,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36966,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,39872,N,N,N,N,N,N,N,N,N,N,N,64741,37218,N,N,N,N,N,N,N,N,N,N,36967,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36769,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,36770,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,40264,64211,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36957,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,37049,N,N,N,N,N,N,N,N,N,N,N,N,N,36971,35932,N,N,N, -36969,65111,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,65109,36979,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39919,40176,N,N, -N,N,N,N,N,N,N,N,N,N,40267,N,N,N,N,N,N,N,N,N,N,N,N,N,65241,N,N,N,65242,N,N,N, -37344,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37336,N,N,N,N,N,N,N,N,N,N,38470,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37728,N,64083,40147,N,N, -N,N,N,N,N,N,N,N,N,N,40270,N,N,N,64320,N,N,N,36322,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,37954,N,36950,N,N,39013,N,35948,64074,N,N,40272, -40274,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38319,38746,37705,38727,41204,N,N,N,N,N, -N,38776,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36815,N,N,N,64608,N,N,N,N,N,N,N,N,35918,N, -N,N,64598,N,N,N,N,N,N,N,N,N,N,N,N,N,37340,38497,37612,37725,36574,38654,64847, -38366,N,N,N,N,N,N,N,N,N,N,N,N,N,39088,41024,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38845,38781,38901,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,39852,64218,37570,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38833,N,N,N,N,N,36987,N,N,N,N,37886,38011, -N,38775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64190,64835,37062,37028,37032,38057,N, -37033,N,N,N,N,35941,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38368,36989,N,N,N,N,N,N, -37477,N,N,N,N,N,N,N,N,N,N,N,N,N,64954,37828,N,N,N,N,N,N,N,N,65261,40363,41187, -N,38472,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40275,N,N,N,N,N,35497,N, -39877,N,38493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38751,38495,38510,64349,N,N, -N,N,N,40369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,65187,N,N,N,N,N,N,N,N,N,40370,N,N,38318,64675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41122,N,N,38485,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,40276,N,N,37697,N,38317,37333,N,N,N,N,N,N,N,N,N,N,N,N,38778,65020, -36423,37885,37029,37036,N,N,N,N,N,N,N,N,38316,N,N,N,N,N,N,N,N,N,37038,65189,N, -N,N,N,N,40278,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38883,38370,N,N,N,N,N,37990, -N,N,38471,N,N,N,N,37304,N,N,N,N,40172,N,N,N,N,N,N,N,N,37037,N,38371,N,N,N,N,N, +34650,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34632,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34634,40556,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36850,36846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40151,N,N,N,N,N,N,N,N,N,N,N,N,40558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35392,N, +N,N,N,N,N,N,N,N,N,36847,N,N,N,N,N,N,N,N,36852,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36853,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38338,39018,N,38863,40677,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40572, +36929,N,N,N,N,N,N,40155,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37953,N,N,N,N, +40166,40368,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,40170,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40173,N,N,N,N,N,N,N,N,N,N,N,N, +40186,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,35682,35406,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40138,35430,N,N,N,N,N,N,N,N,N,N,40187,40188,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40190,N,N,N,N,N, +N,N,N,N,N,N,N,N,35411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40165,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40256,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40257,N,N,N,N,N,N,N,N,N,N,N,N,36933,35699, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38858,N,40258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,35425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,35758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35538,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,35746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40434, +40259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40159,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,40260,N,N,N,N,N,N,N,N,N,N,36554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36942,N,N,N,N,N,N,N,36531,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,40949,N,N,N,N,N,N,N,N,N,N,N,N,40261,36943,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,40263,N,N,N,35274,N,N,N,N,N,N,40117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64510, +36958,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36963,36951,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36966,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,39872,N,N,N,N,N,N,N,N,N,N,N,64741,37218,N,N,N,N,N,N,N,N,N,N,36967,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36769,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,36770,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40264,64211,N,N,N,N,N,N,36175,N,N,N,N,N,N,N,N,N,36957,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37049,N,N,N,N,N,N,N,N,N,N,N,N,N,36971, +35932,N,N,N,36969,65111,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,65109,36979,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +39919,40176,N,N,N,N,N,N,N,N,N,N,N,N,40267,N,N,N,N,N,N,N,N,N,N,N,N,N,65241,N,N, +N,65242,N,N,N,37344,36163,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37336,N,N,N,N,N,N,N, +N,N,N,38470,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37728, +N,64083,40147,N,N,N,N,N,N,N,N,N,N,N,N,40270,N,N,N,64320,N,N,N,36322,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37954,N,36950,N,N,39013,N,35948, +64074,N,N,40272,40274,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38319,38746,37705,38727, +41204,N,N,N,N,N,N,38776,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36815,N,N,N,64608,N,N,N,N, +N,N,N,N,35918,N,N,N,64598,N,N,N,N,N,N,N,N,N,N,N,N,N,37340,38497,37612,37725, +36574,38654,64847,38366,N,N,N,N,N,N,N,N,N,N,N,N,N,39088,41024,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38845,38781,38901, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39852,64218,37570,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38833,N,N,N,N,N,36987,N, +N,N,N,37886,38011,N,38775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64190,64835,37062, +37028,37032,38057,N,37033,N,N,N,N,35941,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38368,36989,N,N,N,N,N,N,37477,N,N,N,N,N,N,N,N,N,N,N,N,N,64954,37828,N,N,N,N,N, +N,N,N,65261,40363,41187,N,38472,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40275,N,N,N,N,N,35497,N,39877,N,38493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +38751,38495,38510,64349,N,N,N,N,N,40369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65187,N,N,N,N,N,N,N,N,N,40370,N,N,38318,64675,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34665,N,N,N,N,N,N,N,N, +41122,N,N,38485,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40276,N,N,37697,N,38317,37333,N,N, +N,N,N,N,N,N,N,N,N,N,38778,65020,36423,37885,37029,37036,N,N,N,N,N,N,N,N,38316, +N,N,N,N,N,N,N,N,N,37038,65189,N,N,N,N,N,40278,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,38883,38370,N,N,N,N,N,37990,N,N,38471,N,N,N,N,37304,N,N,N,N,40172,N,N,N,N, +N,N,N,N,37037,N,38371,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35663, +N,N,35555,N,N,N,N,35661,38378,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35663,N,N,35555,N,N,N,N,35661,38378,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35662,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36033,35821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37337,N,N,41124,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38389,38388, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,40883,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65199,N,N,N,N, -N,65138,37498,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,65196,N,N,N,N,N,N,N,N,N,N,N,N,N,38387,40280,37746,N,N,37317,N,N,N,N, -N,N,N,38466,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37069,38398, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35662,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36033, +35821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,37337,N,N,41124,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38389,38388,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40883,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,65199,N,N,N,N,N,65138,37498,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65196,N,N,N,N,N,N,N,N,N,N,N, +N,N,38387,40280,36166,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37746,N,N,37317,N,N,N,N,N,N, +N,38466,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37069,38398, 37209,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40037,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38860,37070,N,N,N,N,N,N,40281,64757,65277,N,N, 40283,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, @@ -2168,70 +2203,72 @@ N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,40129,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,40296,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -37799,N,N,N,N,N,N,38516,41199,N,37201,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35940,38518,40297,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64676, -N,N,N,N,N,N,N,N,N,N,N,N,40298,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37454,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40299,N,N,N,N,N,39873, -40300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -35429,37213,N,N,N,N,N,N,N,N,40301,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37799,N,N,N,N,N,N,38516,N,N,N,N,N,N,N,N,36093,41199,N,37201,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38593,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34679,N,35940,38518,40297,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,64676,N,N,N,N,N,N,N,N,N,N,N,N,40298,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37454,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,40299,N,N,N,N,N,39873,40300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,35429,37213,N,N,N,N,N,N,N,N,40301,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37210,35906,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37210,35906,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40128,37226,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,40302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,40614,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +40397,N,N,40303,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,40128,37226,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -40302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40614, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40397,N,N,40303,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35259,40697,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38580,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,37234,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,35259,40697,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,38580,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37234,N, +40648,N,N,N,34673,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35669,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40648,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,35669,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40305,40306,N,N,N,N, -N,N,N,N,N,N,N,N,40652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,40305,40306,N,N,N,N,N,N,N,N,N,N,N,N,40652,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37236,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40656,36956,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,37236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,40656,36956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36562,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,37288,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,37239,N,N,N,N,N,N,N,N,N,N,N,38591,N,N,N,N,N,38592,N,N,N,N, -36785,N,N,N,N,N,38583,35925,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,37240,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35262,37244,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,64375,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,36562,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37288,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37239,N,N,N,N,N,N,N,N,N,N,N, +38591,N,N,N,N,N,38592,N,N,N,N,36785,N,N,N,N,N,38583,35925,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37240,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35262, +37244,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64375,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,37237,37283,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37238,N,N,N, -N,N,N,N,N,38590,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,37241,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38582, -37284,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37286,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37237,37283,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,37238,N,N,N,N,N,N,N,N,38590,36169,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37241,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,38582,37284,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +37286,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40309,N,N,N,N,N,N,N,N,N,N,N,36946,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41029,N,37289,N,39082,N,N,N,35935,N,N,35754,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40157,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40311,34646,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,40309,N,N,N,N,N,N,N,N,N,N,N,36946,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -41029,N,37289,N,39082,N,N,N,35935,N,N,35754,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40157,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,40311,35136,40684,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37802,38008,N,N,N,N,40314,35529,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,35659,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40940,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,35554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,35136,40684,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,37802,38008,N,N,N,N,40314,35529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35659,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40940,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +35554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,40565,39028,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,39624,N,N,N,N,41031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35779,N,N,N,N,N,N,N,N,N, -N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -64631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -N,N,40018,36605,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36776,N,N,N,N,N,N,N,N,N,38266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, -36848, +N,N,40565,39028,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39624,N,N,N,N,41031, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35779,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,64584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64631,N,N,N,N,N,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40018,36605,N,N,N,N, +N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36776,N,N,N,N,N,N,N,N,N, +38266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36848, }; static const struct unim_index big5hkscs_nonbmp_encmap[256] = { @@ -2249,84 +2286,84 @@ 253},{__big5hkscs_nonbmp_encmap+4292,119,150},{__big5hkscs_nonbmp_encmap+4324, 10,254},{__big5hkscs_nonbmp_encmap+4569,13,252},{__big5hkscs_nonbmp_encmap+ 4809,32,250},{__big5hkscs_nonbmp_encmap+5028,3,243},{__big5hkscs_nonbmp_encmap -+5269,45,75},{__big5hkscs_nonbmp_encmap+5300,68,194},{ -__big5hkscs_nonbmp_encmap+5427,42,172},{__big5hkscs_nonbmp_encmap+5558,70,249 -},{__big5hkscs_nonbmp_encmap+5738,28,213},{__big5hkscs_nonbmp_encmap+5924,15, -232},{__big5hkscs_nonbmp_encmap+6142,69,252},{__big5hkscs_nonbmp_encmap+6326, -42,195},{__big5hkscs_nonbmp_encmap+6480,8,124},{__big5hkscs_nonbmp_encmap+6597 -,33,250},{__big5hkscs_nonbmp_encmap+6815,101,237},{__big5hkscs_nonbmp_encmap+ -6952,19,190},{__big5hkscs_nonbmp_encmap+7124,27,246},{ -__big5hkscs_nonbmp_encmap+7344,18,205},{__big5hkscs_nonbmp_encmap+7532,3,247}, -{__big5hkscs_nonbmp_encmap+7777,38,147},{__big5hkscs_nonbmp_encmap+7887,102, -232},{__big5hkscs_nonbmp_encmap+8018,14,206},{__big5hkscs_nonbmp_encmap+8211, -38,201},{__big5hkscs_nonbmp_encmap+8375,7,238},{__big5hkscs_nonbmp_encmap+8607 -,13,239},{__big5hkscs_nonbmp_encmap+8834,116,227},{__big5hkscs_nonbmp_encmap+ -8946,51,218},{__big5hkscs_nonbmp_encmap+9114,3,249},{__big5hkscs_nonbmp_encmap -+9361,15,225},{__big5hkscs_nonbmp_encmap+9572,0,254},{ -__big5hkscs_nonbmp_encmap+9827,0,229},{__big5hkscs_nonbmp_encmap+10057,25,243 -},{__big5hkscs_nonbmp_encmap+10276,0,238},{__big5hkscs_nonbmp_encmap+10515,3, -215},{__big5hkscs_nonbmp_encmap+10728,58,58},{__big5hkscs_nonbmp_encmap+10729, -194,194},{__big5hkscs_nonbmp_encmap+10730,167,250},{__big5hkscs_nonbmp_encmap+ -10814,90,90},{__big5hkscs_nonbmp_encmap+10815,99,255},{ -__big5hkscs_nonbmp_encmap+10972,64,248},{__big5hkscs_nonbmp_encmap+11157,17, -252},{__big5hkscs_nonbmp_encmap+11393,53,240},{__big5hkscs_nonbmp_encmap+11581 -,17,225},{__big5hkscs_nonbmp_encmap+11790,4,252},{__big5hkscs_nonbmp_encmap+ -12039,27,250},{__big5hkscs_nonbmp_encmap+12263,13,248},{ -__big5hkscs_nonbmp_encmap+12499,4,214},{__big5hkscs_nonbmp_encmap+12710,5,200 -},{__big5hkscs_nonbmp_encmap+12906,24,212},{__big5hkscs_nonbmp_encmap+13095,6, -224},{__big5hkscs_nonbmp_encmap+13314,18,255},{__big5hkscs_nonbmp_encmap+13552 -,0,251},{__big5hkscs_nonbmp_encmap+13804,14,233},{__big5hkscs_nonbmp_encmap+ -14024,110,245},{__big5hkscs_nonbmp_encmap+14160,9,217},{ -__big5hkscs_nonbmp_encmap+14369,6,235},{__big5hkscs_nonbmp_encmap+14599,59,167 -},{__big5hkscs_nonbmp_encmap+14708,14,194},{__big5hkscs_nonbmp_encmap+14889, -44,157},{__big5hkscs_nonbmp_encmap+15003,43,231},{__big5hkscs_nonbmp_encmap+ -15192,32,216},{__big5hkscs_nonbmp_encmap+15377,14,19},{ -__big5hkscs_nonbmp_encmap+15383,25,110},{__big5hkscs_nonbmp_encmap+15469,49, -224},{__big5hkscs_nonbmp_encmap+15645,5,246},{__big5hkscs_nonbmp_encmap+15887, -6,225},{__big5hkscs_nonbmp_encmap+16107,87,225},{__big5hkscs_nonbmp_encmap+ -16246,3,204},{__big5hkscs_nonbmp_encmap+16448,149,233},{ -__big5hkscs_nonbmp_encmap+16533,116,232},{__big5hkscs_nonbmp_encmap+16650,1, -254},{__big5hkscs_nonbmp_encmap+16904,32,67},{__big5hkscs_nonbmp_encmap+16940, -14,216},{__big5hkscs_nonbmp_encmap+17143,26,226},{__big5hkscs_nonbmp_encmap+ -17344,41,165},{__big5hkscs_nonbmp_encmap+17469,2,221},{ -__big5hkscs_nonbmp_encmap+17689,88,208},{__big5hkscs_nonbmp_encmap+17810,53, -248},{__big5hkscs_nonbmp_encmap+18006,2,152},{__big5hkscs_nonbmp_encmap+18157, -18,191},{__big5hkscs_nonbmp_encmap+18331,18,252},{__big5hkscs_nonbmp_encmap+ -18566,22,204},{__big5hkscs_nonbmp_encmap+18749,28,199},{ -__big5hkscs_nonbmp_encmap+18921,14,250},{__big5hkscs_nonbmp_encmap+19158,45,82 -},{__big5hkscs_nonbmp_encmap+19196,5,247},{__big5hkscs_nonbmp_encmap+19439,33, -209},{__big5hkscs_nonbmp_encmap+19616,34,240},{__big5hkscs_nonbmp_encmap+19823 -,0,215},{__big5hkscs_nonbmp_encmap+20039,38,223},{__big5hkscs_nonbmp_encmap+ -20225,14,248},{__big5hkscs_nonbmp_encmap+20460,9,205},{ -__big5hkscs_nonbmp_encmap+20657,27,230},{__big5hkscs_nonbmp_encmap+20861,154, -154},{__big5hkscs_nonbmp_encmap+20862,34,134},{__big5hkscs_nonbmp_encmap+20963 -,116,254},{__big5hkscs_nonbmp_encmap+21102,7,148},{__big5hkscs_nonbmp_encmap+ -21244,15,204},{__big5hkscs_nonbmp_encmap+21434,88,200},{ -__big5hkscs_nonbmp_encmap+21547,36,253},{__big5hkscs_nonbmp_encmap+21765,10, -244},{__big5hkscs_nonbmp_encmap+22000,6,244},{__big5hkscs_nonbmp_encmap+22239, -18,18},{__big5hkscs_nonbmp_encmap+22240,47,220},{__big5hkscs_nonbmp_encmap+ -22414,77,79},{__big5hkscs_nonbmp_encmap+22417,249,249},{ -__big5hkscs_nonbmp_encmap+22418,2,244},{__big5hkscs_nonbmp_encmap+22661,46,188 -},{__big5hkscs_nonbmp_encmap+22804,7,226},{__big5hkscs_nonbmp_encmap+23024,6, -138},{__big5hkscs_nonbmp_encmap+23157,18,130},{__big5hkscs_nonbmp_encmap+23270 -,1,244},{__big5hkscs_nonbmp_encmap+23514,0,230},{__big5hkscs_nonbmp_encmap+ -23745,15,19},{__big5hkscs_nonbmp_encmap+23750,4,43},{__big5hkscs_nonbmp_encmap -+23790,51,252},{__big5hkscs_nonbmp_encmap+23992,15,252},{ -__big5hkscs_nonbmp_encmap+24230,12,255},{__big5hkscs_nonbmp_encmap+24474,3,210 -},{__big5hkscs_nonbmp_encmap+24682,52,185},{__big5hkscs_nonbmp_encmap+24816, -15,231},{__big5hkscs_nonbmp_encmap+25033,197,197},{__big5hkscs_nonbmp_encmap+ -25034,136,237},{__big5hkscs_nonbmp_encmap+25136,13,235},{0,0,0},{0,0,0},{ -__big5hkscs_nonbmp_encmap+25359,29,231},{__big5hkscs_nonbmp_encmap+25562,158, -244},{0,0,0},{__big5hkscs_nonbmp_encmap+25649,32,212},{ -__big5hkscs_nonbmp_encmap+25830,16,241},{__big5hkscs_nonbmp_encmap+26056,3,201 -},{__big5hkscs_nonbmp_encmap+26255,40,77},{__big5hkscs_nonbmp_encmap+26293,5, -213},{__big5hkscs_nonbmp_encmap+26502,115,173},{__big5hkscs_nonbmp_encmap+ -26561,62,246},{__big5hkscs_nonbmp_encmap+26746,6,248},{ -__big5hkscs_nonbmp_encmap+26989,35,222},{__big5hkscs_nonbmp_encmap+27177,20, -254},{__big5hkscs_nonbmp_encmap+27412,7,245},{__big5hkscs_nonbmp_encmap+27651, -32,255},{__big5hkscs_nonbmp_encmap+27875,169,169},{__big5hkscs_nonbmp_encmap+ -27876,52,91},{__big5hkscs_nonbmp_encmap+27916,198,203},{ -__big5hkscs_nonbmp_encmap+27922,1,169},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 ++5269,45,99},{__big5hkscs_nonbmp_encmap+5324,68,194},{ +__big5hkscs_nonbmp_encmap+5451,42,172},{__big5hkscs_nonbmp_encmap+5582,70,249 +},{__big5hkscs_nonbmp_encmap+5762,28,213},{__big5hkscs_nonbmp_encmap+5948,15, +232},{__big5hkscs_nonbmp_encmap+6166,69,252},{__big5hkscs_nonbmp_encmap+6350, +42,195},{__big5hkscs_nonbmp_encmap+6504,8,124},{__big5hkscs_nonbmp_encmap+6621 +,33,250},{__big5hkscs_nonbmp_encmap+6839,101,237},{__big5hkscs_nonbmp_encmap+ +6976,19,190},{__big5hkscs_nonbmp_encmap+7148,27,246},{ +__big5hkscs_nonbmp_encmap+7368,18,205},{__big5hkscs_nonbmp_encmap+7556,3,247}, +{__big5hkscs_nonbmp_encmap+7801,38,147},{__big5hkscs_nonbmp_encmap+7911,102, +232},{__big5hkscs_nonbmp_encmap+8042,14,206},{__big5hkscs_nonbmp_encmap+8235, +38,201},{__big5hkscs_nonbmp_encmap+8399,7,238},{__big5hkscs_nonbmp_encmap+8631 +,13,239},{__big5hkscs_nonbmp_encmap+8858,116,227},{__big5hkscs_nonbmp_encmap+ +8970,51,218},{__big5hkscs_nonbmp_encmap+9138,3,249},{__big5hkscs_nonbmp_encmap ++9385,15,225},{__big5hkscs_nonbmp_encmap+9596,0,254},{ +__big5hkscs_nonbmp_encmap+9851,0,229},{__big5hkscs_nonbmp_encmap+10081,25,243 +},{__big5hkscs_nonbmp_encmap+10300,0,238},{__big5hkscs_nonbmp_encmap+10539,3, +215},{__big5hkscs_nonbmp_encmap+10752,58,58},{__big5hkscs_nonbmp_encmap+10753, +194,194},{__big5hkscs_nonbmp_encmap+10754,167,250},{__big5hkscs_nonbmp_encmap+ +10838,26,90},{__big5hkscs_nonbmp_encmap+10903,99,255},{ +__big5hkscs_nonbmp_encmap+11060,64,248},{__big5hkscs_nonbmp_encmap+11245,6,252 +},{__big5hkscs_nonbmp_encmap+11492,53,240},{__big5hkscs_nonbmp_encmap+11680, +17,236},{__big5hkscs_nonbmp_encmap+11900,4,252},{__big5hkscs_nonbmp_encmap+ +12149,27,250},{__big5hkscs_nonbmp_encmap+12373,13,248},{ +__big5hkscs_nonbmp_encmap+12609,4,214},{__big5hkscs_nonbmp_encmap+12820,5,200 +},{__big5hkscs_nonbmp_encmap+13016,24,212},{__big5hkscs_nonbmp_encmap+13205,6, +224},{__big5hkscs_nonbmp_encmap+13424,18,255},{__big5hkscs_nonbmp_encmap+13662 +,0,251},{__big5hkscs_nonbmp_encmap+13914,14,233},{__big5hkscs_nonbmp_encmap+ +14134,15,245},{__big5hkscs_nonbmp_encmap+14365,9,217},{ +__big5hkscs_nonbmp_encmap+14574,6,235},{__big5hkscs_nonbmp_encmap+14804,59,167 +},{__big5hkscs_nonbmp_encmap+14913,14,194},{__big5hkscs_nonbmp_encmap+15094, +44,157},{__big5hkscs_nonbmp_encmap+15208,43,231},{__big5hkscs_nonbmp_encmap+ +15397,32,216},{__big5hkscs_nonbmp_encmap+15582,14,19},{ +__big5hkscs_nonbmp_encmap+15588,25,154},{__big5hkscs_nonbmp_encmap+15718,49, +224},{__big5hkscs_nonbmp_encmap+15894,5,246},{__big5hkscs_nonbmp_encmap+16136, +6,225},{__big5hkscs_nonbmp_encmap+16356,87,225},{__big5hkscs_nonbmp_encmap+ +16495,3,204},{__big5hkscs_nonbmp_encmap+16697,84,233},{ +__big5hkscs_nonbmp_encmap+16847,116,232},{__big5hkscs_nonbmp_encmap+16964,1, +254},{__big5hkscs_nonbmp_encmap+17218,32,67},{__big5hkscs_nonbmp_encmap+17254, +14,216},{__big5hkscs_nonbmp_encmap+17457,26,226},{__big5hkscs_nonbmp_encmap+ +17658,41,165},{__big5hkscs_nonbmp_encmap+17783,2,221},{ +__big5hkscs_nonbmp_encmap+18003,88,208},{__big5hkscs_nonbmp_encmap+18124,53, +248},{__big5hkscs_nonbmp_encmap+18320,2,152},{__big5hkscs_nonbmp_encmap+18471, +18,191},{__big5hkscs_nonbmp_encmap+18645,18,252},{__big5hkscs_nonbmp_encmap+ +18880,22,204},{__big5hkscs_nonbmp_encmap+19063,28,199},{ +__big5hkscs_nonbmp_encmap+19235,14,250},{__big5hkscs_nonbmp_encmap+19472,45,82 +},{__big5hkscs_nonbmp_encmap+19510,5,247},{__big5hkscs_nonbmp_encmap+19753,33, +209},{__big5hkscs_nonbmp_encmap+19930,34,240},{__big5hkscs_nonbmp_encmap+20137 +,0,215},{__big5hkscs_nonbmp_encmap+20353,38,223},{__big5hkscs_nonbmp_encmap+ +20539,14,248},{__big5hkscs_nonbmp_encmap+20774,9,205},{ +__big5hkscs_nonbmp_encmap+20971,27,230},{__big5hkscs_nonbmp_encmap+21175,82, +255},{__big5hkscs_nonbmp_encmap+21349,34,134},{__big5hkscs_nonbmp_encmap+21450 +,116,254},{__big5hkscs_nonbmp_encmap+21589,7,148},{__big5hkscs_nonbmp_encmap+ +21731,15,204},{__big5hkscs_nonbmp_encmap+21921,88,200},{ +__big5hkscs_nonbmp_encmap+22034,36,253},{__big5hkscs_nonbmp_encmap+22252,10, +244},{__big5hkscs_nonbmp_encmap+22487,6,244},{__big5hkscs_nonbmp_encmap+22726, +18,197},{__big5hkscs_nonbmp_encmap+22906,47,220},{__big5hkscs_nonbmp_encmap+ +23080,77,79},{__big5hkscs_nonbmp_encmap+23083,46,249},{ +__big5hkscs_nonbmp_encmap+23287,2,244},{__big5hkscs_nonbmp_encmap+23530,46,188 +},{__big5hkscs_nonbmp_encmap+23673,7,226},{__big5hkscs_nonbmp_encmap+23893,6, +138},{__big5hkscs_nonbmp_encmap+24026,18,130},{__big5hkscs_nonbmp_encmap+24139 +,1,244},{__big5hkscs_nonbmp_encmap+24383,0,230},{__big5hkscs_nonbmp_encmap+ +24614,15,19},{__big5hkscs_nonbmp_encmap+24619,4,43},{__big5hkscs_nonbmp_encmap ++24659,51,252},{__big5hkscs_nonbmp_encmap+24861,15,252},{ +__big5hkscs_nonbmp_encmap+25099,12,255},{__big5hkscs_nonbmp_encmap+25343,3,210 +},{__big5hkscs_nonbmp_encmap+25551,52,185},{__big5hkscs_nonbmp_encmap+25685, +15,231},{__big5hkscs_nonbmp_encmap+25902,197,197},{__big5hkscs_nonbmp_encmap+ +25903,121,237},{__big5hkscs_nonbmp_encmap+26020,13,235},{0,0,0},{0,0,0},{ +__big5hkscs_nonbmp_encmap+26243,29,231},{__big5hkscs_nonbmp_encmap+26446,158, +244},{0,0,0},{__big5hkscs_nonbmp_encmap+26533,32,212},{ +__big5hkscs_nonbmp_encmap+26714,16,250},{__big5hkscs_nonbmp_encmap+26949,3,201 +},{__big5hkscs_nonbmp_encmap+27148,40,77},{__big5hkscs_nonbmp_encmap+27186,5, +213},{__big5hkscs_nonbmp_encmap+27395,115,173},{__big5hkscs_nonbmp_encmap+ +27454,62,246},{__big5hkscs_nonbmp_encmap+27639,6,248},{ +__big5hkscs_nonbmp_encmap+27882,35,222},{__big5hkscs_nonbmp_encmap+28070,20, +254},{__big5hkscs_nonbmp_encmap+28305,7,245},{__big5hkscs_nonbmp_encmap+28544, +32,255},{__big5hkscs_nonbmp_encmap+28768,81,169},{__big5hkscs_nonbmp_encmap+ +28857,52,91},{__big5hkscs_nonbmp_encmap+28897,198,203},{ +__big5hkscs_nonbmp_encmap+28903,1,169},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 @@ -2335,6 +2372,7 @@ 0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0 },{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{ -__big5hkscs_nonbmp_encmap+28091,37,205},{__big5hkscs_nonbmp_encmap+28260,148, +__big5hkscs_nonbmp_encmap+29072,37,205},{__big5hkscs_nonbmp_encmap+29241,148, 212},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, }; + From guido at python.org Fri Feb 8 18:18:21 2008 From: guido at python.org (Guido van Rossum) Date: Fri, 8 Feb 2008 09:18:21 -0800 Subject: [Python-checkins] r60671 - in python/trunk: Lib/test/cjkencodings_test.py Lib/test/test_codecmaps_hk.py Lib/test/test_multibytecodec_support.py Misc/NEWS Modules/cjkcodecs/_codecs_hk.c Modules/cjkcodecs/mappings_hk.h In-Reply-To: <20080208171021.6A6661E4031@bag.python.org> References: <20080208171021.6A6661E4031@bag.python.org> Message-ID: Is it worth backporting this to 2.5.2? On Feb 8, 2008 9:10 AM, hyeshik.chang wrote: > Author: hyeshik.chang > Date: Fri Feb 8 18:10:20 2008 > New Revision: 60671 > > Modified: > python/trunk/Lib/test/cjkencodings_test.py > python/trunk/Lib/test/test_codecmaps_hk.py > python/trunk/Lib/test/test_multibytecodec_support.py > python/trunk/Misc/NEWS > python/trunk/Modules/cjkcodecs/_codecs_hk.c > python/trunk/Modules/cjkcodecs/mappings_hk.h > Log: > Update big5hkscs codec to conform to the HKSCS:2004 revision. -- --Guido van Rossum (home page: http://www.python.org/~guido/) From hyeshik at gmail.com Fri Feb 8 18:27:11 2008 From: hyeshik at gmail.com (Hye-Shik Chang) Date: Sat, 9 Feb 2008 02:27:11 +0900 Subject: [Python-checkins] r60671 - in python/trunk: Lib/test/cjkencodings_test.py Lib/test/test_codecmaps_hk.py Lib/test/test_multibytecodec_support.py Misc/NEWS Modules/cjkcodecs/_codecs_hk.c Modules/cjkcodecs/mappings_hk.h In-Reply-To: References: <20080208171021.6A6661E4031@bag.python.org> Message-ID: <4f0b69dc0802080927q448d053bu6c822f5495fc450e@mail.gmail.com> On Feb 9, 2008 2:18 AM, Guido van Rossum wrote: > Is it worth backporting this to 2.5.2? I think it's kind of "new feature". It would be better to keep the current HKSCS:2001 implementation in 2.5.2 to avoid confusion. Hye-Shik > > On Feb 8, 2008 9:10 AM, hyeshik.chang wrote: > > Author: hyeshik.chang > > Date: Fri Feb 8 18:10:20 2008 > > New Revision: 60671 > > > > Modified: > > python/trunk/Lib/test/cjkencodings_test.py > > python/trunk/Lib/test/test_codecmaps_hk.py > > python/trunk/Lib/test/test_multibytecodec_support.py > > python/trunk/Misc/NEWS > > python/trunk/Modules/cjkcodecs/_codecs_hk.c > > python/trunk/Modules/cjkcodecs/mappings_hk.h > > Log: > > Update big5hkscs codec to conform to the HKSCS:2004 revision. From buildbot at python.org Fri Feb 8 18:55:34 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 08 Feb 2008 17:55:34 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080208175534.B02C11E4003@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/288 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: hyeshik.chang BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 8 19:08:25 2008 From: python-checkins at python.org (christian.heimes) Date: Fri, 8 Feb 2008 19:08:25 +0100 (CET) Subject: [Python-checkins] r60672 - python/branches/trunk-math/Modules/cmathmodule.c Message-ID: <20080208180825.47FDE1E4028@bag.python.org> Author: christian.heimes Date: Fri Feb 8 19:08:24 2008 New Revision: 60672 Modified: python/branches/trunk-math/Modules/cmathmodule.c Log: Use an enum as proposed by Mark. Corrected return value for finite numbers. if (d) returned constants 0 / -0. Added a macro for table lookup. Modified: python/branches/trunk-math/Modules/cmathmodule.c ============================================================================== --- python/branches/trunk-math/Modules/cmathmodule.c (original) +++ python/branches/trunk-math/Modules/cmathmodule.c Fri Feb 8 19:08:24 2008 @@ -46,45 +46,52 @@ /* special_type takes a double and returns an integer code indicating the type of the double as follows: - - 0 : -infinity - 1 : negative finite number (nonzero) - 2 : -0. - 3 : 0. - 4 : positive finite number (nonzero) - 5 : infinity - 6 : nan - - XXX this should probably be an enum, for the sake of clarity */ -static int +enum special_types { + ST_NINF, /* 0, negative infinity */ + ST_NEG, /* 1, negative finite number (nonzero) */ + ST_NZERO, /* 2, -0. */ + ST_PZERO, /* 3, +0. */ + ST_POS, /* 4, positive finite number (nonzero) */ + ST_PINF, /* 5, positive infinity */ + ST_NAN, /* 6, Not a Number */ +}; + +static enum special_types special_type(double d) { if (Py_IS_FINITE(d)) { - if (d) { + if (d != 0) { if (copysign(1., d) == 1.) - return 3; + return ST_POS; else - return 2; + return ST_NEG; } else { if (copysign(1., d) == 1.) - return 4; + return ST_PZERO; else - return 1; + return ST_NZERO; } } - else { - if (Py_IS_NAN(d)) - return 6; - else if (copysign(1., d) == 1.) - return 5; - else - return 0; - } + if (Py_IS_NAN(d)) + return ST_NAN; + if (copysign(1., d) == 1.) + return ST_PINF; + else + return ST_NINF; } +#define SPECIAL_VALUE(z, table) \ + if (!Py_IS_FINITE((z).real) || !Py_IS_FINITE((z).imag)) { \ + double *special_value = table[special_type((z).real)] \ + [special_type((z).imag)]; \ + r.real = special_value[0]; \ + r.imag = special_value[1]; \ + return r; \ + } + #define P Py_MATH_PI #define I Py_HUGE_VAL #define N Py_NAN @@ -106,15 +113,8 @@ c_acos(Py_complex z) { Py_complex s1, s2, r; - double *special_value; - if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) { - special_value = acos_special_values[special_type(z.real)] - [special_type(z.imag)]; - r.real = special_value[0]; - r.imag = special_value[1]; - return r; - } + SPECIAL_VALUE(z, acos_special_values); if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) { /* avoid unnecessary overflow for large arguments */ From nnorwitz at gmail.com Fri Feb 8 22:08:23 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 16:08:23 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080208210823.GA15839@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551901 refs] From nnorwitz at gmail.com Fri Feb 8 22:15:20 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 16:15:20 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080208211520.GA17842@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9529 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551502 refs] From nnorwitz at gmail.com Fri Feb 8 23:41:50 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Feb 2008 17:41:50 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080208224150.GA3690@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [563541 refs] From python-checkins at python.org Fri Feb 8 23:30:04 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 8 Feb 2008 23:30:04 +0100 (CET) Subject: [Python-checkins] r60673 - python/trunk/Objects/rangeobject.c Message-ID: <20080208223004.616781E4003@bag.python.org> Author: raymond.hettinger Date: Fri Feb 8 23:30:04 2008 New Revision: 60673 Modified: python/trunk/Objects/rangeobject.c Log: Remove unnecessary modulo division. The preceding test guarantees that 0 <= i < len. Modified: python/trunk/Objects/rangeobject.c ============================================================================== --- python/trunk/Objects/rangeobject.c (original) +++ python/trunk/Objects/rangeobject.c Fri Feb 8 23:30:04 2008 @@ -98,7 +98,7 @@ "xrange object index out of range"); return NULL; } - return PyInt_FromSsize_t(r->start + (i % r->len) * r->step); + return PyInt_FromSsize_t(r->start + i * r->step); } static Py_ssize_t From python-checkins at python.org Sat Feb 9 00:02:27 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 00:02:27 +0100 (CET) Subject: [Python-checkins] r60674 - python/trunk/Lib/_abcoll.py Message-ID: <20080208230227.679911E41E2@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 00:02:27 2008 New Revision: 60674 Modified: python/trunk/Lib/_abcoll.py Log: Speed-up __iter__() mixin method. Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Sat Feb 9 00:02:27 2008 @@ -496,13 +496,13 @@ def __iter__(self): i = 0 - while True: - try: + try: + while True: v = self[i] - except IndexError: - break - yield v - i += 1 + yield v + i += 1 + except IndexError: + return def __contains__(self, value): for v in self: From python-checkins at python.org Sat Feb 9 00:34:21 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 00:34:21 +0100 (CET) Subject: [Python-checkins] r60675 - python/trunk/Lib/_abcoll.py Message-ID: <20080208233421.523C51E4003@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 00:34:21 2008 New Revision: 60675 Modified: python/trunk/Lib/_abcoll.py Log: Fill-in missing Set comparisons Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Sat Feb 9 00:34:21 2008 @@ -163,11 +163,24 @@ return NotImplemented return len(self) < len(other) and self.__le__(other) + def __gt__(self, other): + if not isinstance(other, Set): + return NotImplemented + return other < self + + def __ge__(self, other): + if not isinstance(other, Set): + return NotImplemented + return other <= self + def __eq__(self, other): if not isinstance(other, Set): return NotImplemented return len(self) == len(other) and self.__le__(other) + def __ne__(self, other): + return not (self == other) + @classmethod def _from_iterable(cls, it): '''Construct an instance of the class from any iterable input. From python-checkins at python.org Sat Feb 9 00:57:06 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 00:57:06 +0100 (CET) Subject: [Python-checkins] r60677 - python/trunk/Doc/library/userdict.rst Message-ID: <20080208235706.672A91E4003@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 00:57:06 2008 New Revision: 60677 Modified: python/trunk/Doc/library/userdict.rst Log: Add advice on choosing between DictMixin and MutableMapping Modified: python/trunk/Doc/library/userdict.rst ============================================================================== --- python/trunk/Doc/library/userdict.rst (original) +++ python/trunk/Doc/library/userdict.rst Sat Feb 9 00:57:06 2008 @@ -68,6 +68,8 @@ Since the mixin has no knowledge of the subclass constructor, it does not define :meth:`__init__` or :meth:`copy`. + Starting with Python version 2.6, it is recommended to use + :class:`collections.MutableMapping` instead of :class:`DictMixin`. :mod:`UserList` --- Class wrapper for list objects ================================================== From buildbot at python.org Sat Feb 9 01:00:42 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 00:00:42 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080209000042.F2BD21E4003@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3069 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 01:16:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 00:16:36 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080209001637.19A7E1E4028@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2810 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/buildslave/bb/trunk.psf-g4/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 9 02:18:42 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 02:18:42 +0100 (CET) Subject: [Python-checkins] r60679 - python/trunk/Lib/_abcoll.py Message-ID: <20080209011842.C5D841E4004@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 02:18:42 2008 New Revision: 60679 Modified: python/trunk/Lib/_abcoll.py Log: Make ABC containers inherit as documented. Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Sat Feb 9 02:18:42 2008 @@ -56,7 +56,7 @@ Iterable.register(str) -class Iterator: +class Iterator(Iterable): __metaclass__ = ABCMeta @abstractmethod @@ -122,7 +122,7 @@ ### SETS ### -class Set: +class Set(Sized, Iterable, Container): __metaclass__ = ABCMeta """A set is a finite, iterable container. @@ -135,19 +135,6 @@ then the other operations will automatically follow suit. """ - @abstractmethod - def __contains__(self, value): - return False - - @abstractmethod - def __iter__(self): - while False: - yield None - - @abstractmethod - def __len__(self): - return 0 - def __le__(self, other): if not isinstance(other, Set): return NotImplemented @@ -324,7 +311,7 @@ ### MAPPINGS ### -class Mapping: +class Mapping(Sized, Iterable, Container): __metaclass__ = ABCMeta @abstractmethod @@ -345,15 +332,6 @@ else: return True - @abstractmethod - def __len__(self): - return 0 - - @abstractmethod - def __iter__(self): - while False: - yield None - def keys(self): return KeysView(self) @@ -370,7 +348,7 @@ def __ne__(self, other): return not (self == other) -class MappingView: +class MappingView(Sized): __metaclass__ = ABCMeta def __init__(self, mapping): @@ -490,7 +468,7 @@ ### SEQUENCES ### -class Sequence: +class Sequence(Sized, Iterable, Container): __metaclass__ = ABCMeta """All the operations on a read-only sequence. @@ -503,10 +481,6 @@ def __getitem__(self, index): raise IndexError - @abstractmethod - def __len__(self): - return 0 - def __iter__(self): i = 0 try: From buildbot at python.org Sat Feb 9 02:37:23 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 01:37:23 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080209013724.0DAF31E400D@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/619 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: mark.summerfield,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From richard at government-mailing-lists.com Sat Feb 9 00:14:09 2008 From: richard at government-mailing-lists.com (Richard Furlong, National Government Marketing Services) Date: Fri, 08 Feb 2008 18:14:09 -0500 Subject: [Python-checkins] Canada: 2008 Federal Government Employee File Message-ID: <6611DF50.1C86A7E@theworkstation> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-checkins/attachments/20080208/4cd55429/attachment.htm From python-checkins at python.org Sat Feb 9 04:34:52 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 04:34:52 +0100 (CET) Subject: [Python-checkins] r60684 - python/trunk/Lib/_abcoll.py Message-ID: <20080209033452.ACDFA1E4009@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 04:34:52 2008 New Revision: 60684 Modified: python/trunk/Lib/_abcoll.py Log: Merge with r60683. Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Sat Feb 9 04:34:52 2008 @@ -173,9 +173,9 @@ '''Construct an instance of the class from any iterable input. Must override this method if the class constructor signature - will not accept a frozenset for an input. + does not accept an iterable for an input. ''' - return cls(frozenset(it)) + return cls(it) def __and__(self, other): if not isinstance(other, Iterable): From buildbot at python.org Sat Feb 9 04:39:43 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 03:39:43 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080209033943.BE15D1E4009@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/53 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 04:49:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 03:49:37 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080209034937.554C81E4009@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/631 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-hppa/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 24 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 05:01:51 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 04:01:51 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080209040151.ECDA21E4009@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3071 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_sys ====================================================================== FAIL: test_compact_freelists (test.test_sys.SysModuleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 9 05:37:50 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 05:37:50 +0100 (CET) Subject: [Python-checkins] r60687 - in python/trunk: Modules/_collectionsmodule.c Objects/dictobject.c Objects/setobject.c Message-ID: <20080209043750.2DFCA1E4009@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 05:37:49 2008 New Revision: 60687 Modified: python/trunk/Modules/_collectionsmodule.c python/trunk/Objects/dictobject.c python/trunk/Objects/setobject.c Log: Add -3 warnings that set.copy(), dict.copy(), and defaultdict.copy() will go away in Py3.x Modified: python/trunk/Modules/_collectionsmodule.c ============================================================================== --- python/trunk/Modules/_collectionsmodule.c (original) +++ python/trunk/Modules/_collectionsmodule.c Sat Feb 9 05:37:49 2008 @@ -1186,13 +1186,23 @@ { /* This calls the object's class. That only works for subclasses whose class constructor has the same signature. Subclasses that - define a different constructor signature must override copy(). + define a different constructor signature must override __copy__(). */ return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd), dd->default_factory, dd, NULL); } static PyObject * +defdict_copy_method(defdictobject *dd) +{ + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "defaultdict.copy() not supported in 3.x") < 0) + return NULL; + return defdict_copy(dd); +} + +static PyObject * defdict_reduce(defdictobject *dd) { /* __reduce__ must return a 5-tuple as follows: @@ -1241,7 +1251,7 @@ static PyMethodDef defdict_methods[] = { {"__missing__", (PyCFunction)defdict_missing, METH_O, defdict_missing_doc}, - {"copy", (PyCFunction)defdict_copy, METH_NOARGS, + {"copy", (PyCFunction)defdict_copy_method, METH_NOARGS, defdict_copy_doc}, {"__copy__", (PyCFunction)defdict_copy, METH_NOARGS, defdict_copy_doc}, Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Sat Feb 9 05:37:49 2008 @@ -1528,6 +1528,10 @@ static PyObject * dict_copy(register PyDictObject *mp) { + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "dict.copy() not supported in 3.x") < 0) + return NULL; return PyDict_Copy((PyObject*)mp); } Modified: python/trunk/Objects/setobject.c ============================================================================== --- python/trunk/Objects/setobject.c (original) +++ python/trunk/Objects/setobject.c Sat Feb 9 05:37:49 2008 @@ -1131,8 +1131,22 @@ } static PyObject * +set_copy_method(PySetObject *so) +{ + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "set.copy() not supported in 3.x") < 0) + return NULL; + return make_new_set(Py_TYPE(so), (PyObject *)so); +} + +static PyObject * frozenset_copy(PySetObject *so) { + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "frozenset.copy() not supported in 3.x") < 0) + return NULL; if (PyFrozenSet_CheckExact(so)) { Py_INCREF(so); return (PyObject *)so; @@ -1911,7 +1925,7 @@ clear_doc}, {"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST, contains_doc}, - {"copy", (PyCFunction)set_copy, METH_NOARGS, + {"copy", (PyCFunction)set_copy_method, METH_NOARGS, copy_doc}, {"discard", (PyCFunction)set_discard, METH_O, discard_doc}, From buildbot at python.org Sat Feb 9 05:45:06 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 04:45:06 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080209044506.CA8201E4009@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2814 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 05:47:22 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 04:47:22 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 3.0 Message-ID: <20080209044722.6B3E31E4009@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%203.0/builds/505 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 05:47:22 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 04:47:22 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080209044722.DFE5F1E4009@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/633 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 06:01:25 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 05:01:25 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080209050125.335851E4009@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/55 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 06:05:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 05:05:11 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080209050512.1B3AF1E4009@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/565 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 06:28:14 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 05:28:14 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080209052814.E0A701E400D@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/30 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 06:50:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 05:50:39 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 3.0 Message-ID: <20080209055039.76FC61E400C@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%203.0/builds/88 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 06:50:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 05:50:39 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080209055039.B62681E400C@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/198 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 07:18:50 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 06:18:50 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian trunk Message-ID: <20080209061850.DB2F91E400C@bag.python.org> The Buildbot has detected a new failure of MIPS Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%20trunk/builds/320 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 07:18:52 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 06:18:52 +0000 Subject: [Python-checkins] buildbot failure in MIPS Debian 3.0 Message-ID: <20080209061852.35F3D1E400D@bag.python.org> The Buildbot has detected a new failure of MIPS Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/MIPS%20Debian%203.0/builds/282 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-mips Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From nnorwitz at gmail.com Sat Feb 9 10:08:24 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Feb 2008 04:08:24 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080209090824.GA17822@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551886 refs] From nnorwitz at gmail.com Sat Feb 9 10:15:18 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Feb 2008 04:15:18 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080209091518.GA19816@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9529 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 304 tests OK. 1 test failed: test_sys 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [551479 refs] From python-checkins at python.org Sat Feb 9 11:03:40 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 9 Feb 2008 11:03:40 +0100 (CET) Subject: [Python-checkins] r60688 - tracker/importer/config.py tracker/importer/handlers.py tracker/importer/sfxmlhandlers.py tracker/importer/xmlexport2handlers.py tracker/importer/xmlexport2toroundup.py Message-ID: <20080209100340.891641E4004@bag.python.org> Author: martin.v.loewis Date: Sat Feb 9 11:03:40 2008 New Revision: 60688 Modified: tracker/importer/config.py tracker/importer/handlers.py tracker/importer/sfxmlhandlers.py tracker/importer/xmlexport2handlers.py tracker/importer/xmlexport2toroundup.py Log: Add support for Jython import Modified: tracker/importer/config.py ============================================================================== --- tracker/importer/config.py (original) +++ tracker/importer/config.py Sat Feb 9 11:03:40 2008 @@ -1,4 +1,4 @@ -mappings = {'category': +python = {'category': {"Demos and tools":"Demos and Tools", "Distutils and setup.py":"Distutils", "Python Interpreter Core":"Interpreter Core", @@ -24,3 +24,20 @@ } +jython = {'category': + {}, + + 'priority': + {'1':'low', + '2':'low', + '3':'low', + '4':'low', + '5':'normal', + '6':'high', + '7':'high', + '8':'immediate', + '9':'urgent' + }, + } + + Modified: tracker/importer/handlers.py ============================================================================== --- tracker/importer/handlers.py (original) +++ tracker/importer/handlers.py Sat Feb 9 11:03:40 2008 @@ -183,7 +183,7 @@ for i in range(len(alltds)): header = alltds[i].text or "" if -1 != header.find("Publicly Displayed Name:"): - realname = alltds[i+1].text + realname = alltds[i+1].text.strip() break ulh = UserlinkHandler(db, Modified: tracker/importer/sfxmlhandlers.py ============================================================================== --- tracker/importer/sfxmlhandlers.py (original) +++ tracker/importer/sfxmlhandlers.py Sat Feb 9 11:03:40 2008 @@ -104,7 +104,7 @@ for i in range(len(alltds)): header = alltds[i].text or "" if -1 != header.find("Publicly Displayed Name:"): - realname = alltds[i+1].text + realname = alltds[i+1].text.strip() break return self.create_user(username, realname) Modified: tracker/importer/xmlexport2handlers.py ============================================================================== --- tracker/importer/xmlexport2handlers.py (original) +++ tracker/importer/xmlexport2handlers.py Sat Feb 9 11:03:40 2008 @@ -1,6 +1,5 @@ import time, os, urllib, socket, mimetools, stat, re -from config import mappings import time import BeautifulSoup as BS @@ -105,7 +104,7 @@ for i in range(len(alltds)): header = alltds[i].text or "" if -1 != header.find("Publicly Displayed Name:"): - realname = alltds[i+1].text + realname = alltds[i+1].text.strip() break return (username, realname, address) @@ -239,7 +238,13 @@ self.resolutions = resolutions def handle(self, item, roundupdata): - resolution = self.resolutions[item.find(self.source).text].lower() + resolution = item.find(self.source) + # Some trackers (e.g. Jython Feature Requests) have the resolution box + # turned off + if resolution is None: + roundupdata[self.target] = None + return + resolution = self.resolutions[resolution.text].lower() if "none" == resolution: roundupdata[self.target] = None else: Modified: tracker/importer/xmlexport2toroundup.py ============================================================================== --- tracker/importer/xmlexport2toroundup.py (original) +++ tracker/importer/xmlexport2toroundup.py Sat Feb 9 11:03:40 2008 @@ -24,6 +24,7 @@ import xmlexport2handlers as x2h from roundup import instance +import config def handle_idmapping(tracker, name, itemname): print "Reading in '%s'" % name @@ -128,9 +129,11 @@ trackerhome = "/var/lib/roundup/trackers/python-dev" startat = 0 update = False + mappings = "python" opts, args = getopt.getopt(sys.argv[1:], "", ["xmlfile=", "trackerhome=", - "startat=", "update"]) + "startat=", "update", + "mappings="]) for opt, optarg in opts: if "--xmlfile" == opt: xmlfile = optarg @@ -140,6 +143,10 @@ startat = int(optarg) elif "--update" == opt: update = 1 + elif "--mappings" == opt: + mappings = optarg + + x2h.mappings = getattr(config, mappings) rounduptracker = instance.open(trackerhome) db = rounduptracker.open("admin") From python-checkins at python.org Sat Feb 9 11:04:19 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 11:04:19 +0100 (CET) Subject: [Python-checkins] r60689 - python/trunk/Lib/_abcoll.py Message-ID: <20080209100419.A39B41E4004@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 11:04:19 2008 New Revision: 60689 Modified: python/trunk/Lib/_abcoll.py Log: Metaclass declaration is inherited Modified: python/trunk/Lib/_abcoll.py ============================================================================== --- python/trunk/Lib/_abcoll.py (original) +++ python/trunk/Lib/_abcoll.py Sat Feb 9 11:04:19 2008 @@ -57,7 +57,6 @@ class Iterator(Iterable): - __metaclass__ = ABCMeta @abstractmethod def __next__(self): @@ -123,8 +122,6 @@ class Set(Sized, Iterable, Container): - __metaclass__ = ABCMeta - """A set is a finite, iterable container. This class provides concrete generic implementations of all @@ -312,7 +309,6 @@ class Mapping(Sized, Iterable, Container): - __metaclass__ = ABCMeta @abstractmethod def __getitem__(self, key): @@ -349,7 +345,6 @@ return not (self == other) class MappingView(Sized): - __metaclass__ = ABCMeta def __init__(self, mapping): self._mapping = mapping @@ -469,8 +464,6 @@ class Sequence(Sized, Iterable, Container): - __metaclass__ = ABCMeta - """All the operations on a read-only sequence. Concrete subclasses must override __new__ or __init__, From python-checkins at python.org Sat Feb 9 11:06:21 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 9 Feb 2008 11:06:21 +0100 (CET) Subject: [Python-checkins] r60691 - python/trunk/Lib/test/test_sys.py Message-ID: <20080209100621.2D2AC1E4004@bag.python.org> Author: raymond.hettinger Date: Sat Feb 9 11:06:20 2008 New Revision: 60691 Modified: python/trunk/Lib/test/test_sys.py Log: Temporarily disable this test. It's been broken for a week. Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Sat Feb 9 11:06:20 2008 @@ -369,21 +369,21 @@ def test_compact_freelists(self): sys._compact_freelists() r = sys._compact_freelists() - # freed blocks shouldn't change - self.assertEqual(r[0][2], 0) - self.assertEqual(r[1][2], 0) - # fill freelists - ints = list(range(10000)) - floats = [float(i) for i in ints] - del ints - del floats - # should free more than 200 blocks each - r = sys._compact_freelists() - self.assert_(r[0][1] > 100, r[0][1]) - self.assert_(r[1][2] > 100, r[1][1]) - - self.assert_(r[0][2] > 100, r[0][2]) - self.assert_(r[1][2] > 100, r[1][2]) +## # freed blocks shouldn't change +## self.assertEqual(r[0][2], 0) +## self.assertEqual(r[1][2], 0) +## # fill freelists +## ints = list(range(10000)) +## floats = [float(i) for i in ints] +## del ints +## del floats +## # should free more than 200 blocks each +## r = sys._compact_freelists() +## self.assert_(r[0][1] > 100, r[0][1]) +## self.assert_(r[1][2] > 100, r[1][1]) +## +## self.assert_(r[0][2] > 100, r[0][2]) +## self.assert_(r[1][2] > 100, r[1][2]) def test_main(): test.test_support.run_unittest(SysModuleTest) From nnorwitz at gmail.com Sat Feb 9 11:43:10 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Feb 2008 05:43:10 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080209104310.GA30629@python.psfb.org> test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread writer 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0008-0008-0008-0008-0008' Exception in thread writer 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1003-1003-1003-1003-1003' Exception in thread writer 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/tmp/python-test/local/lib/python2.6/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2011-2011-2011-2011-2011' test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7773 refs] [7773 refs] [7773 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8150 refs] [8150 refs] test_random test_rational test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:108: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ssl_sock = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:74: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:157: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) /tmp/python-test/local/lib/python2.6/test/test_socket_ssl.py:171: DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead. ss = socket.ssl(s) test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7768 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7769 refs] [9390 refs] [7986 refs] [7769 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] [7768 refs] . [7768 refs] [7768 refs] this bit of output is from a test of stdout in a different process ... [7768 refs] [7768 refs] [7986 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7768 refs] [7768 refs] test test_sys failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_sys.py", line 385, in test_compact_freelists self.assert_(r[0][2] > 100, r[0][2]) AssertionError: 0 test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7773 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10896 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 315 tests OK. 1 test failed: test_sys 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [563516 refs] From buildbot at python.org Sat Feb 9 11:19:00 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 10:19:00 +0000 Subject: [Python-checkins] buildbot failure in amd64 XP trunk Message-ID: <20080209101901.1B0CD1E4004@bag.python.org> The Buildbot has detected a new failure of amd64 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20XP%20trunk/builds/777 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sat Feb 9 11:21:52 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 09 Feb 2008 10:21:52 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian 3.0 Message-ID: <20080209102152.A17AB1E4004@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%203.0/builds/603 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From python-checkins at python.org Sat Feb 9 11:23:10 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 9 Feb 2008 11:23:10 +0100 (CET) Subject: [Python-checkins] r60692 - tracker/instances/jython/html/page.html Message-ID: <20080209102310.EC5151E4004@bag.python.org> Author: martin.v.loewis Date: Sat Feb 9 11:23:10 2008 New Revision: 60692 Modified: tracker/instances/jython/html/page.html Log: Make jython.org links absolute. Reorder menu items. Modified: tracker/instances/jython/html/page.html ============================================================================== --- tracker/instances/jython/html/page.html (original) +++ tracker/instances/jython/html/page.html Sat Feb 9 11:23:10 2008 @@ -38,6 +38,7 @@ title="Jython" />
    +This is a demo installation. Do not use it to report real bugs.
    -
    +
     
    @@ -250,7 +237,7 @@ The invoking context must define a "name" variable which names the property being searched. -See issue.search.html in the classic template for examples. +See offer.search.html in the classic template for examples. --> @@ -272,7 +259,7 @@ name name; id name"/> (cal) + tal:attributes="href python:'''javascript:help_window('offer?@template=calendar&property=%s&form=itemSynopsis', 300, 200)'''%name">(cal) @@ -283,7 +270,7 @@ - @@ -322,7 +309,7 @@ - + Modified: tracker/instances/jobs/html/user.forgotten.html ============================================================================== --- tracker/instances/jobs/html/user.forgotten.html (original) +++ tracker/instances/jobs/html/user.forgotten.html Sat Feb 16 15:29:24 2008 @@ -10,11 +10,6 @@

    You have two options if you have forgotten your password. If you know the email address you registered with, enter it below.

    -

    If your user was automatically created during -import from the old sourceforge tracker, your e-mail address is -<Sourceforge username>@users.sourceforge.net. The mail address -associated with your account can be changed after login.

    -
    @@ -35,10 +30,6 @@

    Or, if you know your username, then enter it below.

    -

    If you have previously created or modified issue -reports in the sourceforge issue tracker, you have an account here with -the same username as your sourceforge username.

    -
    - + - + @@ -78,7 +78,7 @@ tal:content="structure context/agency/field">OK @@ -88,7 +88,7 @@ tal:content="structure python:context.location.field(size=60)">OK From python-checkins at python.org Sat Feb 16 19:35:32 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 19:35:32 +0100 (CET) Subject: [Python-checkins] r60865 - tracker/instances/jobs/schema.py Message-ID: <20080216183532.E3BDE1E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 19:35:32 2008 New Revision: 60865 Modified: tracker/instances/jobs/schema.py Log: Allow to edit job locations. Modified: tracker/instances/jobs/schema.py ============================================================================== --- tracker/instances/jobs/schema.py (original) +++ tracker/instances/jobs/schema.py Sat Feb 16 19:35:32 2008 @@ -164,6 +164,7 @@ p = db.security.addPermission(name='Create', klass='offer', properties=('title', 'organization', 'organization_url', 'agency', + 'location', 'description', 'python_used_for', 'messages', 'files', 'nosy'), description='User can report and discuss offers') @@ -180,6 +181,7 @@ p = db.security.addPermission(name='Edit', klass='offer', properties=('title','organization', 'organization_url', 'agency', + 'location', 'description', 'python_used_for', 'messages', 'files'), description='User can edit unposted offers', From python-checkins at python.org Sat Feb 16 20:07:56 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 20:07:56 +0100 (CET) Subject: [Python-checkins] r60866 - tracker/instances/jobs/detectors/statusauditor.py Message-ID: <20080216190756.DFC321E4017@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 20:07:56 2008 New Revision: 60866 Modified: tracker/instances/jobs/detectors/statusauditor.py Log: Do not complain if no attempt to change the status is made. Modified: tracker/instances/jobs/detectors/statusauditor.py ============================================================================== --- tracker/instances/jobs/detectors/statusauditor.py (original) +++ tracker/instances/jobs/detectors/statusauditor.py Sat Feb 16 20:07:56 2008 @@ -14,10 +14,12 @@ def audit_status(db, cl, nodeid, newvalues): "Prevent regular users from posting their offers themselves." - user = db.getuid() + if not newvalues.has_key('status'): + return if (newvalues.has_key('status') and db.status.get(newvalues['status'], 'name') != 'posted'): return + user = db.getuid() if db.user.get(user, 'roles').lower().find('editor') != -1: # Ok if an editor posted it; set the posting date newvalues['posted'] = roundup.date.Date() From python-checkins at python.org Sat Feb 16 20:14:08 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 20:14:08 +0100 (CET) Subject: [Python-checkins] r60867 - tracker/instances/jobs/html/page.html Message-ID: <20080216191408.50DBE1E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 20:14:08 2008 New Revision: 60867 Modified: tracker/instances/jobs/html/page.html Log: Make "posted" a kind of not_resolved. Modified: tracker/instances/jobs/html/page.html ============================================================================== --- tracker/instances/jobs/html/page.html (original) +++ tracker/instances/jobs/html/page.html Sat Feb 16 20:14:08 2008 @@ -22,7 +22,7 @@ kw_create python:request.user.hasPermission('Create', 'keyword'); columns string:id,activity,title,creator,status; columns_showall string:id,activity,title,creator,assignee,status; -status_notresolved string:-1,1,3; +status_notresolved string:-1,1,2,3; ">

    From python-checkins at python.org Sat Feb 16 20:17:40 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 20:17:40 +0100 (CET) Subject: [Python-checkins] r60868 - tracker/instances/jobs/html/home.html Message-ID: <20080216191740.6ECD11E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 20:17:40 2008 New Revision: 60868 Modified: tracker/instances/jobs/html/home.html Log: Key home page by role, not permission. Modified: tracker/instances/jobs/html/home.html ============================================================================== --- tracker/instances/jobs/html/home.html (original) +++ tracker/instances/jobs/html/home.html Sat Feb 16 20:17:40 2008 @@ -4,10 +4,10 @@ replace it with a greeting message, or a different list of offers or whatever. It's a good idea to have the offers on the front page though --> - - From python-checkins at python.org Sat Feb 16 20:20:14 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 20:20:14 +0100 (CET) Subject: [Python-checkins] r60869 - tracker/instances/jobs/detectors/statusauditor.py Message-ID: <20080216192014.25B561E402B@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 20:20:13 2008 New Revision: 60869 Modified: tracker/instances/jobs/detectors/statusauditor.py Log: Add URL to posted.txt. Modified: tracker/instances/jobs/detectors/statusauditor.py ============================================================================== --- tracker/instances/jobs/detectors/statusauditor.py (original) +++ tracker/instances/jobs/detectors/statusauditor.py Sat Feb 16 20:20:13 2008 @@ -40,7 +40,7 @@ head += "`" head += offer.organization if offer.organization_url: - head += "`__" + head += " <" + offer.organization_url + ">`__" if offer.agency: head += " [AGENCY]" head += " (%s)" % offer.location From python-checkins at python.org Sat Feb 16 20:23:14 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 20:23:14 +0100 (CET) Subject: [Python-checkins] r60870 - tracker/instances/jobs/detectors/statusauditor.py Message-ID: <20080216192314.645BE1E401C@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 20:23:14 2008 New Revision: 60870 Modified: tracker/instances/jobs/detectors/statusauditor.py Log: Remove debug print Modified: tracker/instances/jobs/detectors/statusauditor.py ============================================================================== --- tracker/instances/jobs/detectors/statusauditor.py (original) +++ tracker/instances/jobs/detectors/statusauditor.py Sat Feb 16 20:23:14 2008 @@ -66,7 +66,6 @@ newstatus = cl.get(nodeid, 'status') oldstatus = oldvalues['status'] posted = db.status.lookup('posted') - print oldstatus, newstatus, posted if newstatus != oldstatus and (newstatus==posted or oldstatus==posted): inner_generate(db,cl) From python-checkins at python.org Sat Feb 16 21:55:24 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Sat, 16 Feb 2008 21:55:24 +0100 (CET) Subject: [Python-checkins] r60871 - in python/trunk: Lib/test/test_scope.py Misc/NEWS Objects/cellobject.c Message-ID: <20080216205524.D50CC1E402A@bag.python.org> Author: amaury.forgeotdarc Date: Sat Feb 16 21:55:24 2008 New Revision: 60871 Modified: python/trunk/Lib/test/test_scope.py python/trunk/Misc/NEWS python/trunk/Objects/cellobject.c Log: Prevent a crash with nested scopes, again caused by calling Py_DECREF when the pointer is still present in the containing structure. Modified: python/trunk/Lib/test/test_scope.py ============================================================================== --- python/trunk/Lib/test/test_scope.py (original) +++ python/trunk/Lib/test/test_scope.py Sat Feb 16 21:55:24 2008 @@ -597,6 +597,24 @@ f(4)() + def testFreeingCell(self): + # Test what happens when a finalizer accesses + # the cell where the object was stored. + class Special: + def __del__(self): + nestedcell_get() + + def f(): + global nestedcell_get + def nestedcell_get(): + return c + + c = (Special(),) + c = 2 + + f() # used to crash the interpreter... + + def test_main(): run_unittest(ScopeTests) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 16 21:55:24 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Fixed several potential crashes, all caused by specially crafted __del__ + methods exploiting objects in temporarily inconsistent state. + - Issue #2115: Important speedup in setting __slot__ attributes. Also prevent a possible crash: an Abstract Base Class would try to access a slot on a registered virtual subclass. Modified: python/trunk/Objects/cellobject.c ============================================================================== --- python/trunk/Objects/cellobject.c (original) +++ python/trunk/Objects/cellobject.c Sat Feb 16 21:55:24 2008 @@ -31,13 +31,15 @@ int PyCell_Set(PyObject *op, PyObject *obj) { + PyObject* oldobj; if (!PyCell_Check(op)) { PyErr_BadInternalCall(); return -1; } - Py_XDECREF(((PyCellObject*)op)->ob_ref); + oldobj = PyCell_GET(op); Py_XINCREF(obj); PyCell_SET(op, obj); + Py_XDECREF(oldobj); return 0; } From nnorwitz at gmail.com Sat Feb 16 23:31:32 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Feb 2008 17:31:32 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080216223132.GA28317@python.psfb.org> More important issues: ---------------------- test_ftplib leaked [-125, 0, 0] references, sum=-125 Less important issues: ---------------------- test_popen2 leaked [0, 26, -26] references, sum=0 test_threadsignals leaked [0, 0, -8] references, sum=-8 test_urllib2_localnet leaked [123, -117, 3] references, sum=9 From python-checkins at python.org Sun Feb 17 02:59:19 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 17 Feb 2008 02:59:19 +0100 (CET) Subject: [Python-checkins] r60872 - in python/trunk: Lib/test/output/test_logging Lib/test/test_logging.py Misc/ACKS Misc/NEWS Message-ID: <20080217015919.5A6681E4017@bag.python.org> Author: brett.cannon Date: Sun Feb 17 02:59:18 2008 New Revision: 60872 Removed: python/trunk/Lib/test/output/test_logging Modified: python/trunk/Lib/test/test_logging.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS Log: Move test_logging over to doctest. Thanks to Christopher White from GHOP. Deleted: /python/trunk/Lib/test/output/test_logging ============================================================================== --- /python/trunk/Lib/test/output/test_logging Sun Feb 17 02:59:18 2008 +++ (empty file) @@ -1,525 +0,0 @@ -test_logging --- log_test0 begin --------------------------------------------------- -CRITICAL:ERR:Message 0 -ERROR:ERR:Message 1 -CRITICAL:INF:Message 2 -ERROR:INF:Message 3 -WARNING:INF:Message 4 -INFO:INF:Message 5 -CRITICAL:INF.UNDEF:Message 6 -ERROR:INF.UNDEF:Message 7 -WARNING:INF.UNDEF:Message 8 -INFO:INF.UNDEF:Message 9 -CRITICAL:INF.ERR:Message 10 -ERROR:INF.ERR:Message 11 -CRITICAL:INF.ERR.UNDEF:Message 12 -ERROR:INF.ERR.UNDEF:Message 13 -CRITICAL:DEB:Message 14 -ERROR:DEB:Message 15 -WARNING:DEB:Message 16 -INFO:DEB:Message 17 -DEBUG:DEB:Message 18 -CRITICAL:UNDEF:Message 19 -ERROR:UNDEF:Message 20 -WARNING:UNDEF:Message 21 -INFO:UNDEF:Message 22 -CRITICAL:INF.BADPARENT.UNDEF:Message 23 -CRITICAL:INF.BADPARENT:Message 24 -INFO:INF:Finish up, it's closing time. Messages should bear numbers 0 through 24. --- log_test0 end --------------------------------------------------- --- log_test1 begin --------------------------------------------------- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering at handler level to SOCIABLE -- --- setting logging level to 'Boring' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering using GARRULOUS filter -- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering using specific filter for SOCIABLE, TACITURN -- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- log_test1 end --------------------------------------------------- --- log_test2 begin --------------------------------------------------- --- logging at DEBUG, nothing should be seen yet -- --- logging at INFO, nothing should be seen yet -- --- logging at WARNING, 3 messages should be seen -- -DEBUG:root:Debug message -INFO:root:Info message -WARNING:root:Warn message --- logging 0 at INFO, messages should be seen every 10 events -- --- logging 1 at INFO, messages should be seen every 10 events -- --- logging 2 at INFO, messages should be seen every 10 events -- --- logging 3 at INFO, messages should be seen every 10 events -- --- logging 4 at INFO, messages should be seen every 10 events -- --- logging 5 at INFO, messages should be seen every 10 events -- --- logging 6 at INFO, messages should be seen every 10 events -- --- logging 7 at INFO, messages should be seen every 10 events -- --- logging 8 at INFO, messages should be seen every 10 events -- --- logging 9 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 0 -INFO:root:Info index = 1 -INFO:root:Info index = 2 -INFO:root:Info index = 3 -INFO:root:Info index = 4 -INFO:root:Info index = 5 -INFO:root:Info index = 6 -INFO:root:Info index = 7 -INFO:root:Info index = 8 -INFO:root:Info index = 9 --- logging 10 at INFO, messages should be seen every 10 events -- --- logging 11 at INFO, messages should be seen every 10 events -- --- logging 12 at INFO, messages should be seen every 10 events -- --- logging 13 at INFO, messages should be seen every 10 events -- --- logging 14 at INFO, messages should be seen every 10 events -- --- logging 15 at INFO, messages should be seen every 10 events -- --- logging 16 at INFO, messages should be seen every 10 events -- --- logging 17 at INFO, messages should be seen every 10 events -- --- logging 18 at INFO, messages should be seen every 10 events -- --- logging 19 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 10 -INFO:root:Info index = 11 -INFO:root:Info index = 12 -INFO:root:Info index = 13 -INFO:root:Info index = 14 -INFO:root:Info index = 15 -INFO:root:Info index = 16 -INFO:root:Info index = 17 -INFO:root:Info index = 18 -INFO:root:Info index = 19 --- logging 20 at INFO, messages should be seen every 10 events -- --- logging 21 at INFO, messages should be seen every 10 events -- --- logging 22 at INFO, messages should be seen every 10 events -- --- logging 23 at INFO, messages should be seen every 10 events -- --- logging 24 at INFO, messages should be seen every 10 events -- --- logging 25 at INFO, messages should be seen every 10 events -- --- logging 26 at INFO, messages should be seen every 10 events -- --- logging 27 at INFO, messages should be seen every 10 events -- --- logging 28 at INFO, messages should be seen every 10 events -- --- logging 29 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 20 -INFO:root:Info index = 21 -INFO:root:Info index = 22 -INFO:root:Info index = 23 -INFO:root:Info index = 24 -INFO:root:Info index = 25 -INFO:root:Info index = 26 -INFO:root:Info index = 27 -INFO:root:Info index = 28 -INFO:root:Info index = 29 --- logging 30 at INFO, messages should be seen every 10 events -- --- logging 31 at INFO, messages should be seen every 10 events -- --- logging 32 at INFO, messages should be seen every 10 events -- --- logging 33 at INFO, messages should be seen every 10 events -- --- logging 34 at INFO, messages should be seen every 10 events -- --- logging 35 at INFO, messages should be seen every 10 events -- --- logging 36 at INFO, messages should be seen every 10 events -- --- logging 37 at INFO, messages should be seen every 10 events -- --- logging 38 at INFO, messages should be seen every 10 events -- --- logging 39 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 30 -INFO:root:Info index = 31 -INFO:root:Info index = 32 -INFO:root:Info index = 33 -INFO:root:Info index = 34 -INFO:root:Info index = 35 -INFO:root:Info index = 36 -INFO:root:Info index = 37 -INFO:root:Info index = 38 -INFO:root:Info index = 39 --- logging 40 at INFO, messages should be seen every 10 events -- --- logging 41 at INFO, messages should be seen every 10 events -- --- logging 42 at INFO, messages should be seen every 10 events -- --- logging 43 at INFO, messages should be seen every 10 events -- --- logging 44 at INFO, messages should be seen every 10 events -- --- logging 45 at INFO, messages should be seen every 10 events -- --- logging 46 at INFO, messages should be seen every 10 events -- --- logging 47 at INFO, messages should be seen every 10 events -- --- logging 48 at INFO, messages should be seen every 10 events -- --- logging 49 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 40 -INFO:root:Info index = 41 -INFO:root:Info index = 42 -INFO:root:Info index = 43 -INFO:root:Info index = 44 -INFO:root:Info index = 45 -INFO:root:Info index = 46 -INFO:root:Info index = 47 -INFO:root:Info index = 48 -INFO:root:Info index = 49 --- logging 50 at INFO, messages should be seen every 10 events -- --- logging 51 at INFO, messages should be seen every 10 events -- --- logging 52 at INFO, messages should be seen every 10 events -- --- logging 53 at INFO, messages should be seen every 10 events -- --- logging 54 at INFO, messages should be seen every 10 events -- --- logging 55 at INFO, messages should be seen every 10 events -- --- logging 56 at INFO, messages should be seen every 10 events -- --- logging 57 at INFO, messages should be seen every 10 events -- --- logging 58 at INFO, messages should be seen every 10 events -- --- logging 59 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 50 -INFO:root:Info index = 51 -INFO:root:Info index = 52 -INFO:root:Info index = 53 -INFO:root:Info index = 54 -INFO:root:Info index = 55 -INFO:root:Info index = 56 -INFO:root:Info index = 57 -INFO:root:Info index = 58 -INFO:root:Info index = 59 --- logging 60 at INFO, messages should be seen every 10 events -- --- logging 61 at INFO, messages should be seen every 10 events -- --- logging 62 at INFO, messages should be seen every 10 events -- --- logging 63 at INFO, messages should be seen every 10 events -- --- logging 64 at INFO, messages should be seen every 10 events -- --- logging 65 at INFO, messages should be seen every 10 events -- --- logging 66 at INFO, messages should be seen every 10 events -- --- logging 67 at INFO, messages should be seen every 10 events -- --- logging 68 at INFO, messages should be seen every 10 events -- --- logging 69 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 60 -INFO:root:Info index = 61 -INFO:root:Info index = 62 -INFO:root:Info index = 63 -INFO:root:Info index = 64 -INFO:root:Info index = 65 -INFO:root:Info index = 66 -INFO:root:Info index = 67 -INFO:root:Info index = 68 -INFO:root:Info index = 69 --- logging 70 at INFO, messages should be seen every 10 events -- --- logging 71 at INFO, messages should be seen every 10 events -- --- logging 72 at INFO, messages should be seen every 10 events -- --- logging 73 at INFO, messages should be seen every 10 events -- --- logging 74 at INFO, messages should be seen every 10 events -- --- logging 75 at INFO, messages should be seen every 10 events -- --- logging 76 at INFO, messages should be seen every 10 events -- --- logging 77 at INFO, messages should be seen every 10 events -- --- logging 78 at INFO, messages should be seen every 10 events -- --- logging 79 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 70 -INFO:root:Info index = 71 -INFO:root:Info index = 72 -INFO:root:Info index = 73 -INFO:root:Info index = 74 -INFO:root:Info index = 75 -INFO:root:Info index = 76 -INFO:root:Info index = 77 -INFO:root:Info index = 78 -INFO:root:Info index = 79 --- logging 80 at INFO, messages should be seen every 10 events -- --- logging 81 at INFO, messages should be seen every 10 events -- --- logging 82 at INFO, messages should be seen every 10 events -- --- logging 83 at INFO, messages should be seen every 10 events -- --- logging 84 at INFO, messages should be seen every 10 events -- --- logging 85 at INFO, messages should be seen every 10 events -- --- logging 86 at INFO, messages should be seen every 10 events -- --- logging 87 at INFO, messages should be seen every 10 events -- --- logging 88 at INFO, messages should be seen every 10 events -- --- logging 89 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 80 -INFO:root:Info index = 81 -INFO:root:Info index = 82 -INFO:root:Info index = 83 -INFO:root:Info index = 84 -INFO:root:Info index = 85 -INFO:root:Info index = 86 -INFO:root:Info index = 87 -INFO:root:Info index = 88 -INFO:root:Info index = 89 --- logging 90 at INFO, messages should be seen every 10 events -- --- logging 91 at INFO, messages should be seen every 10 events -- --- logging 92 at INFO, messages should be seen every 10 events -- --- logging 93 at INFO, messages should be seen every 10 events -- --- logging 94 at INFO, messages should be seen every 10 events -- --- logging 95 at INFO, messages should be seen every 10 events -- --- logging 96 at INFO, messages should be seen every 10 events -- --- logging 97 at INFO, messages should be seen every 10 events -- --- logging 98 at INFO, messages should be seen every 10 events -- --- logging 99 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 90 -INFO:root:Info index = 91 -INFO:root:Info index = 92 -INFO:root:Info index = 93 -INFO:root:Info index = 94 -INFO:root:Info index = 95 -INFO:root:Info index = 96 -INFO:root:Info index = 97 -INFO:root:Info index = 98 -INFO:root:Info index = 99 --- logging 100 at INFO, messages should be seen every 10 events -- --- logging 101 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 100 -INFO:root:Info index = 101 --- log_test2 end --------------------------------------------------- --- log_test3 begin --------------------------------------------------- -Unfiltered... -INFO:a:Info 1 -INFO:a.b:Info 2 -INFO:a.c:Info 3 -INFO:a.b.c:Info 4 -INFO:a.b.c.d:Info 5 -INFO:a.bb.c:Info 6 -INFO:b:Info 7 -INFO:b.a:Info 8 -INFO:c.a.b:Info 9 -INFO:a.bb:Info 10 -Filtered with 'a.b'... -INFO:a.b:Info 2 -INFO:a.b.c:Info 4 -INFO:a.b.c.d:Info 5 --- log_test3 end --------------------------------------------------- --- log_test4 begin --------------------------------------------------- -config0: ok. -config1: ok. -config2: -config3: --- log_test4 end --------------------------------------------------- --- log_test5 begin --------------------------------------------------- -ERROR:root:just testing -... Don't panic! --- log_test5 end --------------------------------------------------- --- logrecv output begin --------------------------------------------------- -ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR) -ERR -> ERROR: Message 1 (via logrecv.tcp.ERR) -INF -> CRITICAL: Message 2 (via logrecv.tcp.INF) -INF -> ERROR: Message 3 (via logrecv.tcp.INF) -INF -> WARNING: Message 4 (via logrecv.tcp.INF) -INF -> INFO: Message 5 (via logrecv.tcp.INF) -INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF) -INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR) -INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR) -INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF) -INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF) -DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB) -DEB -> ERROR: Message 15 (via logrecv.tcp.DEB) -DEB -> WARNING: Message 16 (via logrecv.tcp.DEB) -DEB -> INFO: Message 17 (via logrecv.tcp.DEB) -DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB) -UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF) -UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF) -UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF) -UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF) -INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF) -INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT) -INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF) --- logrecv output end --------------------------------------------------- Modified: python/trunk/Lib/test/test_logging.py ============================================================================== --- python/trunk/Lib/test/test_logging.py (original) +++ python/trunk/Lib/test/test_logging.py Sun Feb 17 02:59:18 2008 @@ -1,38 +1,1882 @@ #!/usr/bin/env python -# -# Copyright 2001-2004 by Vinay Sajip. All Rights Reserved. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, -# provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in -# supporting documentation, and that the name of Vinay Sajip -# not be used in advertising or publicity pertaining to distribution -# of the software without specific, written prior permission. -# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL -# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# -# This file is part of the Python logging distribution. See -# http://www.red-dove.com/python_logging.html -# -"""Test harness for the logging module. Run all tests. +""" +Test 0 +====== + +Some preliminaries: +>>> import sys +>>> import logging +>>> def nextmessage(): +... global msgcount +... rv = "Message %d" % msgcount +... msgcount = msgcount + 1 +... return rv + +Set a few variables, then go through the logger autoconfig and set the default threshold. +>>> msgcount = 0 +>>> FINISH_UP = "Finish up, it's closing time. Messages should bear numbers 0 through 24." +>>> logging.basicConfig(stream=sys.stdout) +>>> rootLogger = logging.getLogger("") +>>> rootLogger.setLevel(logging.DEBUG) + +Now, create a bunch of loggers, and set their thresholds. +>>> ERR = logging.getLogger("ERR0") +>>> ERR.setLevel(logging.ERROR) +>>> INF = logging.getLogger("INFO0") +>>> INF.setLevel(logging.INFO) +>>> INF_ERR = logging.getLogger("INFO0.ERR") +>>> INF_ERR.setLevel(logging.ERROR) +>>> DEB = logging.getLogger("DEB0") +>>> DEB.setLevel(logging.DEBUG) +>>> INF_UNDEF = logging.getLogger("INFO0.UNDEF") +>>> INF_ERR_UNDEF = logging.getLogger("INFO0.ERR.UNDEF") +>>> UNDEF = logging.getLogger("UNDEF0") +>>> GRANDCHILD = logging.getLogger("INFO0.BADPARENT.UNDEF") +>>> CHILD = logging.getLogger("INFO0.BADPARENT") + + +And finally, run all the tests. + +>>> ERR.log(logging.FATAL, nextmessage()) +CRITICAL:ERR0:Message 0 + +>>> ERR.error(nextmessage()) +ERROR:ERR0:Message 1 + +>>> INF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0:Message 2 + +>>> INF.error(nextmessage()) +ERROR:INFO0:Message 3 + +>>> INF.warn(nextmessage()) +WARNING:INFO0:Message 4 + +>>> INF.info(nextmessage()) +INFO:INFO0:Message 5 + +>>> INF_UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.UNDEF:Message 6 + +>>> INF_UNDEF.error(nextmessage()) +ERROR:INFO0.UNDEF:Message 7 + +>>> INF_UNDEF.warn (nextmessage()) +WARNING:INFO0.UNDEF:Message 8 + +>>> INF_UNDEF.info (nextmessage()) +INFO:INFO0.UNDEF:Message 9 + +>>> INF_ERR.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.ERR:Message 10 + +>>> INF_ERR.error(nextmessage()) +ERROR:INFO0.ERR:Message 11 + +>>> INF_ERR_UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.ERR.UNDEF:Message 12 + +>>> INF_ERR_UNDEF.error(nextmessage()) +ERROR:INFO0.ERR.UNDEF:Message 13 + +>>> DEB.log(logging.FATAL, nextmessage()) +CRITICAL:DEB0:Message 14 + +>>> DEB.error(nextmessage()) +ERROR:DEB0:Message 15 + +>>> DEB.warn (nextmessage()) +WARNING:DEB0:Message 16 + +>>> DEB.info (nextmessage()) +INFO:DEB0:Message 17 + +>>> DEB.debug(nextmessage()) +DEBUG:DEB0:Message 18 + +>>> UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:UNDEF0:Message 19 + +>>> UNDEF.error(nextmessage()) +ERROR:UNDEF0:Message 20 + +>>> UNDEF.warn (nextmessage()) +WARNING:UNDEF0:Message 21 + +>>> UNDEF.info (nextmessage()) +INFO:UNDEF0:Message 22 + +>>> GRANDCHILD.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.BADPARENT.UNDEF:Message 23 + +>>> CHILD.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.BADPARENT:Message 24 + +These should not log: + +>>> ERR.warn(nextmessage()) + +>>> ERR.info(nextmessage()) + +>>> ERR.debug(nextmessage()) + +>>> INF.debug(nextmessage()) + +>>> INF_UNDEF.debug(nextmessage()) + +>>> INF_ERR.warn(nextmessage()) + +>>> INF_ERR.info(nextmessage()) + +>>> INF_ERR.debug(nextmessage()) + +>>> INF_ERR_UNDEF.warn(nextmessage()) + +>>> INF_ERR_UNDEF.info(nextmessage()) + +>>> INF_ERR_UNDEF.debug(nextmessage()) + +>>> INF.info(FINISH_UP) +INFO:INFO0:Finish up, it's closing time. Messages should bear numbers 0 through 24. + +Test 1 +====== + +>>> import sys, logging +>>> logging.basicConfig(stream=sys.stdout) + +First, we define our levels. There can be as many as you want - the only +limitations are that they should be integers, the lowest should be > 0 and +larger values mean less information being logged. If you need specific +level values which do not fit into these limitations, you can use a +mapping dictionary to convert between your application levels and the +logging system. + +>>> SILENT = 10 +>>> TACITURN = 9 +>>> TERSE = 8 +>>> EFFUSIVE = 7 +>>> SOCIABLE = 6 +>>> VERBOSE = 5 +>>> TALKATIVE = 4 +>>> GARRULOUS = 3 +>>> CHATTERBOX = 2 +>>> BORING = 1 +>>> LEVEL_RANGE = range(BORING, SILENT + 1) + + +Next, we define names for our levels. You don't need to do this - in which + case the system will use "Level n" to denote the text for the level. +' + + +>>> my_logging_levels = { +... SILENT : 'SILENT', +... TACITURN : 'TACITURN', +... TERSE : 'TERSE', +... EFFUSIVE : 'EFFUSIVE', +... SOCIABLE : 'SOCIABLE', +... VERBOSE : 'VERBOSE', +... TALKATIVE : 'TALKATIVE', +... GARRULOUS : 'GARRULOUS', +... CHATTERBOX : 'CHATTERBOX', +... BORING : 'BORING', +... } + + +Now, to demonstrate filtering: suppose for some perverse reason we only +want to print out all except GARRULOUS messages. We create a filter for +this purpose... + +>>> class SpecificLevelFilter(logging.Filter): +... def __init__(self, lvl): +... self.level = lvl +... +... def filter(self, record): +... return self.level != record.levelno + +>>> class GarrulousFilter(SpecificLevelFilter): +... def __init__(self): +... SpecificLevelFilter.__init__(self, GARRULOUS) + + +Now, demonstrate filtering at the logger. This time, use a filter +which excludes SOCIABLE and TACITURN messages. Note that GARRULOUS events +are still excluded. + + +>>> class VerySpecificFilter(logging.Filter): +... def filter(self, record): +... return record.levelno not in [SOCIABLE, TACITURN] + +>>> SHOULD1 = "This should only be seen at the '%s' logging level (or lower)" + +Configure the logger, and tell the logging system to associate names with our levels. +>>> logging.basicConfig(stream=sys.stdout) +>>> rootLogger = logging.getLogger("") +>>> rootLogger.setLevel(logging.DEBUG) +>>> for lvl in my_logging_levels.keys(): +... logging.addLevelName(lvl, my_logging_levels[lvl]) +>>> log = logging.getLogger("") +>>> hdlr = log.handlers[0] +>>> from test_logging import message + +Set the logging level to each different value and call the utility +function to log events. In the output, you should see that each time +round the loop, the number of logging events which are actually output +decreases. + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> hdlr.setLevel(SOCIABLE) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> + +>>> hdlr.setLevel(0) + +>>> garr = GarrulousFilter() + +>>> hdlr.addFilter(garr) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> spec = VerySpecificFilter() + +>>> log.addFilter(spec) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) -Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved. -""" +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.removeFilter(spec) + +>>> hdlr.removeFilter(garr) + +>>> logging.addLevelName(logging.DEBUG, "DEBUG") + + +Test 2 +====== +Test memory handlers. These are basically buffers for log messages: they take so many messages, and then print them all. + +>>> import logging.handlers + +>>> sys.stderr = sys.stdout +>>> logger = logging.getLogger("") +>>> sh = logger.handlers[0] +>>> sh.close() +>>> logger.removeHandler(sh) +>>> mh = logging.handlers.MemoryHandler(10,logging.WARNING, sh) +>>> logger.setLevel(logging.DEBUG) +>>> logger.addHandler(mh) + +>>> logger.debug("Debug message") + +-- logging at INFO, nothing should be seen yet -- + +>>> logger.info("Info message") + +-- logging at WARNING, 3 messages should be seen -- + +>>> logger.warn("Warn message") +DEBUG:root:Debug message +INFO:root:Info message +WARNING:root:Warn message + +>>> logger.info("Info index = 0") + +>>> logger.info("Info index = 1") + +>>> logger.info("Info index = 2") + +>>> logger.info("Info index = 3") + +>>> logger.info("Info index = 4") + +>>> logger.info("Info index = 5") + +>>> logger.info("Info index = 6") + +>>> logger.info("Info index = 7") + +>>> logger.info("Info index = 8") + +>>> logger.info("Info index = 9") +INFO:root:Info index = 0 +INFO:root:Info index = 1 +INFO:root:Info index = 2 +INFO:root:Info index = 3 +INFO:root:Info index = 4 +INFO:root:Info index = 5 +INFO:root:Info index = 6 +INFO:root:Info index = 7 +INFO:root:Info index = 8 +INFO:root:Info index = 9 + +>>> logger.info("Info index = 10") + +>>> logger.info("Info index = 11") + +>>> logger.info("Info index = 12") + +>>> logger.info("Info index = 13") + +>>> logger.info("Info index = 14") + +>>> logger.info("Info index = 15") + +>>> logger.info("Info index = 16") + +>>> logger.info("Info index = 17") + +>>> logger.info("Info index = 18") + +>>> logger.info("Info index = 19") +INFO:root:Info index = 10 +INFO:root:Info index = 11 +INFO:root:Info index = 12 +INFO:root:Info index = 13 +INFO:root:Info index = 14 +INFO:root:Info index = 15 +INFO:root:Info index = 16 +INFO:root:Info index = 17 +INFO:root:Info index = 18 +INFO:root:Info index = 19 + +>>> logger.info("Info index = 20") + +>>> logger.info("Info index = 21") + +>>> logger.info("Info index = 22") + +>>> logger.info("Info index = 23") + +>>> logger.info("Info index = 24") + +>>> logger.info("Info index = 25") + +>>> logger.info("Info index = 26") + +>>> logger.info("Info index = 27") + +>>> logger.info("Info index = 28") + +>>> logger.info("Info index = 29") +INFO:root:Info index = 20 +INFO:root:Info index = 21 +INFO:root:Info index = 22 +INFO:root:Info index = 23 +INFO:root:Info index = 24 +INFO:root:Info index = 25 +INFO:root:Info index = 26 +INFO:root:Info index = 27 +INFO:root:Info index = 28 +INFO:root:Info index = 29 + +>>> logger.info("Info index = 30") + +>>> logger.info("Info index = 31") + +>>> logger.info("Info index = 32") + +>>> logger.info("Info index = 33") + +>>> logger.info("Info index = 34") + +>>> logger.info("Info index = 35") + +>>> logger.info("Info index = 36") + +>>> logger.info("Info index = 37") + +>>> logger.info("Info index = 38") + +>>> logger.info("Info index = 39") +INFO:root:Info index = 30 +INFO:root:Info index = 31 +INFO:root:Info index = 32 +INFO:root:Info index = 33 +INFO:root:Info index = 34 +INFO:root:Info index = 35 +INFO:root:Info index = 36 +INFO:root:Info index = 37 +INFO:root:Info index = 38 +INFO:root:Info index = 39 + +>>> logger.info("Info index = 40") + +>>> logger.info("Info index = 41") + +>>> logger.info("Info index = 42") + +>>> logger.info("Info index = 43") + +>>> logger.info("Info index = 44") + +>>> logger.info("Info index = 45") + +>>> logger.info("Info index = 46") + +>>> logger.info("Info index = 47") + +>>> logger.info("Info index = 48") + +>>> logger.info("Info index = 49") +INFO:root:Info index = 40 +INFO:root:Info index = 41 +INFO:root:Info index = 42 +INFO:root:Info index = 43 +INFO:root:Info index = 44 +INFO:root:Info index = 45 +INFO:root:Info index = 46 +INFO:root:Info index = 47 +INFO:root:Info index = 48 +INFO:root:Info index = 49 + +>>> logger.info("Info index = 50") + +>>> logger.info("Info index = 51") + +>>> logger.info("Info index = 52") + +>>> logger.info("Info index = 53") + +>>> logger.info("Info index = 54") + +>>> logger.info("Info index = 55") + +>>> logger.info("Info index = 56") + +>>> logger.info("Info index = 57") + +>>> logger.info("Info index = 58") + +>>> logger.info("Info index = 59") +INFO:root:Info index = 50 +INFO:root:Info index = 51 +INFO:root:Info index = 52 +INFO:root:Info index = 53 +INFO:root:Info index = 54 +INFO:root:Info index = 55 +INFO:root:Info index = 56 +INFO:root:Info index = 57 +INFO:root:Info index = 58 +INFO:root:Info index = 59 + +>>> logger.info("Info index = 60") + +>>> logger.info("Info index = 61") + +>>> logger.info("Info index = 62") + +>>> logger.info("Info index = 63") + +>>> logger.info("Info index = 64") + +>>> logger.info("Info index = 65") + +>>> logger.info("Info index = 66") + +>>> logger.info("Info index = 67") + +>>> logger.info("Info index = 68") + +>>> logger.info("Info index = 69") +INFO:root:Info index = 60 +INFO:root:Info index = 61 +INFO:root:Info index = 62 +INFO:root:Info index = 63 +INFO:root:Info index = 64 +INFO:root:Info index = 65 +INFO:root:Info index = 66 +INFO:root:Info index = 67 +INFO:root:Info index = 68 +INFO:root:Info index = 69 + +>>> logger.info("Info index = 70") + +>>> logger.info("Info index = 71") + +>>> logger.info("Info index = 72") + +>>> logger.info("Info index = 73") + +>>> logger.info("Info index = 74") + +>>> logger.info("Info index = 75") + +>>> logger.info("Info index = 76") + +>>> logger.info("Info index = 77") + +>>> logger.info("Info index = 78") +>>> logger.info("Info index = 79") +INFO:root:Info index = 70 +INFO:root:Info index = 71 +INFO:root:Info index = 72 +INFO:root:Info index = 73 +INFO:root:Info index = 74 +INFO:root:Info index = 75 +INFO:root:Info index = 76 +INFO:root:Info index = 77 +INFO:root:Info index = 78 +INFO:root:Info index = 79 + +>>> logger.info("Info index = 80") + +>>> logger.info("Info index = 81") + +>>> logger.info("Info index = 82") + +>>> logger.info("Info index = 83") + +>>> logger.info("Info index = 84") + +>>> logger.info("Info index = 85") + +>>> logger.info("Info index = 86") + +>>> logger.info("Info index = 87") + +>>> logger.info("Info index = 88") + +>>> logger.info("Info index = 89") +INFO:root:Info index = 80 +INFO:root:Info index = 81 +INFO:root:Info index = 82 +INFO:root:Info index = 83 +INFO:root:Info index = 84 +INFO:root:Info index = 85 +INFO:root:Info index = 86 +INFO:root:Info index = 87 +INFO:root:Info index = 88 +INFO:root:Info index = 89 + +>>> logger.info("Info index = 90") + +>>> logger.info("Info index = 91") + +>>> logger.info("Info index = 92") + +>>> logger.info("Info index = 93") + +>>> logger.info("Info index = 94") + +>>> logger.info("Info index = 95") + +>>> logger.info("Info index = 96") + +>>> logger.info("Info index = 97") + +>>> logger.info("Info index = 98") + +>>> logger.info("Info index = 99") +INFO:root:Info index = 90 +INFO:root:Info index = 91 +INFO:root:Info index = 92 +INFO:root:Info index = 93 +INFO:root:Info index = 94 +INFO:root:Info index = 95 +INFO:root:Info index = 96 +INFO:root:Info index = 97 +INFO:root:Info index = 98 +INFO:root:Info index = 99 + +>>> logger.info("Info index = 100") + +>>> logger.info("Info index = 101") + +>>> mh.close() +INFO:root:Info index = 100 +INFO:root:Info index = 101 + +>>> logger.removeHandler(mh) +>>> logger.addHandler(sh) + + + +Test 3 +====== + +>>> import sys, logging +>>> sys.stderr = sys +>>> logging.basicConfig() +>>> FILTER = "a.b" +>>> root = logging.getLogger() +>>> root.setLevel(logging.DEBUG) +>>> hand = root.handlers[0] + +>>> logging.getLogger("a").info("Info 1") +INFO:a:Info 1 + +>>> logging.getLogger("a.b").info("Info 2") +INFO:a.b:Info 2 + +>>> logging.getLogger("a.c").info("Info 3") +INFO:a.c:Info 3 + +>>> logging.getLogger("a.b.c").info("Info 4") +INFO:a.b.c:Info 4 + +>>> logging.getLogger("a.b.c.d").info("Info 5") +INFO:a.b.c.d:Info 5 + +>>> logging.getLogger("a.bb.c").info("Info 6") +INFO:a.bb.c:Info 6 + +>>> logging.getLogger("b").info("Info 7") +INFO:b:Info 7 + +>>> logging.getLogger("b.a").info("Info 8") +INFO:b.a:Info 8 + +>>> logging.getLogger("c.a.b").info("Info 9") +INFO:c.a.b:Info 9 + +>>> logging.getLogger("a.bb").info("Info 10") +INFO:a.bb:Info 10 + +Filtered with 'a.b'... + +>>> filt = logging.Filter(FILTER) + +>>> hand.addFilter(filt) + +>>> logging.getLogger("a").info("Info 1") + +>>> logging.getLogger("a.b").info("Info 2") +INFO:a.b:Info 2 + +>>> logging.getLogger("a.c").info("Info 3") + +>>> logging.getLogger("a.b.c").info("Info 4") +INFO:a.b.c:Info 4 + +>>> logging.getLogger("a.b.c.d").info("Info 5") +INFO:a.b.c.d:Info 5 + +>>> logging.getLogger("a.bb.c").info("Info 6") + +>>> logging.getLogger("b").info("Info 7") + +>>> logging.getLogger("b.a").info("Info 8") + +>>> logging.getLogger("c.a.b").info("Info 9") + +>>> logging.getLogger("a.bb").info("Info 10") + +>>> hand.removeFilter(filt) + + +Test 4 +====== +>>> import sys, logging, logging.handlers, string +>>> import tempfile, logging.config, os, test.test_support +>>> sys.stderr = sys.stdout + +>>> from test_logging import config0, config1 + +config2 has a subtle configuration error that should be reported +>>> config2 = string.replace(config1, "sys.stdout", "sys.stbout") + +config3 has a less subtle configuration error +>>> config3 = string.replace(config1, "formatter=form1", "formatter=misspelled_name") + +>>> def test4(conf): +... loggerDict = logging.getLogger().manager.loggerDict +... logging._acquireLock() +... try: +... saved_handlers = logging._handlers.copy() +... saved_handler_list = logging._handlerList[:] +... saved_loggers = loggerDict.copy() +... finally: +... logging._releaseLock() +... try: +... fn = test.test_support.TESTFN +... f = open(fn, "w") +... f.write(conf) +... f.close() +... try: +... logging.config.fileConfig(fn) +... #call again to make sure cleanup is correct +... logging.config.fileConfig(fn) +... except: +... t = sys.exc_info()[0] +... message(str(t)) +... else: +... message('ok.') +... os.remove(fn) +... finally: +... logging._acquireLock() +... try: +... logging._handlers.clear() +... logging._handlers.update(saved_handlers) +... logging._handlerList[:] = saved_handler_list +... loggerDict = logging.getLogger().manager.loggerDict +... loggerDict.clear() +... loggerDict.update(saved_loggers) +... finally: +... logging._releaseLock() + +>>> test4(config0) +ok. + +>>> test4(config1) +ok. + +>>> test4(config2) + + +>>> test4(config3) + + +>>> import test_logging +>>> test_logging.test5() +ERROR:root:just testing +... Don't panic! + + +Test Main +========= +>>> import select +>>> import os, sys, string, struct, types, cPickle, cStringIO +>>> import socket, tempfile, threading, time +>>> import logging, logging.handlers, logging.config +>>> import test_logging + +>>> test_logging.test_main_inner() +ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR) +ERR -> ERROR: Message 1 (via logrecv.tcp.ERR) +INF -> CRITICAL: Message 2 (via logrecv.tcp.INF) +INF -> ERROR: Message 3 (via logrecv.tcp.INF) +INF -> WARNING: Message 4 (via logrecv.tcp.INF) +INF -> INFO: Message 5 (via logrecv.tcp.INF) +INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF) +INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR) +INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR) +INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF) +INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF) +DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB) +DEB -> ERROR: Message 15 (via logrecv.tcp.DEB) +DEB -> WARNING: Message 16 (via logrecv.tcp.DEB) +DEB -> INFO: Message 17 (via logrecv.tcp.DEB) +DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB) +UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF) +UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF) +UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF) +UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF) +INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF) +INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT) +INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF) + +""" import select import os, sys, string, struct, types, cPickle, cStringIO import socket, tempfile, threading, time -import logging, logging.handlers, logging.config -from test.test_support import run_with_locale +import logging, logging.handlers, logging.config, test.test_support + BANNER = "-- %-10s %-6s ---------------------------------------------------\n" FINISH_UP = "Finish up, it's closing time. Messages should bear numbers 0 through 24." +#---------------------------------------------------------------------------- +# Test 0 +#---------------------------------------------------------------------------- + +msgcount = 0 + +def nextmessage(): + global msgcount + rv = "Message %d" % msgcount + msgcount = msgcount + 1 + return rv #---------------------------------------------------------------------------- # Log receiver @@ -78,11 +1922,80 @@ if record.msg == FINISH_UP: self.server.abort = 1 record.msg = record.msg + " (via " + logname + ")" - logger = logging.getLogger(logname) + logger = logging.getLogger("logrecv") logger.handle(record) -# The server sets socketDataProcessed when it's done. -socketDataProcessed = threading.Event() +# The server sets socketDataProcessed when it's done. +socketDataProcessed = threading.Event() +#---------------------------------------------------------------------------- +# Test 5 +#---------------------------------------------------------------------------- + +test5_config = """ +[loggers] +keys=root + +[handlers] +keys=hand1 + +[formatters] +keys=form1 + +[logger_root] +level=NOTSET +handlers=hand1 + +[handler_hand1] +class=StreamHandler +level=NOTSET +formatter=form1 +args=(sys.stdout,) + +[formatter_form1] +class=test.test_logging.FriendlyFormatter +format=%(levelname)s:%(name)s:%(message)s +datefmt= +""" + +class FriendlyFormatter (logging.Formatter): + def formatException(self, ei): + return "%s... Don't panic!" % str(ei[0]) + + +def test5(): + loggerDict = logging.getLogger().manager.loggerDict + logging._acquireLock() + try: + saved_handlers = logging._handlers.copy() + saved_handler_list = logging._handlerList[:] + saved_loggers = loggerDict.copy() + finally: + logging._releaseLock() + try: + fn = test.test_support.TESTFN + f = open(fn, "w") + f.write(test5_config) + f.close() + logging.config.fileConfig(fn) + try: + raise KeyError + except KeyError: + logging.exception("just testing") + os.remove(fn) + hdlr = logging.getLogger().handlers[0] + logging.getLogger().handlers.remove(hdlr) + finally: + logging._acquireLock() + try: + logging._handlers.clear() + logging._handlers.update(saved_handlers) + logging._handlerList[:] = saved_handler_list + loggerDict = logging.getLogger().manager.loggerDict + loggerDict.clear() + loggerDict.update(saved_loggers) + finally: + logging._releaseLock() + class LogRecordSocketReceiver(ThreadingTCPServer): """ @@ -105,8 +2018,6 @@ self.timeout) if rd: self.handle_request() - #notify the main thread that we're about to exit - socketDataProcessed.set() # close the listen socket self.server_close() @@ -119,17 +2030,10 @@ def runTCP(tcpserver): tcpserver.serve_until_stopped() -#---------------------------------------------------------------------------- -# Test 0 -#---------------------------------------------------------------------------- - -msgcount = 0 - -def nextmessage(): - global msgcount - rv = "Message %d" % msgcount - msgcount = msgcount + 1 - return rv +def banner(nm, typ): + sep = BANNER % (nm, typ) + sys.stdout.write(sep) + sys.stdout.flush() def test0(): ERR = logging.getLogger("ERR") @@ -199,202 +2103,70 @@ INF.info(FINISH_UP) -#---------------------------------------------------------------------------- -# Test 1 -#---------------------------------------------------------------------------- - -# -# First, we define our levels. There can be as many as you want - the only -# limitations are that they should be integers, the lowest should be > 0 and -# larger values mean less information being logged. If you need specific -# level values which do not fit into these limitations, you can use a -# mapping dictionary to convert between your application levels and the -# logging system. -# -SILENT = 10 -TACITURN = 9 -TERSE = 8 -EFFUSIVE = 7 -SOCIABLE = 6 -VERBOSE = 5 -TALKATIVE = 4 -GARRULOUS = 3 -CHATTERBOX = 2 -BORING = 1 - -LEVEL_RANGE = range(BORING, SILENT + 1) - -# -# Next, we define names for our levels. You don't need to do this - in which -# case the system will use "Level n" to denote the text for the level. -# -my_logging_levels = { - SILENT : 'Silent', - TACITURN : 'Taciturn', - TERSE : 'Terse', - EFFUSIVE : 'Effusive', - SOCIABLE : 'Sociable', - VERBOSE : 'Verbose', - TALKATIVE : 'Talkative', - GARRULOUS : 'Garrulous', - CHATTERBOX : 'Chatterbox', - BORING : 'Boring', -} - -# -# Now, to demonstrate filtering: suppose for some perverse reason we only -# want to print out all except GARRULOUS messages. Let's create a filter for -# this purpose... -# -class SpecificLevelFilter(logging.Filter): - def __init__(self, lvl): - self.level = lvl - - def filter(self, record): - return self.level != record.levelno - -class GarrulousFilter(SpecificLevelFilter): - def __init__(self): - SpecificLevelFilter.__init__(self, GARRULOUS) - -# -# Now, let's demonstrate filtering at the logger. This time, use a filter -# which excludes SOCIABLE and TACITURN messages. Note that GARRULOUS events -# are still excluded. -# -class VerySpecificFilter(logging.Filter): - def filter(self, record): - return record.levelno not in [SOCIABLE, TACITURN] - -def message(s): - sys.stdout.write("%s\n" % s) +def test_main_inner(): + rootLogger = logging.getLogger("") + rootLogger.setLevel(logging.DEBUG) -SHOULD1 = "This should only be seen at the '%s' logging level (or lower)" + # Find an unused port number + port = logging.handlers.DEFAULT_TCP_LOGGING_PORT + while port < logging.handlers.DEFAULT_TCP_LOGGING_PORT+100: + try: + tcpserver = LogRecordSocketReceiver(port=port) + except socket.error: + port += 1 + else: + break + else: + raise ImportError, "Could not find unused port" -def test1(): -# -# Now, tell the logging system to associate names with our levels. -# - for lvl in my_logging_levels.keys(): - logging.addLevelName(lvl, my_logging_levels[lvl]) - -# -# Now, define a test function which logs an event at each of our levels. -# - - def doLog(log): - for lvl in LEVEL_RANGE: - log.log(lvl, SHOULD1, logging.getLevelName(lvl)) - - log = logging.getLogger("") - hdlr = log.handlers[0] -# -# Set the logging level to each different value and call the utility -# function to log events. -# In the output, you should see that each time round the loop, the number of -# logging events which are actually output decreases. -# - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - # - # Now, we demonstrate level filtering at the handler level. Tell the - # handler defined above to filter at level 'SOCIABLE', and repeat the - # above loop. Compare the output from the two runs. - # - hdlr.setLevel(SOCIABLE) - message("-- Filtering at handler level to SOCIABLE --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - - hdlr.setLevel(0) #turn off level filtering at the handler - - garr = GarrulousFilter() - hdlr.addFilter(garr) - message("-- Filtering using GARRULOUS filter --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - spec = VerySpecificFilter() - log.addFilter(spec) - message("-- Filtering using specific filter for SOCIABLE, TACITURN --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - - log.removeFilter(spec) - hdlr.removeFilter(garr) - #Undo the one level which clashes...for regression tests - logging.addLevelName(logging.DEBUG, "DEBUG") -#---------------------------------------------------------------------------- -# Test 2 -#---------------------------------------------------------------------------- + #Set up a handler such that all events are sent via a socket to the log + #receiver (logrecv). + #The handler will only be added to the rootLogger for some of the tests + shdlr = logging.handlers.SocketHandler('localhost', port) + rootLogger.addHandler(shdlr) -MSG = "-- logging %d at INFO, messages should be seen every 10 events --" -def test2(): - logger = logging.getLogger("") - sh = logger.handlers[0] - sh.close() - logger.removeHandler(sh) - mh = logging.handlers.MemoryHandler(10,logging.WARNING, sh) - logger.setLevel(logging.DEBUG) - logger.addHandler(mh) - message("-- logging at DEBUG, nothing should be seen yet --") - logger.debug("Debug message") - message("-- logging at INFO, nothing should be seen yet --") - logger.info("Info message") - message("-- logging at WARNING, 3 messages should be seen --") - logger.warn("Warn message") - for i in xrange(102): - message(MSG % i) - logger.info("Info index = %d", i) - mh.close() - logger.removeHandler(mh) - logger.addHandler(sh) + #Configure the logger for logrecv so events do not propagate beyond it. + #The sockLogger output is buffered in memory until the end of the test, + #and printed at the end. + sockOut = cStringIO.StringIO() + sockLogger = logging.getLogger("logrecv") + sockLogger.setLevel(logging.DEBUG) + sockhdlr = logging.StreamHandler(sockOut) + sockhdlr.setFormatter(logging.Formatter( + "%(name)s -> %(levelname)s: %(message)s")) + sockLogger.addHandler(sockhdlr) + sockLogger.propagate = 0 -#---------------------------------------------------------------------------- -# Test 3 -#---------------------------------------------------------------------------- + #Set up servers + threads = [] + #sys.stdout.write("About to start TCP server...\n") + threads.append(threading.Thread(target=runTCP, args=(tcpserver,))) -FILTER = "a.b" + for thread in threads: + thread.start() + try: + test0() -def doLog3(): - logging.getLogger("a").info("Info 1") - logging.getLogger("a.b").info("Info 2") - logging.getLogger("a.c").info("Info 3") - logging.getLogger("a.b.c").info("Info 4") - logging.getLogger("a.b.c.d").info("Info 5") - logging.getLogger("a.bb.c").info("Info 6") - logging.getLogger("b").info("Info 7") - logging.getLogger("b.a").info("Info 8") - logging.getLogger("c.a.b").info("Info 9") - logging.getLogger("a.bb").info("Info 10") - -def test3(): - root = logging.getLogger() - root.setLevel(logging.DEBUG) - hand = root.handlers[0] - message("Unfiltered...") - doLog3() - message("Filtered with '%s'..." % FILTER) - filt = logging.Filter(FILTER) - hand.addFilter(filt) - doLog3() - hand.removeFilter(filt) + # XXX(nnorwitz): Try to fix timing related test failures. + # This sleep gives us some extra time to read messages. + # The test generally only fails on Solaris without this sleep. + #time.sleep(2.0) + shdlr.close() + rootLogger.removeHandler(shdlr) -#---------------------------------------------------------------------------- -# Test 4 -#---------------------------------------------------------------------------- + finally: + #wait for TCP receiver to terminate +# socketDataProcessed.wait() + # ensure the server dies + tcpserver.abort = 1 + for thread in threads: + thread.join(2.0) + print(sockOut.getvalue()) + sockOut.close() + sockLogger.removeHandler(sockhdlr) + sockhdlr.close() + sys.stdout.flush() # config0 is a standard configuration. config0 = """ @@ -454,6 +2226,9 @@ datefmt= """ +def message(s): + sys.stdout.write("%s\n" % s) + # config2 has a subtle configuration error that should be reported config2 = string.replace(config1, "sys.stdout", "sys.stbout") @@ -461,225 +2236,9 @@ config3 = string.replace( config1, "formatter=form1", "formatter=misspelled_name") -def test4(): - for i in range(4): - conf = globals()['config%d' % i] - sys.stdout.write('config%d: ' % i) - loggerDict = logging.getLogger().manager.loggerDict - logging._acquireLock() - try: - saved_handlers = logging._handlers.copy() - saved_handler_list = logging._handlerList[:] - saved_loggers = loggerDict.copy() - finally: - logging._releaseLock() - try: - fn = tempfile.mktemp(".ini") - f = open(fn, "w") - f.write(conf) - f.close() - try: - logging.config.fileConfig(fn) - #call again to make sure cleanup is correct - logging.config.fileConfig(fn) - except: - t = sys.exc_info()[0] - message(str(t)) - else: - message('ok.') - os.remove(fn) - finally: - logging._acquireLock() - try: - logging._handlers.clear() - logging._handlers.update(saved_handlers) - logging._handlerList[:] = saved_handler_list - loggerDict = logging.getLogger().manager.loggerDict - loggerDict.clear() - loggerDict.update(saved_loggers) - finally: - logging._releaseLock() - -#---------------------------------------------------------------------------- -# Test 5 -#---------------------------------------------------------------------------- - -test5_config = """ -[loggers] -keys=root - -[handlers] -keys=hand1 - -[formatters] -keys=form1 - -[logger_root] -level=NOTSET -handlers=hand1 - -[handler_hand1] -class=StreamHandler -level=NOTSET -formatter=form1 -args=(sys.stdout,) - -[formatter_form1] -class=test.test_logging.FriendlyFormatter -format=%(levelname)s:%(name)s:%(message)s -datefmt= -""" - -class FriendlyFormatter (logging.Formatter): - def formatException(self, ei): - return "%s... Don't panic!" % str(ei[0]) - - -def test5(): - loggerDict = logging.getLogger().manager.loggerDict - logging._acquireLock() - try: - saved_handlers = logging._handlers.copy() - saved_handler_list = logging._handlerList[:] - saved_loggers = loggerDict.copy() - finally: - logging._releaseLock() - try: - fn = tempfile.mktemp(".ini") - f = open(fn, "w") - f.write(test5_config) - f.close() - logging.config.fileConfig(fn) - try: - raise KeyError - except KeyError: - logging.exception("just testing") - os.remove(fn) - hdlr = logging.getLogger().handlers[0] - logging.getLogger().handlers.remove(hdlr) - finally: - logging._acquireLock() - try: - logging._handlers.clear() - logging._handlers.update(saved_handlers) - logging._handlerList[:] = saved_handler_list - loggerDict = logging.getLogger().manager.loggerDict - loggerDict.clear() - loggerDict.update(saved_loggers) - finally: - logging._releaseLock() - - -#---------------------------------------------------------------------------- -# Test Harness -#---------------------------------------------------------------------------- -def banner(nm, typ): - sep = BANNER % (nm, typ) - sys.stdout.write(sep) - sys.stdout.flush() - -def test_main_inner(): - rootLogger = logging.getLogger("") - rootLogger.setLevel(logging.DEBUG) - hdlr = logging.StreamHandler(sys.stdout) - fmt = logging.Formatter(logging.BASIC_FORMAT) - hdlr.setFormatter(fmt) - rootLogger.addHandler(hdlr) - - # Find an unused port number - port = logging.handlers.DEFAULT_TCP_LOGGING_PORT - while port < logging.handlers.DEFAULT_TCP_LOGGING_PORT+100: - try: - tcpserver = LogRecordSocketReceiver(port=port) - except socket.error: - port += 1 - else: - break - else: - raise ImportError, "Could not find unused port" - - - #Set up a handler such that all events are sent via a socket to the log - #receiver (logrecv). - #The handler will only be added to the rootLogger for some of the tests - shdlr = logging.handlers.SocketHandler('localhost', port) - - #Configure the logger for logrecv so events do not propagate beyond it. - #The sockLogger output is buffered in memory until the end of the test, - #and printed at the end. - sockOut = cStringIO.StringIO() - sockLogger = logging.getLogger("logrecv") - sockLogger.setLevel(logging.DEBUG) - sockhdlr = logging.StreamHandler(sockOut) - sockhdlr.setFormatter(logging.Formatter( - "%(name)s -> %(levelname)s: %(message)s")) - sockLogger.addHandler(sockhdlr) - sockLogger.propagate = 0 - - #Set up servers - threads = [] - #sys.stdout.write("About to start TCP server...\n") - threads.append(threading.Thread(target=runTCP, args=(tcpserver,))) - - for thread in threads: - thread.start() - try: - banner("log_test0", "begin") - - rootLogger.addHandler(shdlr) - test0() - # XXX(nnorwitz): Try to fix timing related test failures. - # This sleep gives us some extra time to read messages. - # The test generally only fails on Solaris without this sleep. - time.sleep(2.0) - shdlr.close() - rootLogger.removeHandler(shdlr) - - banner("log_test0", "end") - - for t in range(1,6): - banner("log_test%d" % t, "begin") - globals()['test%d' % t]() - banner("log_test%d" % t, "end") - - finally: - #wait for TCP receiver to terminate - socketDataProcessed.wait() - # ensure the server dies - tcpserver.abort = 1 - for thread in threads: - thread.join(2.0) - banner("logrecv output", "begin") - sys.stdout.write(sockOut.getvalue()) - sockOut.close() - sockLogger.removeHandler(sockhdlr) - sockhdlr.close() - banner("logrecv output", "end") - sys.stdout.flush() - try: - hdlr.close() - except: - pass - rootLogger.removeHandler(hdlr) - -# Set the locale to the platform-dependent default. I have no idea -# why the test does this, but in any case we save the current locale -# first and restore it at the end. - at run_with_locale('LC_ALL', '') def test_main(): - # Save and restore the original root logger level across the tests. - # Otherwise, e.g., if any test using cookielib runs after test_logging, - # cookielib's debug-level logger tries to log messages, leading to - # confusing: - # No handlers could be found for logger "cookielib" - # output while the tests are running. - root_logger = logging.getLogger("") - original_logging_level = root_logger.getEffectiveLevel() - try: - test_main_inner() - finally: - root_logger.setLevel(original_logging_level) + from test import test_support, test_logging + test_support.run_doctest(test_logging) -if __name__ == "__main__": - sys.stdout.write("test_logging\n") +if __name__=="__main__": test_main() Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sun Feb 17 02:59:18 2008 @@ -704,6 +704,7 @@ Cliff Wells Rickard Westman Jeff Wheeler +Christopher White Mats Wichmann Truida Wiedijk Felix Wiemann Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 17 02:59:18 2008 @@ -1341,6 +1341,8 @@ Tests ----- +- Refactor test_logging to use doctest. + - Refactor test_profile and test_cprofile to use the same code to profile. - Make test_runpy reentrant by fixing _check_module to clear out any module From buildbot at python.org Sun Feb 17 03:58:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 02:58:31 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080217025832.1D1DB1E4020@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1456 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 04:11:13 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 03:11:13 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080217031113.8B9E01E4017@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2552 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_smtplib test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 08:01:41 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 07:01:41 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080217070141.898D61E400E@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/83 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: brett.cannon BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Sun Feb 17 12:33:39 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Feb 2008 12:33:39 +0100 (CET) Subject: [Python-checkins] r60873 - python/trunk/Doc/library/codecs.rst Message-ID: <20080217113339.1E25B1E401A@bag.python.org> Author: georg.brandl Date: Sun Feb 17 12:33:38 2008 New Revision: 60873 Modified: python/trunk/Doc/library/codecs.rst Log: #2131: note that codecs.open() always opens files in binary mode. Modified: python/trunk/Doc/library/codecs.rst ============================================================================== --- python/trunk/Doc/library/codecs.rst (original) +++ python/trunk/Doc/library/codecs.rst Sun Feb 17 12:33:38 2008 @@ -206,7 +206,8 @@ .. function:: open(filename, mode[, encoding[, errors[, buffering]]]) Open an encoded file using the given *mode* and return a wrapped version - providing transparent encoding/decoding. + providing transparent encoding/decoding. The default file mode is ``'r'`` + meaning to open the file in read mode. .. note:: @@ -214,6 +215,13 @@ i.e. Unicode objects for most built-in codecs. Output is also codec-dependent and will usually be Unicode as well. + .. note:: + + Files are always opened in binary mode, even if no binary mode was + specified. This is done to avoid data loss due to encodings using 8-bit + values. This means that no automatic conversion of ``'\n'`` is done + on reading and writing. + *encoding* specifies the encoding which is to be used for the file. *errors* may be given to define the error handling. It defaults to ``'strict'`` From python-checkins at python.org Sun Feb 17 14:34:42 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 17 Feb 2008 14:34:42 +0100 (CET) Subject: [Python-checkins] r60875 - in python/branches/trunk-math: Lib/test/test_complex.py Objects/complexobject.c Message-ID: <20080217133442.0CB071E401C@bag.python.org> Author: christian.heimes Date: Sun Feb 17 14:34:41 2008 New Revision: 60875 Modified: python/branches/trunk-math/Lib/test/test_complex.py python/branches/trunk-math/Objects/complexobject.c Log: Better algorithm for complex division by zero. Modified: python/branches/trunk-math/Lib/test/test_complex.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_complex.py (original) +++ python/branches/trunk-math/Lib/test/test_complex.py Sun Feb 17 14:34:41 2008 @@ -54,14 +54,16 @@ self.assert_(a is b) def assertInf(self, a, real_sign=1, imag_sign=1): - self.assert_(isinf(a.real), a) - self.assertEqual(copysign(1, a.real), real_sign) - self.assert_(isinf(a.imag), a) - self.assertEqual(copysign(1, a.imag), imag_sign) - - def assertNan(self, a): - self.assert_(isnan(a.real), a) - self.assert_(isnan(a.imag), a) + if not real_sign: + self.assert_(isnan(a.real), a) + else: + self.assert_(isinf(a.real), a) + self.assertEqual(copysign(1, a.real), real_sign) + if not imag_sign: + self.assert_(isnan(a.imag), a) + else: + self.assert_(isinf(a.imag), a) + self.assertEqual(copysign(1, a.imag), imag_sign) def check_div(self, x, y): """Compute complex z=x*y, and check that z/x==y and z/y==x.""" @@ -112,15 +114,16 @@ def test_div_ieee754(self): with ieee754(): - self.assertInf(complex(1., 0) / complex(0.), 1, 1) - self.assertInf(complex(-1., 0) / complex(0.), 1, 1) - self.assertInf(complex(0, 1.) / complex(0.), 1, 1) - self.assertInf(complex(0, -1.) / complex(0.), 1, -1) + self.assertInf(complex(1., 0) / complex(0.), 1, 0) + self.assertInf(complex(-1., 0) / complex(0.), -1, 0) + self.assertInf(complex(-1., 0) / complex(-0.), 1, 0) + self.assertInf(complex(0, 1.) / complex(0.), 0, 1) + self.assertInf(complex(0, -1.) / complex(0.), 0, -1) self.assertInf(complex(1., 1.) / complex(0.), 1, 1) self.assertInf(complex(1., -1.) / complex(0.), 1, -1) - self.assertInf(complex(-1., 1.) / complex(0.), 1, 1) - self.assertInf(complex(-1., -1.) / complex(0.), -1, 1) - self.assertNan(complex(0.) / complex(0.)) + self.assertInf(complex(-1., 1.) / complex(0.), -1, 1) + self.assertInf(complex(-1., -1.) / complex(0.), -1, -1) + self.assertInf(complex(0.) / complex(0.), 0, 0) def test_coerce(self): self.assertRaises(OverflowError, complex.__coerce__, 1+1j, 1L<<10000) Modified: python/branches/trunk-math/Objects/complexobject.c ============================================================================== --- python/branches/trunk-math/Objects/complexobject.c (original) +++ python/branches/trunk-math/Objects/complexobject.c Sun Feb 17 14:34:41 2008 @@ -125,23 +125,16 @@ { /* IEEE 754 style division */ if (b.real == 0. && b.imag == 0.) { + /* Complex division by zero + * - division of a complex w/o an imaginary part behaves like + * float division: (x+0j)/(0+0j) == x/0 + * - (0+0j)/(0+0j) results in NAN + * - for the remaining cases it's trying to do something + * sensible while keeping the invariant abs(c/0) == inf + */ Py_complex quot; - if (a.real == 0. && a.imag == 0.) { - /* 0./0. */ - quot.real = Py_NAN; - quot.imag = Py_NAN; - } - else { - float re, im; - /* the outcome is inexact but we care only about the - * sign bits - * (a+ib)/(c+id) = (ac+bd)/(c2+d2) + i(bc-ad)/(c2+d2) - */ - re = a.real * b.real + a.imag * b.imag; - im = a.imag * b.real - a.real * b.imag; - quot.real = copysign(Py_HUGE_VAL, re); - quot.imag = copysign(Py_HUGE_VAL, im); - } + quot.real = copysign(Py_HUGE_VAL, b.real) * a.real; + quot.imag = copysign(Py_HUGE_VAL, b.imag) * a.imag; return quot; } return c_quot(a, b); From python-checkins at python.org Sun Feb 17 16:14:10 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Feb 2008 16:14:10 +0100 (CET) Subject: [Python-checkins] r60876 - python/trunk/Doc/c-api/tuple.rst Message-ID: <20080217151410.C414B1E401C@bag.python.org> Author: georg.brandl Date: Sun Feb 17 16:14:10 2008 New Revision: 60876 Modified: python/trunk/Doc/c-api/tuple.rst Log: Fix function name. Modified: python/trunk/Doc/c-api/tuple.rst ============================================================================== --- python/trunk/Doc/c-api/tuple.rst (original) +++ python/trunk/Doc/c-api/tuple.rst Sun Feb 17 16:14:10 2008 @@ -117,7 +117,7 @@ Removed unused third parameter, *last_is_sticky*. -.. cfunction:: int PyMethod_ClearFreeList(void) +.. cfunction:: int PyTuple_ClearFreeList(void) Clear the free list. Return the total number of freed items. From python-checkins at python.org Sun Feb 17 17:21:14 2008 From: python-checkins at python.org (facundo.batista) Date: Sun, 17 Feb 2008 17:21:14 +0100 (CET) Subject: [Python-checkins] r60877 - in python/trunk: Misc/NEWS Tools/scripts/reindent.py Message-ID: <20080217162114.149461E400A@bag.python.org> Author: facundo.batista Date: Sun Feb 17 17:21:13 2008 New Revision: 60877 Modified: python/trunk/Misc/NEWS python/trunk/Tools/scripts/reindent.py Log: Now we handle different the backup copy, because of security issues regarding user/group and permissions. Fixes 1050828. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 17 17:21:13 2008 @@ -1378,6 +1378,11 @@ Tools ----- +- Tools/scripts/reindent.py now creates the backup file using shutil.copy + to preserve user/group and permissions. Added also a --nobackup option + to not create the backup if the user is concerned regarding this. Check + issue 1050828 for more details. + - Tools/scripts/win_add2path.py was added. The simple script modifes the PATH environment var of the HKCU tree and adds the python bin and script directory. Modified: python/trunk/Tools/scripts/reindent.py ============================================================================== --- python/trunk/Tools/scripts/reindent.py (original) +++ python/trunk/Tools/scripts/reindent.py Sun Feb 17 17:21:13 2008 @@ -4,10 +4,11 @@ """reindent [-d][-r][-v] [ path ... ] --d (--dryrun) Dry run. Analyze, but don't make any changes to, files. --r (--recurse) Recurse. Search for all .py files in subdirectories too. --v (--verbose) Verbose. Print informative msgs; else no output. --h (--help) Help. Print this usage information and exit. +-d (--dryrun) Dry run. Analyze, but don't make any changes to, files. +-r (--recurse) Recurse. Search for all .py files in subdirectories too. +-n (--nobackup) No backup. Does not make a ".bak" file before reindenting. +-v (--verbose) Verbose. Print informative msgs; else no output. +-h (--help) Help. Print this usage information and exit. Change Python (.py) files to use 4-space indents and no hard tab characters. Also trim excess spaces and tabs from ends of lines, and remove empty lines @@ -31,17 +32,23 @@ The hard part of reindenting is figuring out what to do with comment lines. So long as the input files get a clean bill of health from tabnanny.py, reindent should do a good job. + +The backup file is a copy of the one that is being reindented. The ".bak" +file is generated with shutil.copy(), but some corner cases regarding +user/group and permissions could leave the backup file more readable that +you'd prefer. You can always use the --nobackup option to prevent this. """ __version__ = "1" import tokenize -import os +import os, shutil import sys -verbose = 0 -recurse = 0 -dryrun = 0 +verbose = 0 +recurse = 0 +dryrun = 0 +makebackup = True def usage(msg=None): if msg is not None: @@ -57,10 +64,10 @@ def main(): import getopt - global verbose, recurse, dryrun + global verbose, recurse, dryrun, makebackup try: - opts, args = getopt.getopt(sys.argv[1:], "drvh", - ["dryrun", "recurse", "verbose", "help"]) + opts, args = getopt.getopt(sys.argv[1:], "drnvh", + ["dryrun", "recurse", "nobackup", "verbose", "help"]) except getopt.error, msg: usage(msg) return @@ -69,6 +76,8 @@ dryrun += 1 elif o in ('-r', '--recurse'): recurse += 1 + elif o in ('-n', '--nobackup'): + makebackup = False elif o in ('-v', '--verbose'): verbose += 1 elif o in ('-h', '--help'): @@ -112,11 +121,10 @@ print "But this is a dry run, so leaving it alone." if not dryrun: bak = file + ".bak" - if os.path.exists(bak): - os.remove(bak) - os.rename(file, bak) - if verbose: - print "renamed", file, "to", bak + if makebackup: + shutil.copyfile(file, bak) + if verbose: + print "backed up", file, "to", bak f = open(file, "w") r.write(f) f.close() From buildbot at python.org Sun Feb 17 19:24:30 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 18:24:30 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080217182430.37EB91E400A@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/80 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=10775 and list=[12205] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 17 19:59:29 2008 From: python-checkins at python.org (facundo.batista) Date: Sun, 17 Feb 2008 19:59:29 +0100 (CET) Subject: [Python-checkins] r60878 - in python/trunk: Lib/test/test_mmap.py Misc/NEWS Modules/mmapmodule.c Message-ID: <20080217185929.C5C3B1E400A@bag.python.org> Author: facundo.batista Date: Sun Feb 17 19:59:29 2008 New Revision: 60878 Modified: python/trunk/Lib/test/test_mmap.py python/trunk/Misc/NEWS python/trunk/Modules/mmapmodule.c Log: Issue 2112. mmap does not raises EnvironmentError no more, but a subclass of it. Thanks John Lenton. Modified: python/trunk/Lib/test/test_mmap.py ============================================================================== --- python/trunk/Lib/test/test_mmap.py (original) +++ python/trunk/Lib/test/test_mmap.py Sun Feb 17 19:59:29 2008 @@ -436,6 +436,11 @@ self.assertRaises(TypeError, m.write, "foo") + def test_error(self): + self.assert_(issubclass(mmap.error, EnvironmentError)) + self.assert_("mmap.error" in str(mmap.error)) + + def test_main(): run_unittest(MmapTests) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 17 19:59:29 2008 @@ -1149,6 +1149,9 @@ Extension Modules ----------------- +- #2112: mmap.error is now a subclass of EnvironmentError and not a + direct EnvironmentError + - Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ - #2063: correct order of utime and stime in os.times() result on Windows. Modified: python/trunk/Modules/mmapmodule.c ============================================================================== --- python/trunk/Modules/mmapmodule.c (original) +++ python/trunk/Modules/mmapmodule.c Sun Feb 17 19:59:29 2008 @@ -1402,7 +1402,10 @@ dict = PyModule_GetDict(module); if (!dict) return; - mmap_module_error = PyExc_EnvironmentError; + mmap_module_error = PyErr_NewException("mmap.error", + PyExc_EnvironmentError , NULL); + if (mmap_module_error == NULL) + return; PyDict_SetItemString(dict, "error", mmap_module_error); PyDict_SetItemString(dict, "mmap", (PyObject*) &mmap_object_type); #ifdef PROT_EXEC From buildbot at python.org Sun Feb 17 20:25:45 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 19:25:45 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080217192545.B30D41E400A@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3124 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 17 20:46:51 2008 From: python-checkins at python.org (eric.smith) Date: Sun, 17 Feb 2008 20:46:51 +0100 (CET) Subject: [Python-checkins] r60879 - in python/trunk: Include/abstract.h Include/formatter_string.h Include/formatter_unicode.h Lib/string.py Lib/test/test_builtin.py Lib/test/test_datetime.py Lib/test/test_descrtut.py Lib/test/test_str.py Lib/test/test_string.py Lib/test/test_types.py Lib/test/test_unicode.py Makefile.pre.in Modules/datetimemodule.c Objects/abstract.c Objects/floatobject.c Objects/intobject.c Objects/longobject.c Objects/stringlib/formatter.h Objects/stringlib/string_format.h Objects/stringlib/stringdefs.h Objects/stringlib/unicodedefs.h Objects/stringobject.c Objects/typeobject.c Objects/unicodeobject.c Python/bltinmodule.c Python/formatter_string.c Python/formatter_unicode.c Message-ID: <20080217194651.73EFA1E400A@bag.python.org> Author: eric.smith Date: Sun Feb 17 20:46:49 2008 New Revision: 60879 Added: python/trunk/Include/formatter_string.h python/trunk/Include/formatter_unicode.h python/trunk/Objects/stringlib/formatter.h python/trunk/Objects/stringlib/string_format.h python/trunk/Objects/stringlib/stringdefs.h python/trunk/Objects/stringlib/unicodedefs.h python/trunk/Python/formatter_string.c python/trunk/Python/formatter_unicode.c Modified: python/trunk/Include/abstract.h python/trunk/Lib/string.py python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_datetime.py python/trunk/Lib/test/test_descrtut.py python/trunk/Lib/test/test_str.py python/trunk/Lib/test/test_string.py python/trunk/Lib/test/test_types.py python/trunk/Lib/test/test_unicode.py python/trunk/Makefile.pre.in python/trunk/Modules/datetimemodule.c python/trunk/Objects/abstract.c python/trunk/Objects/floatobject.c python/trunk/Objects/intobject.c python/trunk/Objects/longobject.c python/trunk/Objects/stringobject.c python/trunk/Objects/typeobject.c python/trunk/Objects/unicodeobject.c python/trunk/Python/bltinmodule.c Log: Backport of PEP 3101, Advanced String Formatting, from py3k. Highlights: - Adding PyObject_Format. - Adding string.Format class. - Adding __format__ for str, unicode, int, long, float, datetime. - Adding builtin format. - Adding ''.format and u''.format. - str/unicode fixups for formatters. The files in Objects/stringlib that implement PEP 3101 (stringdefs.h, unicodedefs.h, formatter.h, string_format.h) are identical in trunk and py3k. Any changes from here on should be made to trunk, and changes will propogate to py3k). Modified: python/trunk/Include/abstract.h ============================================================================== --- python/trunk/Include/abstract.h (original) +++ python/trunk/Include/abstract.h Sun Feb 17 20:46:49 2008 @@ -529,6 +529,13 @@ */ + PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj, + PyObject *format_spec); + /* + Takes an arbitrary object and returns the result of + calling obj.__format__(format_spec). + */ + /* Iterators */ PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); Added: python/trunk/Include/formatter_string.h ============================================================================== --- (empty file) +++ python/trunk/Include/formatter_string.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,12 @@ +PyObject * +string__format__(PyObject *self, PyObject *args); + +PyObject * +string_long__format__(PyObject *self, PyObject *args); + +PyObject * +string_int__format__(PyObject *self, PyObject *args); + +PyObject * +string_float__format__(PyObject *self, PyObject *args); + Added: python/trunk/Include/formatter_unicode.h ============================================================================== --- (empty file) +++ python/trunk/Include/formatter_unicode.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,12 @@ +PyObject * +unicode__format__(PyObject *self, PyObject *args); + +PyObject * +unicode_long__format__(PyObject *self, PyObject *args); + +PyObject * +unicode_int__format__(PyObject *self, PyObject *args); + +PyObject * +unicode_float__format__(PyObject *self, PyObject *args); + Modified: python/trunk/Lib/string.py ============================================================================== --- python/trunk/Lib/string.py (original) +++ python/trunk/Lib/string.py Sun Feb 17 20:46:49 2008 @@ -527,3 +527,115 @@ letters = lowercase + uppercase except ImportError: pass # Use the original versions + +######################################################################## +# the Formatter class +# see PEP 3101 for details and purpose of this class + +# The hard parts are reused from the C implementation. They're +# exposed here via the sys module. sys was chosen because it's always +# available and doesn't have to be dynamically loaded. + +# The overall parser is implemented in str._formatter_parser. +# The field name parser is implemented in str._formatter_field_name_split + +class Formatter(object): + def format(self, format_string, *args, **kwargs): + return self.vformat(format_string, args, kwargs) + + def vformat(self, format_string, args, kwargs): + used_args = set() + result = self._vformat(format_string, args, kwargs, used_args, 2) + self.check_unused_args(used_args, args, kwargs) + return result + + def _vformat(self, format_string, args, kwargs, used_args, recursion_depth): + if recursion_depth < 0: + raise ValueError('Max string recursion exceeded') + result = [] + for literal_text, field_name, format_spec, conversion in \ + self.parse(format_string): + + # output the literal text + if literal_text: + result.append(literal_text) + + # if there's a field, output it + if field_name is not None: + # this is some markup, find the object and do + # the formatting + + # given the field_name, find the object it references + # and the argument it came from + obj, arg_used = self.get_field(field_name, args, kwargs) + used_args.add(arg_used) + + # do any conversion on the resulting object + obj = self.convert_field(obj, conversion) + + # expand the format spec, if needed + format_spec = self._vformat(format_spec, args, kwargs, + used_args, recursion_depth-1) + + # format the object and append to the result + result.append(self.format_field(obj, format_spec)) + + return ''.join(result) + + + def get_value(self, key, args, kwargs): + if isinstance(key, (int, long)): + return args[key] + else: + return kwargs[key] + + + def check_unused_args(self, used_args, args, kwargs): + pass + + + def format_field(self, value, format_spec): + return format(value, format_spec) + + + def convert_field(self, value, conversion): + # do any conversion on the resulting object + if conversion == 'r': + return repr(value) + elif conversion == 's': + return str(value) + elif conversion is None: + return value + raise ValueError("Unknown converion specifier {0!s}".format(conversion)) + + + # returns an iterable that contains tuples of the form: + # (literal_text, field_name, format_spec, conversion) + # literal_text can be zero length + # field_name can be None, in which case there's no + # object to format and output + # if field_name is not None, it is looked up, formatted + # with format_spec and conversion and then used + def parse(self, format_string): + return format_string._formatter_parser() + + + # given a field_name, find the object it references. + # field_name: the field being looked up, e.g. "0.name" + # or "lookup[3]" + # used_args: a set of which args have been used + # args, kwargs: as passed in to vformat + def get_field(self, field_name, args, kwargs): + first, rest = field_name._formatter_field_name_split() + + obj = self.get_value(first, args, kwargs) + + # loop through the rest of the field_name, doing + # getattr or getitem as needed + for is_attr, i in rest: + if is_attr: + obj = getattr(obj, i) + else: + obj = obj[i] + + return obj, first Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Sun Feb 17 20:46:49 2008 @@ -2012,6 +2012,101 @@ data = 'The quick Brown fox Jumped over The lazy Dog'.split() self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0) + def test_format(self): + # Test the basic machinery of the format() builtin. Don't test + # the specifics of the various formatters + self.assertEqual(format(3, ''), '3') + + # Returns some classes to use for various tests. There's + # an old-style version, and a new-style version + def classes_new(): + class A(object): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromA(A): + pass + + class Simple(object): pass + class DerivedFromSimple(Simple): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromSimple2(DerivedFromSimple): pass + return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2 + + # In 3.0, classes_classic has the same meaning as classes_new + def classes_classic(): + class A: + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromA(A): + pass + + class Simple: pass + class DerivedFromSimple(Simple): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromSimple2(DerivedFromSimple): pass + return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2 + + def class_test(A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2): + self.assertEqual(format(A(3), 'spec'), '3spec') + self.assertEqual(format(DerivedFromA(4), 'spec'), '4spec') + self.assertEqual(format(DerivedFromSimple(5), 'abc'), '5abc') + self.assertEqual(format(DerivedFromSimple2(10), 'abcdef'), + '10abcdef') + + class_test(*classes_new()) + class_test(*classes_classic()) + + def empty_format_spec(value): + # test that: + # format(x, '') == str(x) + # format(x) == str(x) + self.assertEqual(format(value, ""), str(value)) + self.assertEqual(format(value), str(value)) + + # for builtin types, format(x, "") == str(x) + empty_format_spec(17**13) + empty_format_spec(1.0) + empty_format_spec(3.1415e104) + empty_format_spec(-3.1415e104) + empty_format_spec(3.1415e-104) + empty_format_spec(-3.1415e-104) + empty_format_spec(object) + empty_format_spec(None) + + # TypeError because self.__format__ returns the wrong type + class BadFormatResult: + def __format__(self, format_spec): + return 1.0 + self.assertRaises(TypeError, format, BadFormatResult(), "") + + # TypeError because format_spec is not unicode or str + self.assertRaises(TypeError, format, object(), 4) + self.assertRaises(TypeError, format, object(), object()) + + # tests for object.__format__ really belong elsewhere, but + # there's no good place to put them + x = object().__format__('') + self.assert_(x.startswith('7', ' result') + test('result', '>8', ' result') + test('result', '^8', ' result ') + test('result', '^9', ' result ') + test('result', '^10', ' result ') + test('a', '10000', 'a' + ' ' * 9999) + test('', '10000', ' ' * 10000) + test('', '10000000', ' ' * 10000000) + + def test_format(self): + self.assertEqual(''.format(), '') + self.assertEqual('a'.format(), 'a') + self.assertEqual('ab'.format(), 'ab') + self.assertEqual('a{{'.format(), 'a{') + self.assertEqual('a}}'.format(), 'a}') + self.assertEqual('{{b'.format(), '{b') + self.assertEqual('}}b'.format(), '}b') + self.assertEqual('a{{b'.format(), 'a{b') + + # examples from the PEP: + import datetime + self.assertEqual("My name is {0}".format('Fred'), "My name is Fred") + self.assertEqual("My name is {0[name]}".format(dict(name='Fred')), + "My name is Fred") + self.assertEqual("My name is {0} :-{{}}".format('Fred'), + "My name is Fred :-{}") + + d = datetime.date(2007, 8, 18) + self.assertEqual("The year is {0.year}".format(d), + "The year is 2007") + + # classes we'll use for testing + class C: + def __init__(self, x=100): + self._x = x + def __format__(self, spec): + return spec + + class D: + def __init__(self, x): + self.x = x + def __format__(self, spec): + return str(self.x) + + # class with __str__, but no __format__ + class E: + def __init__(self, x): + self.x = x + def __str__(self): + return 'E(' + self.x + ')' + + # class with __repr__, but no __format__ or __str__ + class F: + def __init__(self, x): + self.x = x + def __repr__(self): + return 'F(' + self.x + ')' + + # class with __format__ that forwards to string, for some format_spec's + class G: + def __init__(self, x): + self.x = x + def __str__(self): + return "string is " + self.x + def __format__(self, format_spec): + if format_spec == 'd': + return 'G(' + self.x + ')' + return object.__format__(self, format_spec) + + # class that returns a bad type from __format__ + class H: + def __format__(self, format_spec): + return 1.0 + + class I(datetime.date): + def __format__(self, format_spec): + return self.strftime(format_spec) + + class J(int): + def __format__(self, format_spec): + return int.__format__(self * 2, format_spec) + + + self.assertEqual(''.format(), '') + self.assertEqual('abc'.format(), 'abc') + self.assertEqual('{0}'.format('abc'), 'abc') + self.assertEqual('{0:}'.format('abc'), 'abc') + self.assertEqual('X{0}'.format('abc'), 'Xabc') + self.assertEqual('{0}X'.format('abc'), 'abcX') + self.assertEqual('X{0}Y'.format('abc'), 'XabcY') + self.assertEqual('{1}'.format(1, 'abc'), 'abc') + self.assertEqual('X{1}'.format(1, 'abc'), 'Xabc') + self.assertEqual('{1}X'.format(1, 'abc'), 'abcX') + self.assertEqual('X{1}Y'.format(1, 'abc'), 'XabcY') + self.assertEqual('{0}'.format(-15), '-15') + self.assertEqual('{0}{1}'.format(-15, 'abc'), '-15abc') + self.assertEqual('{0}X{1}'.format(-15, 'abc'), '-15Xabc') + self.assertEqual('{{'.format(), '{') + self.assertEqual('}}'.format(), '}') + self.assertEqual('{{}}'.format(), '{}') + self.assertEqual('{{x}}'.format(), '{x}') + self.assertEqual('{{{0}}}'.format(123), '{123}') + self.assertEqual('{{{{0}}}}'.format(), '{{0}}') + self.assertEqual('}}{{'.format(), '}{') + self.assertEqual('}}x{{'.format(), '}x{') + + # weird field names + self.assertEqual("{0[foo-bar]}".format({'foo-bar':'baz'}), 'baz') + self.assertEqual("{0[foo bar]}".format({'foo bar':'baz'}), 'baz') + self.assertEqual("{0[ ]}".format({' ':3}), '3') + + self.assertEqual('{foo._x}'.format(foo=C(20)), '20') + self.assertEqual('{1}{0}'.format(D(10), D(20)), '2010') + self.assertEqual('{0._x.x}'.format(C(D('abc'))), 'abc') + self.assertEqual('{0[0]}'.format(['abc', 'def']), 'abc') + self.assertEqual('{0[1]}'.format(['abc', 'def']), 'def') + self.assertEqual('{0[1][0]}'.format(['abc', ['def']]), 'def') + self.assertEqual('{0[1][0].x}'.format(['abc', [D('def')]]), 'def') + + # strings + self.assertEqual('{0:.3s}'.format('abc'), 'abc') + self.assertEqual('{0:.3s}'.format('ab'), 'ab') + self.assertEqual('{0:.3s}'.format('abcdef'), 'abc') + self.assertEqual('{0:.0s}'.format('abcdef'), '') + self.assertEqual('{0:3.3s}'.format('abc'), 'abc') + self.assertEqual('{0:2.3s}'.format('abc'), 'abc') + self.assertEqual('{0:2.2s}'.format('abc'), 'ab') + self.assertEqual('{0:3.2s}'.format('abc'), 'ab ') + self.assertEqual('{0:x<0s}'.format('result'), 'result') + self.assertEqual('{0:x<5s}'.format('result'), 'result') + self.assertEqual('{0:x<6s}'.format('result'), 'result') + self.assertEqual('{0:x<7s}'.format('result'), 'resultx') + self.assertEqual('{0:x<8s}'.format('result'), 'resultxx') + self.assertEqual('{0: <7s}'.format('result'), 'result ') + self.assertEqual('{0:<7s}'.format('result'), 'result ') + self.assertEqual('{0:>7s}'.format('result'), ' result') + self.assertEqual('{0:>8s}'.format('result'), ' result') + self.assertEqual('{0:^8s}'.format('result'), ' result ') + self.assertEqual('{0:^9s}'.format('result'), ' result ') + self.assertEqual('{0:^10s}'.format('result'), ' result ') + self.assertEqual('{0:10000}'.format('a'), 'a' + ' ' * 9999) + self.assertEqual('{0:10000}'.format(''), ' ' * 10000) + self.assertEqual('{0:10000000}'.format(''), ' ' * 10000000) + + # format specifiers for user defined type + self.assertEqual('{0:abc}'.format(C()), 'abc') + + # !r and !s coersions + self.assertEqual('{0!s}'.format('Hello'), 'Hello') + self.assertEqual('{0!s:}'.format('Hello'), 'Hello') + self.assertEqual('{0!s:15}'.format('Hello'), 'Hello ') + self.assertEqual('{0!s:15s}'.format('Hello'), 'Hello ') + self.assertEqual('{0!r}'.format('Hello'), "'Hello'") + self.assertEqual('{0!r:}'.format('Hello'), "'Hello'") + self.assertEqual('{0!r}'.format(F('Hello')), 'F(Hello)') + + # test fallback to object.__format__ + self.assertEqual('{0}'.format({}), '{}') + self.assertEqual('{0}'.format([]), '[]') + self.assertEqual('{0}'.format([1]), '[1]') + self.assertEqual('{0}'.format(E('data')), 'E(data)') + self.assertEqual('{0:^10}'.format(E('data')), ' E(data) ') + self.assertEqual('{0:^10s}'.format(E('data')), ' E(data) ') + self.assertEqual('{0:d}'.format(G('data')), 'G(data)') + self.assertEqual('{0:>15s}'.format(G('data')), ' string is data') + self.assertEqual('{0!s}'.format(G('data')), 'string is data') + + self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007, + month=8, + day=27)), + "date: 2007-08-27") + + # test deriving from a builtin type and overriding __format__ + self.assertEqual("{0}".format(J(10)), "20") + + + # string format specifiers + self.assertEqual('{0:}'.format('a'), 'a') + + # computed format specifiers + self.assertEqual("{0:.{1}}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{1}s}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{precision}s}".format('hello world', precision=5), 'hello') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width=10, precision=5), 'hello ') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), 'hello ') + + # test various errors + self.assertRaises(ValueError, '{'.format) + self.assertRaises(ValueError, '}'.format) + self.assertRaises(ValueError, 'a{'.format) + self.assertRaises(ValueError, 'a}'.format) + self.assertRaises(ValueError, '{a'.format) + self.assertRaises(ValueError, '}a'.format) + self.assertRaises(IndexError, '{0}'.format) + self.assertRaises(IndexError, '{1}'.format, 'abc') + self.assertRaises(KeyError, '{x}'.format) + self.assertRaises(ValueError, "}{".format) + self.assertRaises(ValueError, "{".format) + self.assertRaises(ValueError, "}".format) + self.assertRaises(ValueError, "abc{0:{}".format) + self.assertRaises(ValueError, "{0".format) + self.assertRaises(IndexError, "{0.}".format) + self.assertRaises(ValueError, "{0.}".format, 0) + self.assertRaises(IndexError, "{0[}".format) + self.assertRaises(ValueError, "{0[}".format, []) + self.assertRaises(KeyError, "{0]}".format) + self.assertRaises(ValueError, "{0.[]}".format, 0) + self.assertRaises(ValueError, "{0..foo}".format, 0) + self.assertRaises(ValueError, "{0[0}".format, 0) + self.assertRaises(ValueError, "{0[0:foo}".format, 0) + self.assertRaises(KeyError, "{c]}".format) + self.assertRaises(ValueError, "{{ {{{0}}".format, 0) + self.assertRaises(ValueError, "{0}}".format, 0) + self.assertRaises(KeyError, "{foo}".format, bar=3) + self.assertRaises(ValueError, "{0!x}".format, 3) + self.assertRaises(ValueError, "{0!}".format, 0) + self.assertRaises(ValueError, "{0!rs}".format, 0) + self.assertRaises(ValueError, "{!}".format) + self.assertRaises(ValueError, "{:}".format) + self.assertRaises(ValueError, "{:s}".format) + self.assertRaises(ValueError, "{}".format) + + # can't have a replacement on the field name portion + self.assertRaises(TypeError, '{0[{1}]}'.format, 'abcdefg', 4) + + # exceed maximum recursion depth + self.assertRaises(ValueError, "{0:{1:{2}}}".format, 'abc', 's', '') + self.assertRaises(ValueError, "{0:{1:{2:{3:{4:{5:{6}}}}}}}".format, + 0, 1, 2, 3, 4, 5, 6, 7) + + # string format spec errors + self.assertRaises(ValueError, "{0:-s}".format, '') + self.assertRaises(ValueError, format, "", "-") + self.assertRaises(ValueError, "{0:=s}".format, '') + def test_main(): test_support.run_unittest(StrTest) Modified: python/trunk/Lib/test/test_string.py ============================================================================== --- python/trunk/Lib/test/test_string.py (original) +++ python/trunk/Lib/test/test_string.py Sun Feb 17 20:46:49 2008 @@ -106,6 +106,92 @@ self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi') self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi') + def test_formatter(self): + fmt = string.Formatter() + self.assertEqual(fmt.format("foo"), "foo") + + self.assertEqual(fmt.format("foo{0}", "bar"), "foobar") + self.assertEqual(fmt.format("foo{1}{0}-{1}", "bar", 6), "foo6bar-6") + self.assertEqual(fmt.format("-{arg!r}-", arg='test'), "-'test'-") + + # override get_value ############################################ + class NamespaceFormatter(string.Formatter): + def __init__(self, namespace={}): + string.Formatter.__init__(self) + self.namespace = namespace + + def get_value(self, key, args, kwds): + if isinstance(key, str): + try: + # Check explicitly passed arguments first + return kwds[key] + except KeyError: + return self.namespace[key] + else: + string.Formatter.get_value(key, args, kwds) + + fmt = NamespaceFormatter({'greeting':'hello'}) + self.assertEqual(fmt.format("{greeting}, world!"), 'hello, world!') + + + # override format_field ######################################### + class CallFormatter(string.Formatter): + def format_field(self, value, format_spec): + return format(value(), format_spec) + + fmt = CallFormatter() + self.assertEqual(fmt.format('*{0}*', lambda : 'result'), '*result*') + + + # override convert_field ######################################## + class XFormatter(string.Formatter): + def convert_field(self, value, conversion): + if conversion == 'x': + return None + return super(XFormatter, self).convert_field(value, conversion) + + fmt = XFormatter() + self.assertEqual(fmt.format("{0!r}:{0!x}", 'foo', 'foo'), "'foo':None") + + + # override parse ################################################ + class BarFormatter(string.Formatter): + # returns an iterable that contains tuples of the form: + # (literal_text, field_name, format_spec, conversion) + def parse(self, format_string): + for field in format_string.split('|'): + if field[0] == '+': + # it's markup + field_name, _, format_spec = field[1:].partition(':') + yield '', field_name, format_spec, None + else: + yield field, None, None, None + + fmt = BarFormatter() + self.assertEqual(fmt.format('*|+0:^10s|*', 'foo'), '* foo *') + + # test all parameters used + class CheckAllUsedFormatter(string.Formatter): + def check_unused_args(self, used_args, args, kwargs): + # Track which arguments actuallly got used + unused_args = set(kwargs.keys()) + unused_args.update(range(0, len(args))) + + for arg in used_args: + unused_args.remove(arg) + + if unused_args: + raise ValueError("unused arguments") + + fmt = CheckAllUsedFormatter() + self.assertEqual(fmt.format("{0}", 10), "10") + self.assertEqual(fmt.format("{0}{i}", 10, i=100), "10100") + self.assertEqual(fmt.format("{0}{i}{1}", 10, 20, i=100), "1010020") + self.assertRaises(ValueError, fmt.format, "{0}{i}{1}", 10, 20, i=100, j=0) + self.assertRaises(ValueError, fmt.format, "{0}", 10, 20) + self.assertRaises(ValueError, fmt.format, "{0}", 10, 20, i=100) + self.assertRaises(ValueError, fmt.format, "{i}", 10, 20, i=100) + class BytesAliasTest(unittest.TestCase): def test_builtin(self): Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Sun Feb 17 20:46:49 2008 @@ -266,6 +266,257 @@ except TypeError: pass else: self.fail("char buffer (at C level) not working") + def test_int__format__(self): + def test(i, format_spec, result): + # just make sure I'm not accidentally checking longs + assert type(i) == int + assert type(format_spec) == str + self.assertEqual(i.__format__(format_spec), result) + self.assertEqual(i.__format__(unicode(format_spec)), result) + + test(123456789, 'd', '123456789') + test(123456789, 'd', '123456789') + + test(1, 'c', '\01') + + # sign and aligning are interdependent + test(1, "-", '1') + test(-1, "-", '-1') + test(1, "-3", ' 1') + test(-1, "-3", ' -1') + test(1, "+3", ' +1') + test(-1, "+3", ' -1') + test(1, " 3", ' 1') + test(-1, " 3", ' -1') + test(1, " ", ' 1') + test(-1, " ", '-1') + + # hex + test(3, "x", "3") + test(3, "X", "3") + test(1234, "x", "4d2") + test(-1234, "x", "-4d2") + test(1234, "8x", " 4d2") + test(-1234, "8x", " -4d2") + test(1234, "x", "4d2") + test(-1234, "x", "-4d2") + test(-3, "x", "-3") + test(-3, "X", "-3") + test(int('be', 16), "x", "be") + test(int('be', 16), "X", "BE") + test(-int('be', 16), "x", "-be") + test(-int('be', 16), "X", "-BE") + + # octal + test(3, "o", "3") + test(-3, "o", "-3") + test(65, "o", "101") + test(-65, "o", "-101") + test(1234, "o", "2322") + test(-1234, "o", "-2322") + test(1234, "-o", "2322") + test(-1234, "-o", "-2322") + test(1234, " o", " 2322") + test(-1234, " o", "-2322") + test(1234, "+o", "+2322") + test(-1234, "+o", "-2322") + + # binary + test(3, "b", "11") + test(-3, "b", "-11") + test(1234, "b", "10011010010") + test(-1234, "b", "-10011010010") + test(1234, "-b", "10011010010") + test(-1234, "-b", "-10011010010") + test(1234, " b", " 10011010010") + test(-1234, " b", "-10011010010") + test(1234, "+b", "+10011010010") + test(-1234, "+b", "-10011010010") + + # make sure these are errors + + # precision disallowed + self.assertRaises(ValueError, 3 .__format__, "1.3") + # sign not allowed with 'c' + self.assertRaises(ValueError, 3 .__format__, "+c") + # format spec must be string + self.assertRaises(TypeError, 3 .__format__, None) + self.assertRaises(TypeError, 3 .__format__, 0) + + # ensure that only int and float type specifiers work + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'bcdoxXeEfFgGn%': + self.assertRaises(ValueError, 0 .__format__, format_spec) + self.assertRaises(ValueError, 1 .__format__, format_spec) + self.assertRaises(ValueError, (-1) .__format__, format_spec) + + # ensure that float type specifiers work; format converts + # the int to a float + for format_spec in 'eEfFgGn%': + for value in [0, 1, -1, 100, -100, 1234567890, -1234567890]: + self.assertEqual(value.__format__(format_spec), + float(value).__format__(format_spec)) + + def test_long__format__(self): + def test(i, format_spec, result): + # make sure we're not accidentally checking ints + assert type(i) == long + assert type(format_spec) == str + self.assertEqual(i.__format__(format_spec), result) + self.assertEqual(i.__format__(unicode(format_spec)), result) + + test(10**100, 'd', '1' + '0' * 100) + test(10**100+100, 'd', '1' + '0' * 97 + '100') + + test(123456789L, 'd', '123456789') + test(123456789L, 'd', '123456789') + + # sign and aligning are interdependent + test(1L, "-", '1') + test(-1L, "-", '-1') + test(1L, "-3", ' 1') + test(-1L, "-3", ' -1') + test(1L, "+3", ' +1') + test(-1L, "+3", ' -1') + test(1L, " 3", ' 1') + test(-1L, " 3", ' -1') + test(1L, " ", ' 1') + test(-1L, " ", '-1') + + test(1L, 'c', '\01') + + # hex + test(3L, "x", "3") + test(3L, "X", "3") + test(1234L, "x", "4d2") + test(-1234L, "x", "-4d2") + test(1234L, "8x", " 4d2") + test(-1234L, "8x", " -4d2") + test(1234L, "x", "4d2") + test(-1234L, "x", "-4d2") + test(-3L, "x", "-3") + test(-3L, "X", "-3") + test(long('be', 16), "x", "be") + test(long('be', 16), "X", "BE") + test(-long('be', 16), "x", "-be") + test(-long('be', 16), "X", "-BE") + + # octal + test(3L, "o", "3") + test(-3L, "o", "-3") + test(65L, "o", "101") + test(-65L, "o", "-101") + test(1234L, "o", "2322") + test(-1234L, "o", "-2322") + test(1234L, "-o", "2322") + test(-1234L, "-o", "-2322") + test(1234L, " o", " 2322") + test(-1234L, " o", "-2322") + test(1234L, "+o", "+2322") + test(-1234L, "+o", "-2322") + + # binary + test(3L, "b", "11") + test(-3L, "b", "-11") + test(1234L, "b", "10011010010") + test(-1234L, "b", "-10011010010") + test(1234L, "-b", "10011010010") + test(-1234L, "-b", "-10011010010") + test(1234L, " b", " 10011010010") + test(-1234L, " b", "-10011010010") + test(1234L, "+b", "+10011010010") + test(-1234L, "+b", "-10011010010") + + # make sure these are errors + + # precision disallowed + self.assertRaises(ValueError, 3L .__format__, "1.3") + # sign not allowed with 'c' + self.assertRaises(ValueError, 3L .__format__, "+c") + # format spec must be string + self.assertRaises(TypeError, 3L .__format__, None) + self.assertRaises(TypeError, 3L .__format__, 0) + + # ensure that only int and float type specifiers work + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'bcdoxXeEfFgGn%': + self.assertRaises(ValueError, 0L .__format__, format_spec) + self.assertRaises(ValueError, 1L .__format__, format_spec) + self.assertRaises(ValueError, (-1L) .__format__, format_spec) + + # ensure that float type specifiers work; format converts + # the long to a float + for format_spec in 'eEfFgGn%': + for value in [0L, 1L, -1L, 100L, -100L, 1234567890L, -1234567890L]: + self.assertEqual(value.__format__(format_spec), + float(value).__format__(format_spec)) + + def test_float__format__(self): + # these should be rewritten to use both format(x, spec) and + # x.__format__(spec) + + def test(f, format_spec, result): + assert type(f) == float + assert type(format_spec) == str + self.assertEqual(f.__format__(format_spec), result) + self.assertEqual(f.__format__(unicode(format_spec)), result) + + test(0.0, 'f', '0.000000') + + # the default is 'g', except for empty format spec + test(0.0, '', '0.0') + test(0.01, '', '0.01') + test(0.01, 'g', '0.01') + + test( 1.0, ' g', ' 1') + test(-1.0, ' g', '-1') + test( 1.0, '+g', '+1') + test(-1.0, '+g', '-1') + test(1.1234e200, 'g', '1.1234e+200') + test(1.1234e200, 'G', '1.1234E+200') + + + test(1.0, 'f', '1.000000') + + test(-1.0, 'f', '-1.000000') + + test( 1.0, ' f', ' 1.000000') + test(-1.0, ' f', '-1.000000') + test( 1.0, '+f', '+1.000000') + test(-1.0, '+f', '-1.000000') + test(1.1234e200, 'f', '1.1234e+200') + test(1.1234e200, 'F', '1.1234e+200') + + test( 1.0, 'e', '1.000000e+00') + test(-1.0, 'e', '-1.000000e+00') + test( 1.0, 'E', '1.000000E+00') + test(-1.0, 'E', '-1.000000E+00') + test(1.1234e20, 'e', '1.123400e+20') + test(1.1234e20, 'E', '1.123400E+20') + + # % formatting + test(-1.0, '%', '-100.000000%') + + # format spec must be string + self.assertRaises(TypeError, 3.0.__format__, None) + self.assertRaises(TypeError, 3.0.__format__, 0) + + # other format specifiers shouldn't work on floats, + # in particular int specifiers + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'eEfFgGn%': + self.assertRaises(ValueError, format, 0.0, format_spec) + self.assertRaises(ValueError, format, 1.0, format_spec) + self.assertRaises(ValueError, format, -1.0, format_spec) + self.assertRaises(ValueError, format, 1e100, format_spec) + self.assertRaises(ValueError, format, -1e100, format_spec) + self.assertRaises(ValueError, format, 1e-100, format_spec) + self.assertRaises(ValueError, format, -1e-100, format_spec) + + def test_main(): run_unittest(TypesTests) Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Sun Feb 17 20:46:49 2008 @@ -825,6 +825,268 @@ return self.assertRaises(OverflowError, u't\tt\t'.expandtabs, sys.maxint) + def test__format__(self): + def test(value, format, expected): + # test both with and without the trailing 's' + self.assertEqual(value.__format__(format), expected) + self.assertEqual(value.__format__(format + u's'), expected) + + test(u'', u'', u'') + test(u'abc', u'', u'abc') + test(u'abc', u'.3', u'abc') + test(u'ab', u'.3', u'ab') + test(u'abcdef', u'.3', u'abc') + test(u'abcdef', u'.0', u'') + test(u'abc', u'3.3', u'abc') + test(u'abc', u'2.3', u'abc') + test(u'abc', u'2.2', u'ab') + test(u'abc', u'3.2', u'ab ') + test(u'result', u'x<0', u'result') + test(u'result', u'x<5', u'result') + test(u'result', u'x<6', u'result') + test(u'result', u'x<7', u'resultx') + test(u'result', u'x<8', u'resultxx') + test(u'result', u' <7', u'result ') + test(u'result', u'<7', u'result ') + test(u'result', u'>7', u' result') + test(u'result', u'>8', u' result') + test(u'result', u'^8', u' result ') + test(u'result', u'^9', u' result ') + test(u'result', u'^10', u' result ') + test(u'a', u'10000', u'a' + u' ' * 9999) + test(u'', u'10000', u' ' * 10000) + test(u'', u'10000000', u' ' * 10000000) + + # test mixing unicode and str + self.assertEqual(u'abc'.__format__('s'), u'abc') + self.assertEqual(u'abc'.__format__('->10s'), u'-------abc') + + def test_format(self): + self.assertEqual(u''.format(), u'') + self.assertEqual(u'a'.format(), u'a') + self.assertEqual(u'ab'.format(), u'ab') + self.assertEqual(u'a{{'.format(), u'a{') + self.assertEqual(u'a}}'.format(), u'a}') + self.assertEqual(u'{{b'.format(), u'{b') + self.assertEqual(u'}}b'.format(), u'}b') + self.assertEqual(u'a{{b'.format(), u'a{b') + + # examples from the PEP: + import datetime + self.assertEqual(u"My name is {0}".format(u'Fred'), u"My name is Fred") + self.assertEqual(u"My name is {0[name]}".format(dict(name=u'Fred')), + u"My name is Fred") + self.assertEqual(u"My name is {0} :-{{}}".format(u'Fred'), + u"My name is Fred :-{}") + + # datetime.__format__ doesn't work with unicode + #d = datetime.date(2007, 8, 18) + #self.assertEqual("The year is {0.year}".format(d), + # "The year is 2007") + + # classes we'll use for testing + class C: + def __init__(self, x=100): + self._x = x + def __format__(self, spec): + return spec + + class D: + def __init__(self, x): + self.x = x + def __format__(self, spec): + return str(self.x) + + # class with __str__, but no __format__ + class E: + def __init__(self, x): + self.x = x + def __str__(self): + return u'E(' + self.x + u')' + + # class with __repr__, but no __format__ or __str__ + class F: + def __init__(self, x): + self.x = x + def __repr__(self): + return u'F(' + self.x + u')' + + # class with __format__ that forwards to string, for some format_spec's + class G: + def __init__(self, x): + self.x = x + def __str__(self): + return u"string is " + self.x + def __format__(self, format_spec): + if format_spec == 'd': + return u'G(' + self.x + u')' + return object.__format__(self, format_spec) + + # class that returns a bad type from __format__ + class H: + def __format__(self, format_spec): + return 1.0 + + class I(datetime.date): + def __format__(self, format_spec): + return self.strftime(format_spec) + + class J(int): + def __format__(self, format_spec): + return int.__format__(self * 2, format_spec) + + + self.assertEqual(u''.format(), u'') + self.assertEqual(u'abc'.format(), u'abc') + self.assertEqual(u'{0}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:}'.format(u'abc'), u'abc') + self.assertEqual(u'X{0}'.format(u'abc'), u'Xabc') + self.assertEqual(u'{0}X'.format(u'abc'), u'abcX') + self.assertEqual(u'X{0}Y'.format(u'abc'), u'XabcY') + self.assertEqual(u'{1}'.format(1, u'abc'), u'abc') + self.assertEqual(u'X{1}'.format(1, u'abc'), u'Xabc') + self.assertEqual(u'{1}X'.format(1, u'abc'), u'abcX') + self.assertEqual(u'X{1}Y'.format(1, u'abc'), u'XabcY') + self.assertEqual(u'{0}'.format(-15), u'-15') + self.assertEqual(u'{0}{1}'.format(-15, u'abc'), u'-15abc') + self.assertEqual(u'{0}X{1}'.format(-15, u'abc'), u'-15Xabc') + self.assertEqual(u'{{'.format(), u'{') + self.assertEqual(u'}}'.format(), u'}') + self.assertEqual(u'{{}}'.format(), u'{}') + self.assertEqual(u'{{x}}'.format(), u'{x}') + self.assertEqual(u'{{{0}}}'.format(123), u'{123}') + self.assertEqual(u'{{{{0}}}}'.format(), u'{{0}}') + self.assertEqual(u'}}{{'.format(), u'}{') + self.assertEqual(u'}}x{{'.format(), u'}x{') + + # weird field names + self.assertEqual(u"{0[foo-bar]}".format({u'foo-bar':u'baz'}), u'baz') + self.assertEqual(u"{0[foo bar]}".format({u'foo bar':u'baz'}), u'baz') + self.assertEqual(u"{0[ ]}".format({u' ':3}), u'3') + + self.assertEqual(u'{foo._x}'.format(foo=C(20)), u'20') + self.assertEqual(u'{1}{0}'.format(D(10), D(20)), u'2010') + self.assertEqual(u'{0._x.x}'.format(C(D(u'abc'))), u'abc') + self.assertEqual(u'{0[0]}'.format([u'abc', u'def']), u'abc') + self.assertEqual(u'{0[1]}'.format([u'abc', u'def']), u'def') + self.assertEqual(u'{0[1][0]}'.format([u'abc', [u'def']]), u'def') + self.assertEqual(u'{0[1][0].x}'.format(['abc', [D(u'def')]]), u'def') + + # strings + self.assertEqual(u'{0:.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:.3s}'.format(u'ab'), u'ab') + self.assertEqual(u'{0:.3s}'.format(u'abcdef'), u'abc') + self.assertEqual(u'{0:.0s}'.format(u'abcdef'), u'') + self.assertEqual(u'{0:3.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:2.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:2.2s}'.format(u'abc'), u'ab') + self.assertEqual(u'{0:3.2s}'.format(u'abc'), u'ab ') + self.assertEqual(u'{0:x<0s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<5s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<6s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<7s}'.format(u'result'), u'resultx') + self.assertEqual(u'{0:x<8s}'.format(u'result'), u'resultxx') + self.assertEqual(u'{0: <7s}'.format(u'result'), u'result ') + self.assertEqual(u'{0:<7s}'.format(u'result'), u'result ') + self.assertEqual(u'{0:>7s}'.format(u'result'), u' result') + self.assertEqual(u'{0:>8s}'.format(u'result'), u' result') + self.assertEqual(u'{0:^8s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:^9s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:^10s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:10000}'.format(u'a'), u'a' + u' ' * 9999) + self.assertEqual(u'{0:10000}'.format(u''), u' ' * 10000) + self.assertEqual(u'{0:10000000}'.format(u''), u' ' * 10000000) + + # format specifiers for user defined type + self.assertEqual(u'{0:abc}'.format(C()), u'abc') + + # !r and !s coersions + self.assertEqual(u'{0!s}'.format(u'Hello'), u'Hello') + self.assertEqual(u'{0!s:}'.format(u'Hello'), u'Hello') + self.assertEqual(u'{0!s:15}'.format(u'Hello'), u'Hello ') + self.assertEqual(u'{0!s:15s}'.format(u'Hello'), u'Hello ') + self.assertEqual(u'{0!r}'.format(u'Hello'), u"u'Hello'") + self.assertEqual(u'{0!r:}'.format(u'Hello'), u"u'Hello'") + self.assertEqual(u'{0!r}'.format(F(u'Hello')), u'F(Hello)') + + # test fallback to object.__format__ + self.assertEqual(u'{0}'.format({}), u'{}') + self.assertEqual(u'{0}'.format([]), u'[]') + self.assertEqual(u'{0}'.format([1]), u'[1]') + self.assertEqual(u'{0}'.format(E(u'data')), u'E(data)') + self.assertEqual(u'{0:^10}'.format(E(u'data')), u' E(data) ') + self.assertEqual(u'{0:^10s}'.format(E(u'data')), u' E(data) ') + self.assertEqual(u'{0:d}'.format(G(u'data')), u'G(data)') + self.assertEqual(u'{0:>15s}'.format(G(u'data')), u' string is data') + self.assertEqual(u'{0!s}'.format(G(u'data')), u'string is data') + + self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007, + month=8, + day=27)), + "date: 2007-08-27") + + # test deriving from a builtin type and overriding __format__ + self.assertEqual("{0}".format(J(10)), "20") + + + # string format specifiers + self.assertEqual('{0:}'.format('a'), 'a') + + # computed format specifiers + self.assertEqual("{0:.{1}}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{1}s}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{precision}s}".format('hello world', precision=5), 'hello') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width=10, precision=5), 'hello ') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), 'hello ') + + # test various errors + self.assertRaises(ValueError, '{'.format) + self.assertRaises(ValueError, '}'.format) + self.assertRaises(ValueError, 'a{'.format) + self.assertRaises(ValueError, 'a}'.format) + self.assertRaises(ValueError, '{a'.format) + self.assertRaises(ValueError, '}a'.format) + self.assertRaises(IndexError, '{0}'.format) + self.assertRaises(IndexError, '{1}'.format, 'abc') + self.assertRaises(KeyError, '{x}'.format) + self.assertRaises(ValueError, "}{".format) + self.assertRaises(ValueError, "{".format) + self.assertRaises(ValueError, "}".format) + self.assertRaises(ValueError, "abc{0:{}".format) + self.assertRaises(ValueError, "{0".format) + self.assertRaises(IndexError, "{0.}".format) + self.assertRaises(ValueError, "{0.}".format, 0) + self.assertRaises(IndexError, "{0[}".format) + self.assertRaises(ValueError, "{0[}".format, []) + self.assertRaises(KeyError, "{0]}".format) + self.assertRaises(ValueError, "{0.[]}".format, 0) + self.assertRaises(ValueError, "{0..foo}".format, 0) + self.assertRaises(ValueError, "{0[0}".format, 0) + self.assertRaises(ValueError, "{0[0:foo}".format, 0) + self.assertRaises(KeyError, "{c]}".format) + self.assertRaises(ValueError, "{{ {{{0}}".format, 0) + self.assertRaises(ValueError, "{0}}".format, 0) + self.assertRaises(KeyError, "{foo}".format, bar=3) + self.assertRaises(ValueError, "{0!x}".format, 3) + self.assertRaises(ValueError, "{0!}".format, 0) + self.assertRaises(ValueError, "{0!rs}".format, 0) + self.assertRaises(ValueError, "{!}".format) + self.assertRaises(ValueError, "{:}".format) + self.assertRaises(ValueError, "{:s}".format) + self.assertRaises(ValueError, "{}".format) + + # can't have a replacement on the field name portion + self.assertRaises(TypeError, '{0[{1}]}'.format, 'abcdefg', 4) + + # exceed maximum recursion depth + self.assertRaises(ValueError, "{0:{1:{2}}}".format, 'abc', 's', '') + self.assertRaises(ValueError, "{0:{1:{2:{3:{4:{5:{6}}}}}}}".format, + 0, 1, 2, 3, 4, 5, 6, 7) + + # string format spec errors + self.assertRaises(ValueError, "{0:-s}".format, '') + self.assertRaises(ValueError, format, "", "-") + self.assertRaises(ValueError, "{0:=s}".format, '') def test_main(): test_support.run_unittest(__name__) Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Sun Feb 17 20:46:49 2008 @@ -281,6 +281,8 @@ Python/getopt.o \ Python/pystrcmp.o \ Python/pystrtod.o \ + Python/formatter_unicode.o \ + Python/formatter_string.o \ Python/$(DYNLOADFILE) \ $(LIBOBJS) \ $(MACHDEP_OBJS) \ @@ -515,6 +517,20 @@ Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h +Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c \ + $(srcdir)/Objects/stringlib/string_format.h \ + $(srcdir)/Objects/stringlib/unicodedefs.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/partition.h + +Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \ + $(srcdir)/Objects/stringlib/formatter.h + +Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \ + $(srcdir)/Objects/stringlib/formatter.h + ############################################################################ # Header files Modified: python/trunk/Modules/datetimemodule.c ============================================================================== --- python/trunk/Modules/datetimemodule.c (original) +++ python/trunk/Modules/datetimemodule.c Sun Feb 17 20:46:49 2008 @@ -2469,6 +2469,32 @@ return result; } +static PyObject * +date_format(PyDateTime_Date *self, PyObject *args) +{ + PyObject *format; + + if (!PyArg_ParseTuple(args, "O:__format__", &format)) + return NULL; + + /* Check for str or unicode */ + if (PyString_Check(format)) { + /* If format is zero length, return str(self) */ + if (PyString_GET_SIZE(format) == 0) + return PyObject_Str((PyObject *)self); + } else if (PyUnicode_Check(format)) { + /* If format is zero length, return str(self) */ + if (PyUnicode_GET_SIZE(format) == 0) + return PyObject_Unicode((PyObject *)self); + } else { + PyErr_Format(PyExc_ValueError, + "__format__ expects str or unicode, not %.200s", + Py_TYPE(format)->tp_name); + return NULL; + } + return PyObject_CallMethod((PyObject *)self, "strftime", "O", format); +} + /* ISO methods. */ static PyObject * @@ -2633,6 +2659,9 @@ {"strftime", (PyCFunction)date_strftime, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("format -> strftime() style string.")}, + {"__format__", (PyCFunction)date_format, METH_VARARGS, + PyDoc_STR("Formats self with strftime.")}, + {"timetuple", (PyCFunction)date_timetuple, METH_NOARGS, PyDoc_STR("Return time tuple, compatible with time.localtime().")}, @@ -3418,6 +3447,9 @@ {"strftime", (PyCFunction)time_strftime, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("format -> strftime() style string.")}, + {"__format__", (PyCFunction)date_format, METH_VARARGS, + PyDoc_STR("Formats self with strftime.")}, + {"utcoffset", (PyCFunction)time_utcoffset, METH_NOARGS, PyDoc_STR("Return self.tzinfo.utcoffset(self).")}, Modified: python/trunk/Objects/abstract.c ============================================================================== --- python/trunk/Objects/abstract.c (original) +++ python/trunk/Objects/abstract.c Sun Feb 17 20:46:49 2008 @@ -348,6 +348,138 @@ return 0; } +PyObject * +PyObject_Format(PyObject* obj, PyObject *format_spec) +{ + static PyObject * str__format__ = NULL; + PyObject *empty = NULL; + PyObject *result = NULL; + int spec_is_unicode; + int result_is_unicode; + + /* Initialize cached value */ + if (str__format__ == NULL) { + /* Initialize static variable needed by _PyType_Lookup */ + str__format__ = PyString_InternFromString("__format__"); + if (str__format__ == NULL) + goto done; + } + + /* If no format_spec is provided, use an empty string */ + if (format_spec == NULL) { + empty = PyString_FromStringAndSize(NULL, 0); + format_spec = empty; + } + + /* Check the format_spec type, and make sure it's str or unicode */ + if (PyUnicode_Check(format_spec)) + spec_is_unicode = 1; + else if (PyString_Check(format_spec)) + spec_is_unicode = 0; + else { + PyErr_Format(PyExc_TypeError, + "format expects arg 2 to be string " + "or unicode, not %.100s", Py_TYPE(format_spec)->tp_name); + goto done; + } + + /* Make sure the type is initialized. float gets initialized late */ + if (Py_TYPE(obj)->tp_dict == NULL) + if (PyType_Ready(Py_TYPE(obj)) < 0) + goto done; + + /* Check for a __format__ method and call it. */ + if (PyInstance_Check(obj)) { + /* We're an instance of a classic class */ + PyObject *bound_method = PyObject_GetAttr(obj, + str__format__); + if (bound_method != NULL) { + result = PyObject_CallFunctionObjArgs(bound_method, + format_spec, + NULL); + Py_DECREF(bound_method); + } else { + PyObject *self_as_str; + PyObject *format_method; + + PyErr_Clear(); + /* Per the PEP, convert to str (or unicode, + depending on the type of the format + specifier). For new-style classes, this + logic is done by object.__format__(). */ + if (spec_is_unicode) + self_as_str = PyObject_Unicode(obj); + else + self_as_str = PyObject_Str(obj); + if (self_as_str == NULL) + goto done; + + /* Then call str.__format__ on that result */ + format_method = PyObject_GetAttr(self_as_str, + str__format__); + if (format_method == NULL) { + Py_DECREF(self_as_str); + goto done; + } + result = PyObject_CallFunctionObjArgs(format_method, + format_spec, + NULL); + Py_DECREF(self_as_str); + Py_DECREF(format_method); + if (result == NULL) + goto done; + } + } else { + /* Not an instance of a classic class, use the code + from py3k */ + + /* Find the (unbound!) __format__ method (a borrowed + reference) */ + PyObject *method = _PyType_Lookup(Py_TYPE(obj), + str__format__); + if (method == NULL) { + PyErr_Format(PyExc_TypeError, + "Type %.100s doesn't define __format__", + Py_TYPE(obj)->tp_name); + goto done; + } + /* And call it, binding it to the value */ + result = PyObject_CallFunctionObjArgs(method, obj, + format_spec, NULL); + } + + if (result == NULL) + goto done; + + /* Check the result type, and make sure it's str or unicode */ + if (PyUnicode_Check(result)) + result_is_unicode = 1; + else if (PyString_Check(result)) + result_is_unicode = 0; + else { + PyErr_Format(PyExc_TypeError, + "%.100s.__format__ must return string or " + "unicode, not %.100s", Py_TYPE(obj)->tp_name, + Py_TYPE(result)->tp_name); + Py_DECREF(result); + result = NULL; + goto done; + } + + /* Convert to unicode, if needed. Required if spec is unicode + and result is str */ + if (spec_is_unicode && !result_is_unicode) { + PyObject *tmp = PyObject_Unicode(result); + /* This logic works whether or not tmp is NULL */ + Py_DECREF(result); + result = tmp; + } + +done: + Py_XDECREF(empty); + return result; +} + /* Operations on numbers */ int Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Sun Feb 17 20:46:49 2008 @@ -10,6 +10,7 @@ #include #include +#include "formatter_string.h" #if !defined(__STDC__) extern double fmod(double, double); @@ -1434,6 +1435,46 @@ return PyFloat_FromDouble(0.0); } +static PyObject * +float__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_float__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_float__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + +PyDoc_STRVAR(float__format__doc, +"float.__format__(format_spec) -> string\n" +"\n" +"Formats the float according to format_spec."); + + static PyMethodDef float_methods[] = { {"conjugate", (PyCFunction)float_float, METH_NOARGS, "Returns self, the complex conjugate of any float."}, @@ -1446,6 +1487,8 @@ METH_O|METH_CLASS, float_getformat_doc}, {"__setformat__", (PyCFunction)float_setformat, METH_VARARGS|METH_CLASS, float_setformat_doc}, + {"__format__", (PyCFunction)float__format__, + METH_VARARGS, float__format__doc}, {NULL, NULL} /* sentinel */ }; Modified: python/trunk/Objects/intobject.c ============================================================================== --- python/trunk/Objects/intobject.c (original) +++ python/trunk/Objects/intobject.c Sun Feb 17 20:46:49 2008 @@ -3,6 +3,7 @@ #include "Python.h" #include +#include "formatter_string.h" static PyObject *int_int(PyIntObject *v); @@ -1108,12 +1109,47 @@ return PyString_FromStringAndSize(p, &buf[sizeof(buf)] - p); } +static PyObject * +int__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_int__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_int__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + static PyMethodDef int_methods[] = { {"conjugate", (PyCFunction)int_int, METH_NOARGS, "Returns self, the complex conjugate of any int."}, {"__trunc__", (PyCFunction)int_int, METH_NOARGS, "Truncating an Integral returns itself."}, {"__getnewargs__", (PyCFunction)int_getnewargs, METH_NOARGS}, + {"__format__", (PyCFunction)int__format__, METH_VARARGS}, {NULL, NULL} /* sentinel */ }; Modified: python/trunk/Objects/longobject.c ============================================================================== --- python/trunk/Objects/longobject.c (original) +++ python/trunk/Objects/longobject.c Sun Feb 17 20:46:49 2008 @@ -6,6 +6,7 @@ #include "Python.h" #include "longintrepr.h" +#include "formatter_string.h" #include @@ -3380,12 +3381,47 @@ return PyLong_FromLong((intptr_t)context); } +static PyObject * +long__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_long__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_long__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + static PyMethodDef long_methods[] = { {"conjugate", (PyCFunction)long_long, METH_NOARGS, "Returns self, the complex conjugate of any long."}, {"__trunc__", (PyCFunction)long_long, METH_NOARGS, "Truncating an Integral returns itself."}, {"__getnewargs__", (PyCFunction)long_getnewargs, METH_NOARGS}, + {"__format__", (PyCFunction)long__format__, METH_VARARGS}, {NULL, NULL} /* sentinel */ }; Added: python/trunk/Objects/stringlib/formatter.h ============================================================================== --- (empty file) +++ python/trunk/Objects/stringlib/formatter.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,980 @@ +/* implements the string, long, and float formatters. that is, + string.__format__, etc. */ + +/* Before including this, you must include either: + stringlib/unicodedefs.h + stringlib/stringdefs.h + + Also, you should define the names: + FORMAT_STRING + FORMAT_LONG + FORMAT_FLOAT + to be whatever you want the public names of these functions to + be. These are the only non-static functions defined here. +*/ + +#define ALLOW_PARENS_FOR_SIGN 0 + +/* + get_integer consumes 0 or more decimal digit characters from an + input string, updates *result with the corresponding positive + integer, and returns the number of digits consumed. + + returns -1 on error. +*/ +static int +get_integer(STRINGLIB_CHAR **ptr, STRINGLIB_CHAR *end, + Py_ssize_t *result) +{ + Py_ssize_t accumulator, digitval, oldaccumulator; + int numdigits; + accumulator = numdigits = 0; + for (;;(*ptr)++, numdigits++) { + if (*ptr >= end) + break; + digitval = STRINGLIB_TODECIMAL(**ptr); + if (digitval < 0) + break; + /* + This trick was copied from old Unicode format code. It's cute, + but would really suck on an old machine with a slow divide + implementation. Fortunately, in the normal case we do not + expect too many digits. + */ + oldaccumulator = accumulator; + accumulator *= 10; + if ((accumulator+10)/10 != oldaccumulator+1) { + PyErr_Format(PyExc_ValueError, + "Too many decimal digits in format string"); + return -1; + } + accumulator += digitval; + } + *result = accumulator; + return numdigits; +} + +/************************************************************************/ +/*********** standard format specifier parsing **************************/ +/************************************************************************/ + +/* returns true if this character is a specifier alignment token */ +Py_LOCAL_INLINE(int) +is_alignment_token(STRINGLIB_CHAR c) +{ + switch (c) { + case '<': case '>': case '=': case '^': + return 1; + default: + return 0; + } +} + +/* returns true if this character is a sign element */ +Py_LOCAL_INLINE(int) +is_sign_element(STRINGLIB_CHAR c) +{ + switch (c) { + case ' ': case '+': case '-': +#if ALLOW_PARENS_FOR_SIGN + case '(': +#endif + return 1; + default: + return 0; + } +} + + +typedef struct { + STRINGLIB_CHAR fill_char; + STRINGLIB_CHAR align; + STRINGLIB_CHAR sign; + Py_ssize_t width; + Py_ssize_t precision; + STRINGLIB_CHAR type; +} InternalFormatSpec; + +/* + ptr points to the start of the format_spec, end points just past its end. + fills in format with the parsed information. + returns 1 on success, 0 on failure. + if failure, sets the exception +*/ +static int +parse_internal_render_format_spec(PyObject *format_spec, + InternalFormatSpec *format, + char default_type) +{ + STRINGLIB_CHAR *ptr = STRINGLIB_STR(format_spec); + STRINGLIB_CHAR *end = ptr + STRINGLIB_LEN(format_spec); + + /* end-ptr is used throughout this code to specify the length of + the input string */ + + Py_ssize_t specified_width; + + format->fill_char = '\0'; + format->align = '\0'; + format->sign = '\0'; + format->width = -1; + format->precision = -1; + format->type = default_type; + + /* If the second char is an alignment token, + then parse the fill char */ + if (end-ptr >= 2 && is_alignment_token(ptr[1])) { + format->align = ptr[1]; + format->fill_char = ptr[0]; + ptr += 2; + } + else if (end-ptr >= 1 && is_alignment_token(ptr[0])) { + format->align = ptr[0]; + ptr++; + } + + /* Parse the various sign options */ + if (end-ptr >= 1 && is_sign_element(ptr[0])) { + format->sign = ptr[0]; + ptr++; +#if ALLOW_PARENS_FOR_SIGN + if (end-ptr >= 1 && ptr[0] == ')') { + ptr++; + } +#endif + } + + /* The special case for 0-padding (backwards compat) */ + if (format->fill_char == '\0' && end-ptr >= 1 && ptr[0] == '0') { + format->fill_char = '0'; + if (format->align == '\0') { + format->align = '='; + } + ptr++; + } + + /* XXX add error checking */ + specified_width = get_integer(&ptr, end, &format->width); + + /* if specified_width is 0, we didn't consume any characters for + the width. in that case, reset the width to -1, because + get_integer() will have set it to zero */ + if (specified_width == 0) { + format->width = -1; + } + + /* Parse field precision */ + if (end-ptr && ptr[0] == '.') { + ptr++; + + /* XXX add error checking */ + specified_width = get_integer(&ptr, end, &format->precision); + + /* not having a precision after a dot is an error */ + if (specified_width == 0) { + PyErr_Format(PyExc_ValueError, + "Format specifier missing precision"); + return 0; + } + + } + + /* Finally, parse the type field */ + + if (end-ptr > 1) { + /* invalid conversion spec */ + PyErr_Format(PyExc_ValueError, "Invalid conversion specification"); + return 0; + } + + if (end-ptr == 1) { + format->type = ptr[0]; + ptr++; + } + + return 1; +} + +#if defined FORMAT_FLOAT || defined FORMAT_LONG +/************************************************************************/ +/*********** common routines for numeric formatting *********************/ +/************************************************************************/ + +/* describes the layout for an integer, see the comment in + _calc_integer_widths() for details */ +typedef struct { + Py_ssize_t n_lpadding; + Py_ssize_t n_spadding; + Py_ssize_t n_rpadding; + char lsign; + Py_ssize_t n_lsign; + char rsign; + Py_ssize_t n_rsign; + Py_ssize_t n_total; /* just a convenience, it's derivable from the + other fields */ +} NumberFieldWidths; + +/* not all fields of format are used. for example, precision is + unused. should this take discrete params in order to be more clear + about what it does? or is passing a single format parameter easier + and more efficient enough to justify a little obfuscation? */ +static void +calc_number_widths(NumberFieldWidths *r, STRINGLIB_CHAR actual_sign, + Py_ssize_t n_digits, const InternalFormatSpec *format) +{ + r->n_lpadding = 0; + r->n_spadding = 0; + r->n_rpadding = 0; + r->lsign = '\0'; + r->n_lsign = 0; + r->rsign = '\0'; + r->n_rsign = 0; + + /* the output will look like: + | | + | | + | | + + lsign and rsign are computed from format->sign and the actual + sign of the number + + digits is already known + + the total width is either given, or computed from the + actual digits + + only one of lpadding, spadding, and rpadding can be non-zero, + and it's calculated from the width and other fields + */ + + /* compute the various parts we're going to write */ + if (format->sign == '+') { + /* always put a + or - */ + r->n_lsign = 1; + r->lsign = (actual_sign == '-' ? '-' : '+'); + } +#if ALLOW_PARENS_FOR_SIGN + else if (format->sign == '(') { + if (actual_sign == '-') { + r->n_lsign = 1; + r->lsign = '('; + r->n_rsign = 1; + r->rsign = ')'; + } + } +#endif + else if (format->sign == ' ') { + r->n_lsign = 1; + r->lsign = (actual_sign == '-' ? '-' : ' '); + } + else { + /* non specified, or the default (-) */ + if (actual_sign == '-') { + r->n_lsign = 1; + r->lsign = '-'; + } + } + + /* now the number of padding characters */ + if (format->width == -1) { + /* no padding at all, nothing to do */ + } + else { + /* see if any padding is needed */ + if (r->n_lsign + n_digits + r->n_rsign >= format->width) { + /* no padding needed, we're already bigger than the + requested width */ + } + else { + /* determine which of left, space, or right padding is + needed */ + Py_ssize_t padding = format->width - + (r->n_lsign + n_digits + r->n_rsign); + if (format->align == '<') + r->n_rpadding = padding; + else if (format->align == '>') + r->n_lpadding = padding; + else if (format->align == '^') { + r->n_lpadding = padding / 2; + r->n_rpadding = padding - r->n_lpadding; + } + else if (format->align == '=') + r->n_spadding = padding; + else + r->n_lpadding = padding; + } + } + r->n_total = r->n_lpadding + r->n_lsign + r->n_spadding + + n_digits + r->n_rsign + r->n_rpadding; +} + +/* fill in the non-digit parts of a numbers's string representation, + as determined in _calc_integer_widths(). returns the pointer to + where the digits go. */ +static STRINGLIB_CHAR * +fill_number(STRINGLIB_CHAR *p_buf, const NumberFieldWidths *spec, + Py_ssize_t n_digits, STRINGLIB_CHAR fill_char) +{ + STRINGLIB_CHAR* p_digits; + + if (spec->n_lpadding) { + STRINGLIB_FILL(p_buf, fill_char, spec->n_lpadding); + p_buf += spec->n_lpadding; + } + if (spec->n_lsign == 1) { + *p_buf++ = spec->lsign; + } + if (spec->n_spadding) { + STRINGLIB_FILL(p_buf, fill_char, spec->n_spadding); + p_buf += spec->n_spadding; + } + p_digits = p_buf; + p_buf += n_digits; + if (spec->n_rsign == 1) { + *p_buf++ = spec->rsign; + } + if (spec->n_rpadding) { + STRINGLIB_FILL(p_buf, fill_char, spec->n_rpadding); + p_buf += spec->n_rpadding; + } + return p_digits; +} +#endif /* FORMAT_FLOAT || FORMAT_LONG */ + +/************************************************************************/ +/*********** string formatting ******************************************/ +/************************************************************************/ + +static PyObject * +format_string_internal(PyObject *value, const InternalFormatSpec *format) +{ + Py_ssize_t width; /* total field width */ + Py_ssize_t lpad; + STRINGLIB_CHAR *dst; + STRINGLIB_CHAR *src = STRINGLIB_STR(value); + Py_ssize_t len = STRINGLIB_LEN(value); + PyObject *result = NULL; + + /* sign is not allowed on strings */ + if (format->sign != '\0') { + PyErr_SetString(PyExc_ValueError, + "Sign not allowed in string format specifier"); + goto done; + } + + /* '=' alignment not allowed on strings */ + if (format->align == '=') { + PyErr_SetString(PyExc_ValueError, + "'=' alignment not allowed " + "in string format specifier"); + goto done; + } + + /* if precision is specified, output no more that format.precision + characters */ + if (format->precision >= 0 && len >= format->precision) { + len = format->precision; + } + + if (format->width >= 0) { + width = format->width; + + /* but use at least len characters */ + if (len > width) { + width = len; + } + } + else { + /* not specified, use all of the chars and no more */ + width = len; + } + + /* allocate the resulting string */ + result = STRINGLIB_NEW(NULL, width); + if (result == NULL) + goto done; + + /* now write into that space */ + dst = STRINGLIB_STR(result); + + /* figure out how much leading space we need, based on the + aligning */ + if (format->align == '>') + lpad = width - len; + else if (format->align == '^') + lpad = (width - len) / 2; + else + lpad = 0; + + /* if right aligning, increment the destination allow space on the + left */ + memcpy(dst + lpad, src, len * sizeof(STRINGLIB_CHAR)); + + /* do any padding */ + if (width > len) { + STRINGLIB_CHAR fill_char = format->fill_char; + if (fill_char == '\0') { + /* use the default, if not specified */ + fill_char = ' '; + } + + /* pad on left */ + if (lpad) + STRINGLIB_FILL(dst, fill_char, lpad); + + /* pad on right */ + if (width - len - lpad) + STRINGLIB_FILL(dst + len + lpad, fill_char, width - len - lpad); + } + +done: + return result; +} + + +/************************************************************************/ +/*********** long formatting ********************************************/ +/************************************************************************/ + +#if defined FORMAT_LONG || defined FORMAT_INT +typedef PyObject* +(*IntOrLongToString)(PyObject *value, int base); + +static PyObject * +format_int_or_long_internal(PyObject *value, const InternalFormatSpec *format, + IntOrLongToString tostring) +{ + PyObject *result = NULL; + PyObject *tmp = NULL; + STRINGLIB_CHAR *pnumeric_chars; + STRINGLIB_CHAR numeric_char; + STRINGLIB_CHAR sign = '\0'; + STRINGLIB_CHAR *p; + Py_ssize_t n_digits; /* count of digits need from the computed + string */ + Py_ssize_t n_leading_chars; + NumberFieldWidths spec; + long x; + + /* no precision allowed on integers */ + if (format->precision != -1) { + PyErr_SetString(PyExc_ValueError, + "Precision not allowed in integer format specifier"); + goto done; + } + + + /* special case for character formatting */ + if (format->type == 'c') { + /* error to specify a sign */ + if (format->sign != '\0') { + PyErr_SetString(PyExc_ValueError, + "Sign not allowed with integer" + " format specifier 'c'"); + goto done; + } + + /* taken from unicodeobject.c formatchar() */ + /* Integer input truncated to a character */ +/* XXX: won't work for int */ + x = PyLong_AsLong(value); + if (x == -1 && PyErr_Occurred()) + goto done; +#ifdef Py_UNICODE_WIDE + if (x < 0 || x > 0x10ffff) { + PyErr_SetString(PyExc_OverflowError, + "%c arg not in range(0x110000) " + "(wide Python build)"); + goto done; + } +#else + if (x < 0 || x > 0xffff) { + PyErr_SetString(PyExc_OverflowError, + "%c arg not in range(0x10000) " + "(narrow Python build)"); + goto done; + } +#endif + numeric_char = (STRINGLIB_CHAR)x; + pnumeric_chars = &numeric_char; + n_digits = 1; + } + else { + int base; + int leading_chars_to_skip; /* Number of characters added by + PyNumber_ToBase that we want to + skip over. */ + + /* Compute the base and how many characters will be added by + PyNumber_ToBase */ + switch (format->type) { + case 'b': + base = 2; + leading_chars_to_skip = 2; /* 0b */ + break; + case 'o': + base = 8; + leading_chars_to_skip = 2; /* 0o */ + break; + case 'x': + case 'X': + base = 16; + leading_chars_to_skip = 2; /* 0x */ + break; + default: /* shouldn't be needed, but stops a compiler warning */ + case 'd': + base = 10; + leading_chars_to_skip = 0; + break; + } + + /* Do the hard part, converting to a string in a given base */ + tmp = tostring(value, base); + if (tmp == NULL) + goto done; + + pnumeric_chars = STRINGLIB_STR(tmp); + n_digits = STRINGLIB_LEN(tmp); + + /* Remember not to modify what pnumeric_chars points to. it + might be interned. Only modify it after we copy it into a + newly allocated output buffer. */ + + /* Is a sign character present in the output? If so, remember it + and skip it */ + sign = pnumeric_chars[0]; + if (sign == '-') { + ++leading_chars_to_skip; + } + + /* Skip over the leading chars (0x, 0b, etc.) */ + n_digits -= leading_chars_to_skip; + pnumeric_chars += leading_chars_to_skip; + } + + /* Calculate the widths of the various leading and trailing parts */ + calc_number_widths(&spec, sign, n_digits, format); + + /* Allocate a new string to hold the result */ + result = STRINGLIB_NEW(NULL, spec.n_total); + if (!result) + goto done; + p = STRINGLIB_STR(result); + + /* Fill in the digit parts */ + n_leading_chars = spec.n_lpadding + spec.n_lsign + spec.n_spadding; + memmove(p + n_leading_chars, + pnumeric_chars, + n_digits * sizeof(STRINGLIB_CHAR)); + + /* if X, convert to uppercase */ + if (format->type == 'X') { + Py_ssize_t t; + for (t = 0; t < n_digits; t++) + p[t + n_leading_chars] = STRINGLIB_TOUPPER(p[t + n_leading_chars]); + } + + /* Fill in the non-digit parts */ + fill_number(p, &spec, n_digits, + format->fill_char == '\0' ? ' ' : format->fill_char); + +done: + Py_XDECREF(tmp); + return result; +} +#endif /* defined FORMAT_LONG || defined FORMAT_INT */ + +/************************************************************************/ +/*********** float formatting *******************************************/ +/************************************************************************/ + +#ifdef FORMAT_FLOAT +#if STRINGLIB_IS_UNICODE +/* taken from unicodeobject.c */ +static Py_ssize_t +strtounicode(Py_UNICODE *buffer, const char *charbuffer) +{ + register Py_ssize_t i; + Py_ssize_t len = strlen(charbuffer); + for (i = len - 1; i >= 0; i--) + buffer[i] = (Py_UNICODE) charbuffer[i]; + + return len; +} +#endif + +/* the callback function to call to do the actual float formatting. + it matches the definition of PyOS_ascii_formatd */ +typedef char* +(*DoubleSnprintfFunction)(char *buffer, size_t buf_len, + const char *format, double d); + +/* just a wrapper to make PyOS_snprintf look like DoubleSnprintfFunction */ +static char* +snprintf_double(char *buffer, size_t buf_len, const char *format, double d) +{ + PyOS_snprintf(buffer, buf_len, format, d); + return NULL; +} + +/* see FORMATBUFLEN in unicodeobject.c */ +#define FLOAT_FORMATBUFLEN 120 + +/* much of this is taken from unicodeobject.c */ +/* use type instead of format->type, so that it can be overridden by + format_number() */ +static PyObject * +_format_float(STRINGLIB_CHAR type, PyObject *value, + const InternalFormatSpec *format, + DoubleSnprintfFunction snprintf) +{ + /* fmt = '%.' + `prec` + `type` + '%%' + worst case length = 2 + 10 (len of INT_MAX) + 1 + 2 = 15 (use 20)*/ + char fmt[20]; + + /* taken from unicodeobject.c */ + /* Worst case length calc to ensure no buffer overrun: + + 'g' formats: + fmt = %#.g + buf = '-' + [0-9]*prec + '.' + 'e+' + (longest exp + for any double rep.) + len = 1 + prec + 1 + 2 + 5 = 9 + prec + + 'f' formats: + buf = '-' + [0-9]*x + '.' + [0-9]*prec (with x < 50) + len = 1 + 50 + 1 + prec = 52 + prec + + If prec=0 the effective precision is 1 (the leading digit is + always given), therefore increase the length by one. + + */ + char charbuf[FLOAT_FORMATBUFLEN]; + Py_ssize_t n_digits; + double x; + Py_ssize_t precision = format->precision; + PyObject *result = NULL; + STRINGLIB_CHAR sign; + char* trailing = ""; + STRINGLIB_CHAR *p; + NumberFieldWidths spec; + +#if STRINGLIB_IS_UNICODE + Py_UNICODE unicodebuf[FLOAT_FORMATBUFLEN]; +#endif + + /* first, do the conversion as 8-bit chars, using the platform's + snprintf. then, if needed, convert to unicode. */ + + /* 'F' is the same as 'f', per the PEP */ + if (type == 'F') + type = 'f'; + + x = PyFloat_AsDouble(value); + + if (x == -1.0 && PyErr_Occurred()) + goto done; + + if (type == '%') { + type = 'f'; + x *= 100; + trailing = "%"; + } + + if (precision < 0) + precision = 6; + if (type == 'f' && (fabs(x) / 1e25) >= 1e25) + type = 'g'; + + /* cast "type", because if we're in unicode we need to pass a + 8-bit char. this is safe, because we've restricted what "type" + can be */ + PyOS_snprintf(fmt, sizeof(fmt), "%%.%" PY_FORMAT_SIZE_T "d%c", precision, + (char)type); + + /* call the passed in function to do the actual formatting */ + snprintf(charbuf, sizeof(charbuf), fmt, x); + + /* adding trailing to fmt with PyOS_snprintf doesn't work, not + sure why. we'll just concatentate it here, no harm done. we + know we can't have a buffer overflow from the fmt size + analysis */ + strcat(charbuf, trailing); + + /* rather than duplicate the code for snprintf for both unicode + and 8 bit strings, we just use the 8 bit version and then + convert to unicode in a separate code path. that's probably + the lesser of 2 evils. */ +#if STRINGLIB_IS_UNICODE + n_digits = strtounicode(unicodebuf, charbuf); + p = unicodebuf; +#else + /* compute the length. I believe this is done because the return + value from snprintf above is unreliable */ + n_digits = strlen(charbuf); + p = charbuf; +#endif + + /* is a sign character present in the output? if so, remember it + and skip it */ + sign = p[0]; + if (sign == '-') { + p++; + n_digits--; + } + + calc_number_widths(&spec, sign, n_digits, format); + + /* allocate a string with enough space */ + result = STRINGLIB_NEW(NULL, spec.n_total); + if (result == NULL) + goto done; + + /* fill in the non-digit parts */ + fill_number(STRINGLIB_STR(result), &spec, n_digits, + format->fill_char == '\0' ? ' ' : format->fill_char); + + /* fill in the digit parts */ + memmove(STRINGLIB_STR(result) + + (spec.n_lpadding + spec.n_lsign + spec.n_spadding), + p, + n_digits * sizeof(STRINGLIB_CHAR)); + +done: + return result; +} + +static PyObject * +format_float_internal(PyObject *value, const InternalFormatSpec *format) +{ + if (format->type == 'n') + return _format_float('f', value, format, snprintf_double); + else + return _format_float(format->type, value, format, PyOS_ascii_formatd); +} +#endif /* FORMAT_FLOAT */ + +/************************************************************************/ +/*********** built in formatters ****************************************/ +/************************************************************************/ +#ifdef FORMAT_STRING +PyObject * +FORMAT_STRING(PyObject* value, PyObject* args) +{ + PyObject *format_spec; + PyObject *result = NULL; +#if PY_VERSION_HEX < 0x03000000 + PyObject *tmp = NULL; +#endif + InternalFormatSpec format; + + /* If 2.x, we accept either str or unicode, and try to convert it + to the right type. In 3.x, we insist on only unicode */ +#if PY_VERSION_HEX >= 0x03000000 + if (!PyArg_ParseTuple(args, STRINGLIB_PARSE_CODE ":__format__", + &format_spec)) + goto done; +#else + /* If 2.x, convert format_spec to the same type as value */ + /* This is to allow things like u''.format('') */ + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + goto done; + if (!(PyString_Check(format_spec) || PyUnicode_Check(format_spec))) { + PyErr_Format(PyExc_TypeError, "__format__ arg must be str " + "or unicode, not %s", Py_TYPE(format_spec)->tp_name); + goto done; + } + tmp = STRINGLIB_TOSTR(format_spec); + if (tmp == NULL) + goto done; + format_spec = tmp; +#endif + + /* check for the special case of zero length format spec, make + it equivalent to str(value) */ + if (STRINGLIB_LEN(format_spec) == 0) { + result = STRINGLIB_TOSTR(value); + goto done; + } + + + /* parse the format_spec */ + if (!parse_internal_render_format_spec(format_spec, &format, 's')) + goto done; + + /* type conversion? */ + switch (format.type) { + case 's': + /* no type conversion needed, already a string. do the formatting */ + result = format_string_internal(value, &format); + break; + default: + /* unknown */ + PyErr_Format(PyExc_ValueError, "Unknown conversion type %c", + format.type); + goto done; + } + +done: +#if PY_VERSION_HEX < 0x03000000 + Py_XDECREF(tmp); +#endif + return result; +} +#endif /* FORMAT_STRING */ + +#if defined FORMAT_LONG || defined FORMAT_INT +static PyObject* +format_int_or_long(PyObject* value, PyObject* args, IntOrLongToString tostring) +{ + PyObject *format_spec; + PyObject *result = NULL; + PyObject *tmp = NULL; + InternalFormatSpec format; + + if (!PyArg_ParseTuple(args, STRINGLIB_PARSE_CODE ":__format__", + &format_spec)) + goto done; + + /* check for the special case of zero length format spec, make + it equivalent to str(value) */ + if (STRINGLIB_LEN(format_spec) == 0) { + result = STRINGLIB_TOSTR(value); + goto done; + } + + /* parse the format_spec */ + if (!parse_internal_render_format_spec(format_spec, &format, 'd')) + goto done; + + /* type conversion? */ + switch (format.type) { + case 'b': + case 'c': + case 'd': + case 'o': + case 'x': + case 'X': + /* no type conversion needed, already an int (or long). do + the formatting */ + result = format_int_or_long_internal(value, &format, tostring); + break; + + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + case 'n': + case '%': + /* convert to float */ + tmp = PyNumber_Float(value); + if (tmp == NULL) + goto done; + result = format_float_internal(value, &format); + break; + + default: + /* unknown */ + PyErr_Format(PyExc_ValueError, "Unknown conversion type %c", + format.type); + goto done; + } + +done: + Py_XDECREF(tmp); + return result; +} +#endif /* FORMAT_LONG || defined FORMAT_INT */ + +#ifdef FORMAT_LONG +/* Need to define long_format as a function that will convert a long + to a string. In 3.0, _PyLong_Format has the correct signature. In + 2.x, we need to fudge a few parameters */ +#if PY_VERSION_HEX >= 0x03000000 +#define long_format _PyLong_Format +#else +static PyObject* +long_format(PyObject* value, int base) +{ + /* Convert to base, don't add trailing 'L', and use the new octal + format. We already know this is a long object */ + assert(PyLong_Check(value)); + /* convert to base, don't add 'L', and use the new octal format */ + return _PyLong_Format(value, base, 0, 1); +} +#endif + +PyObject * +FORMAT_LONG(PyObject* value, PyObject* args) +{ + return format_int_or_long(value, args, long_format); +} +#endif /* FORMAT_LONG */ + +#ifdef FORMAT_INT +/* this is only used for 2.x, not 3.0 */ +static PyObject* +int_format(PyObject* value, int base) +{ + /* Convert to base, and use the new octal format. We already + know this is an int object */ + assert(PyInt_Check(value)); + return _PyInt_Format((PyIntObject*)value, base, 1); +} + +PyObject * +FORMAT_INT(PyObject* value, PyObject* args) +{ + return format_int_or_long(value, args, int_format); +} +#endif /* FORMAT_INT */ + +#ifdef FORMAT_FLOAT +PyObject * +FORMAT_FLOAT(PyObject *value, PyObject *args) +{ + PyObject *format_spec; + PyObject *result = NULL; + InternalFormatSpec format; + + if (!PyArg_ParseTuple(args, STRINGLIB_PARSE_CODE ":__format__", &format_spec)) + goto done; + + /* check for the special case of zero length format spec, make + it equivalent to str(value) */ + if (STRINGLIB_LEN(format_spec) == 0) { + result = STRINGLIB_TOSTR(value); + goto done; + } + + /* parse the format_spec */ + if (!parse_internal_render_format_spec(format_spec, &format, 'g')) + goto done; + + /* type conversion? */ + switch (format.type) { + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + case 'n': + case '%': + /* no conversion, already a float. do the formatting */ + result = format_float_internal(value, &format); + break; + + default: + /* unknown */ + PyErr_Format(PyExc_ValueError, "Unknown conversion type %c", + format.type); + goto done; + } + +done: + return result; +} +#endif /* FORMAT_FLOAT */ Added: python/trunk/Objects/stringlib/string_format.h ============================================================================== --- (empty file) +++ python/trunk/Objects/stringlib/string_format.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,1214 @@ +/* + string_format.h -- implementation of string.format(). + + It uses the Objects/stringlib conventions, so that it can be + compiled for both unicode and string objects. +*/ + + +/* Defines for Python 2.6 compatability */ +#if PY_VERSION_HEX < 0x03000000 +#define PyLong_FromSsize_t _PyLong_FromSsize_t +#endif + +/* Defines for more efficiently reallocating the string buffer */ +#define INITIAL_SIZE_INCREMENT 100 +#define SIZE_MULTIPLIER 2 +#define MAX_SIZE_INCREMENT 3200 + + +/************************************************************************/ +/*********** Global data structures and forward declarations *********/ +/************************************************************************/ + +/* + A SubString consists of the characters between two string or + unicode pointers. +*/ +typedef struct { + STRINGLIB_CHAR *ptr; + STRINGLIB_CHAR *end; +} SubString; + + +/* forward declaration for recursion */ +static PyObject * +build_string(SubString *input, PyObject *args, PyObject *kwargs, + int recursion_depth); + + + +/************************************************************************/ +/************************** Utility functions ************************/ +/************************************************************************/ + +/* fill in a SubString from a pointer and length */ +Py_LOCAL_INLINE(void) +SubString_init(SubString *str, STRINGLIB_CHAR *p, Py_ssize_t len) +{ + str->ptr = p; + if (p == NULL) + str->end = NULL; + else + str->end = str->ptr + len; +} + +/* return a new string. if str->ptr is NULL, return None */ +Py_LOCAL_INLINE(PyObject *) +SubString_new_object(SubString *str) +{ + if (str->ptr == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return STRINGLIB_NEW(str->ptr, str->end - str->ptr); +} + +/* return a new string. if str->ptr is NULL, return None */ +Py_LOCAL_INLINE(PyObject *) +SubString_new_object_or_empty(SubString *str) +{ + if (str->ptr == NULL) { + return STRINGLIB_NEW(NULL, 0); + } + return STRINGLIB_NEW(str->ptr, str->end - str->ptr); +} + +/************************************************************************/ +/*********** Output string management functions ****************/ +/************************************************************************/ + +typedef struct { + STRINGLIB_CHAR *ptr; + STRINGLIB_CHAR *end; + PyObject *obj; + Py_ssize_t size_increment; +} OutputString; + +/* initialize an OutputString object, reserving size characters */ +static int +output_initialize(OutputString *output, Py_ssize_t size) +{ + output->obj = STRINGLIB_NEW(NULL, size); + if (output->obj == NULL) + return 0; + + output->ptr = STRINGLIB_STR(output->obj); + output->end = STRINGLIB_LEN(output->obj) + output->ptr; + output->size_increment = INITIAL_SIZE_INCREMENT; + + return 1; +} + +/* + output_extend reallocates the output string buffer. + It returns a status: 0 for a failed reallocation, + 1 for success. +*/ + +static int +output_extend(OutputString *output, Py_ssize_t count) +{ + STRINGLIB_CHAR *startptr = STRINGLIB_STR(output->obj); + Py_ssize_t curlen = output->ptr - startptr; + Py_ssize_t maxlen = curlen + count + output->size_increment; + + if (STRINGLIB_RESIZE(&output->obj, maxlen) < 0) + return 0; + startptr = STRINGLIB_STR(output->obj); + output->ptr = startptr + curlen; + output->end = startptr + maxlen; + if (output->size_increment < MAX_SIZE_INCREMENT) + output->size_increment *= SIZE_MULTIPLIER; + return 1; +} + +/* + output_data dumps characters into our output string + buffer. + + In some cases, it has to reallocate the string. + + It returns a status: 0 for a failed reallocation, + 1 for success. +*/ +static int +output_data(OutputString *output, const STRINGLIB_CHAR *s, Py_ssize_t count) +{ + if ((count > output->end - output->ptr) && !output_extend(output, count)) + return 0; + memcpy(output->ptr, s, count * sizeof(STRINGLIB_CHAR)); + output->ptr += count; + return 1; +} + +/************************************************************************/ +/*********** Format string parsing -- integers and identifiers *********/ +/************************************************************************/ + +static Py_ssize_t +get_integer(const SubString *str) +{ + Py_ssize_t accumulator = 0; + Py_ssize_t digitval; + Py_ssize_t oldaccumulator; + STRINGLIB_CHAR *p; + + /* empty string is an error */ + if (str->ptr >= str->end) + return -1; + + for (p = str->ptr; p < str->end; p++) { + digitval = STRINGLIB_TODECIMAL(*p); + if (digitval < 0) + return -1; + /* + This trick was copied from old Unicode format code. It's cute, + but would really suck on an old machine with a slow divide + implementation. Fortunately, in the normal case we do not + expect too many digits. + */ + oldaccumulator = accumulator; + accumulator *= 10; + if ((accumulator+10)/10 != oldaccumulator+1) { + PyErr_Format(PyExc_ValueError, + "Too many decimal digits in format string"); + return -1; + } + accumulator += digitval; + } + return accumulator; +} + +/************************************************************************/ +/******** Functions to get field objects and specification strings ******/ +/************************************************************************/ + +/* do the equivalent of obj.name */ +static PyObject * +getattr(PyObject *obj, SubString *name) +{ + PyObject *newobj; + PyObject *str = SubString_new_object(name); + if (str == NULL) + return NULL; + newobj = PyObject_GetAttr(obj, str); + Py_DECREF(str); + return newobj; +} + +/* do the equivalent of obj[idx], where obj is a sequence */ +static PyObject * +getitem_sequence(PyObject *obj, Py_ssize_t idx) +{ + return PySequence_GetItem(obj, idx); +} + +/* do the equivalent of obj[idx], where obj is not a sequence */ +static PyObject * +getitem_idx(PyObject *obj, Py_ssize_t idx) +{ + PyObject *newobj; + PyObject *idx_obj = PyLong_FromSsize_t(idx); + if (idx_obj == NULL) + return NULL; + newobj = PyObject_GetItem(obj, idx_obj); + Py_DECREF(idx_obj); + return newobj; +} + +/* do the equivalent of obj[name] */ +static PyObject * +getitem_str(PyObject *obj, SubString *name) +{ + PyObject *newobj; + PyObject *str = SubString_new_object(name); + if (str == NULL) + return NULL; + newobj = PyObject_GetItem(obj, str); + Py_DECREF(str); + return newobj; +} + +typedef struct { + /* the entire string we're parsing. we assume that someone else + is managing its lifetime, and that it will exist for the + lifetime of the iterator. can be empty */ + SubString str; + + /* pointer to where we are inside field_name */ + STRINGLIB_CHAR *ptr; +} FieldNameIterator; + + +static int +FieldNameIterator_init(FieldNameIterator *self, STRINGLIB_CHAR *ptr, + Py_ssize_t len) +{ + SubString_init(&self->str, ptr, len); + self->ptr = self->str.ptr; + return 1; +} + +static int +_FieldNameIterator_attr(FieldNameIterator *self, SubString *name) +{ + STRINGLIB_CHAR c; + + name->ptr = self->ptr; + + /* return everything until '.' or '[' */ + while (self->ptr < self->str.end) { + switch (c = *self->ptr++) { + case '[': + case '.': + /* backup so that we this character will be seen next time */ + self->ptr--; + break; + default: + continue; + } + break; + } + /* end of string is okay */ + name->end = self->ptr; + return 1; +} + +static int +_FieldNameIterator_item(FieldNameIterator *self, SubString *name) +{ + int bracket_seen = 0; + STRINGLIB_CHAR c; + + name->ptr = self->ptr; + + /* return everything until ']' */ + while (self->ptr < self->str.end) { + switch (c = *self->ptr++) { + case ']': + bracket_seen = 1; + break; + default: + continue; + } + break; + } + /* make sure we ended with a ']' */ + if (!bracket_seen) { + PyErr_SetString(PyExc_ValueError, "Missing ']' in format string"); + return 0; + } + + /* end of string is okay */ + /* don't include the ']' */ + name->end = self->ptr-1; + return 1; +} + +/* returns 0 on error, 1 on non-error termination, and 2 if it returns a value */ +static int +FieldNameIterator_next(FieldNameIterator *self, int *is_attribute, + Py_ssize_t *name_idx, SubString *name) +{ + /* check at end of input */ + if (self->ptr >= self->str.end) + return 1; + + switch (*self->ptr++) { + case '.': + *is_attribute = 1; + if (_FieldNameIterator_attr(self, name) == 0) + return 0; + *name_idx = -1; + break; + case '[': + *is_attribute = 0; + if (_FieldNameIterator_item(self, name) == 0) + return 0; + *name_idx = get_integer(name); + break; + default: + /* interal error, can't get here */ + assert(0); + return 0; + } + + /* empty string is an error */ + if (name->ptr == name->end) { + PyErr_SetString(PyExc_ValueError, "Empty attribute in format string"); + return 0; + } + + return 2; +} + + +/* input: field_name + output: 'first' points to the part before the first '[' or '.' + 'first_idx' is -1 if 'first' is not an integer, otherwise + it's the value of first converted to an integer + 'rest' is an iterator to return the rest +*/ +static int +field_name_split(STRINGLIB_CHAR *ptr, Py_ssize_t len, SubString *first, + Py_ssize_t *first_idx, FieldNameIterator *rest) +{ + STRINGLIB_CHAR c; + STRINGLIB_CHAR *p = ptr; + STRINGLIB_CHAR *end = ptr + len; + + /* find the part up until the first '.' or '[' */ + while (p < end) { + switch (c = *p++) { + case '[': + case '.': + /* backup so that we this character is available to the + "rest" iterator */ + p--; + break; + default: + continue; + } + break; + } + + /* set up the return values */ + SubString_init(first, ptr, p - ptr); + FieldNameIterator_init(rest, p, end - p); + + /* see if "first" is an integer, in which case it's used as an index */ + *first_idx = get_integer(first); + + /* zero length string is an error */ + if (first->ptr >= first->end) { + PyErr_SetString(PyExc_ValueError, "empty field name"); + goto error; + } + + return 1; +error: + return 0; +} + + +/* + get_field_object returns the object inside {}, before the + format_spec. It handles getindex and getattr lookups and consumes + the entire input string. +*/ +static PyObject * +get_field_object(SubString *input, PyObject *args, PyObject *kwargs) +{ + PyObject *obj = NULL; + int ok; + int is_attribute; + SubString name; + SubString first; + Py_ssize_t index; + FieldNameIterator rest; + + if (!field_name_split(input->ptr, input->end - input->ptr, &first, + &index, &rest)) { + goto error; + } + + if (index == -1) { + /* look up in kwargs */ + PyObject *key = SubString_new_object(&first); + if (key == NULL) + goto error; + if ((kwargs == NULL) || (obj = PyDict_GetItem(kwargs, key)) == NULL) { + PyErr_SetObject(PyExc_KeyError, key); + Py_DECREF(key); + goto error; + } + Py_DECREF(key); + Py_INCREF(obj); + } + else { + /* look up in args */ + obj = PySequence_GetItem(args, index); + if (obj == NULL) + goto error; + } + + /* iterate over the rest of the field_name */ + while ((ok = FieldNameIterator_next(&rest, &is_attribute, &index, + &name)) == 2) { + PyObject *tmp; + + if (is_attribute) + /* getattr lookup "." */ + tmp = getattr(obj, &name); + else + /* getitem lookup "[]" */ + if (index == -1) + tmp = getitem_str(obj, &name); + else + if (PySequence_Check(obj)) + tmp = getitem_sequence(obj, index); + else + /* not a sequence */ + tmp = getitem_idx(obj, index); + if (tmp == NULL) + goto error; + + /* assign to obj */ + Py_DECREF(obj); + obj = tmp; + } + /* end of iterator, this is the non-error case */ + if (ok == 1) + return obj; +error: + Py_XDECREF(obj); + return NULL; +} + +/************************************************************************/ +/***************** Field rendering functions **************************/ +/************************************************************************/ + +/* + render_field() is the main function in this section. It takes the + field object and field specification string generated by + get_field_and_spec, and renders the field into the output string. + + render_field calls fieldobj.__format__(format_spec) method, and + appends to the output. +*/ +static int +render_field(PyObject *fieldobj, SubString *format_spec, OutputString *output) +{ + int ok = 0; + PyObject *result = NULL; + + /* we need to create an object out of the pointers we have */ + PyObject *format_spec_object = SubString_new_object_or_empty(format_spec); + if (format_spec_object == NULL) + goto done; + + result = PyObject_Format(fieldobj, format_spec_object); + if (result == NULL) + goto done; + + ok = output_data(output, + STRINGLIB_STR(result), STRINGLIB_LEN(result)); +done: + Py_DECREF(format_spec_object); + Py_XDECREF(result); + return ok; +} + +static int +parse_field(SubString *str, SubString *field_name, SubString *format_spec, + STRINGLIB_CHAR *conversion) +{ + STRINGLIB_CHAR c = 0; + + /* initialize these, as they may be empty */ + *conversion = '\0'; + SubString_init(format_spec, NULL, 0); + + /* search for the field name. it's terminated by the end of the + string, or a ':' or '!' */ + field_name->ptr = str->ptr; + while (str->ptr < str->end) { + switch (c = *(str->ptr++)) { + case ':': + case '!': + break; + default: + continue; + } + break; + } + + if (c == '!' || c == ':') { + /* we have a format specifier and/or a conversion */ + /* don't include the last character */ + field_name->end = str->ptr-1; + + /* the format specifier is the rest of the string */ + format_spec->ptr = str->ptr; + format_spec->end = str->end; + + /* see if there's a conversion specifier */ + if (c == '!') { + /* there must be another character present */ + if (format_spec->ptr >= format_spec->end) { + PyErr_SetString(PyExc_ValueError, + "end of format while looking for conversion " + "specifier"); + return 0; + } + *conversion = *(format_spec->ptr++); + + /* if there is another character, it must be a colon */ + if (format_spec->ptr < format_spec->end) { + c = *(format_spec->ptr++); + if (c != ':') { + PyErr_SetString(PyExc_ValueError, + "expected ':' after format specifier"); + return 0; + } + } + } + + return 1; + + } + else { + /* end of string, there's no format_spec or conversion */ + field_name->end = str->ptr; + return 1; + } +} + +/************************************************************************/ +/******* Output string allocation and escape-to-markup processing ******/ +/************************************************************************/ + +/* MarkupIterator breaks the string into pieces of either literal + text, or things inside {} that need to be marked up. it is + designed to make it easy to wrap a Python iterator around it, for + use with the Formatter class */ + +typedef struct { + SubString str; +} MarkupIterator; + +static int +MarkupIterator_init(MarkupIterator *self, STRINGLIB_CHAR *ptr, Py_ssize_t len) +{ + SubString_init(&self->str, ptr, len); + return 1; +} + +/* returns 0 on error, 1 on non-error termination, and 2 if it got a + string (or something to be expanded) */ +static int +MarkupIterator_next(MarkupIterator *self, SubString *literal, + SubString *field_name, SubString *format_spec, + STRINGLIB_CHAR *conversion, + int *format_spec_needs_expanding) +{ + int at_end; + STRINGLIB_CHAR c = 0; + STRINGLIB_CHAR *start; + int count; + Py_ssize_t len; + int markup_follows = 0; + + /* initialize all of the output variables */ + SubString_init(literal, NULL, 0); + SubString_init(field_name, NULL, 0); + SubString_init(format_spec, NULL, 0); + *conversion = '\0'; + *format_spec_needs_expanding = 0; + + /* No more input, end of iterator. This is the normal exit + path. */ + if (self->str.ptr >= self->str.end) + return 1; + + start = self->str.ptr; + + /* First read any literal text. Read until the end of string, an + escaped '{' or '}', or an unescaped '{'. In order to never + allocate memory and so I can just pass pointers around, if + there's an escaped '{' or '}' then we'll return the literal + including the brace, but no format object. The next time + through, we'll return the rest of the literal, skipping past + the second consecutive brace. */ + while (self->str.ptr < self->str.end) { + switch (c = *(self->str.ptr++)) { + case '{': + case '}': + markup_follows = 1; + break; + default: + continue; + } + break; + } + + at_end = self->str.ptr >= self->str.end; + len = self->str.ptr - start; + + if ((c == '}') && (at_end || (c != *self->str.ptr))) { + PyErr_SetString(PyExc_ValueError, "Single '}' encountered " + "in format string"); + return 0; + } + if (at_end && c == '{') { + PyErr_SetString(PyExc_ValueError, "Single '{' encountered " + "in format string"); + return 0; + } + if (!at_end) { + if (c == *self->str.ptr) { + /* escaped } or {, skip it in the input. there is no + markup object following us, just this literal text */ + self->str.ptr++; + markup_follows = 0; + } + else + len--; + } + + /* record the literal text */ + literal->ptr = start; + literal->end = start + len; + + if (!markup_follows) + return 2; + + /* this is markup, find the end of the string by counting nested + braces. note that this prohibits escaped braces, so that + format_specs cannot have braces in them. */ + count = 1; + + start = self->str.ptr; + + /* we know we can't have a zero length string, so don't worry + about that case */ + while (self->str.ptr < self->str.end) { + switch (c = *(self->str.ptr++)) { + case '{': + /* the format spec needs to be recursively expanded. + this is an optimization, and not strictly needed */ + *format_spec_needs_expanding = 1; + count++; + break; + case '}': + count--; + if (count <= 0) { + /* we're done. parse and get out */ + SubString s; + + SubString_init(&s, start, self->str.ptr - 1 - start); + if (parse_field(&s, field_name, format_spec, conversion) == 0) + return 0; + + /* a zero length field_name is an error */ + if (field_name->ptr == field_name->end) { + PyErr_SetString(PyExc_ValueError, "zero length field name " + "in format"); + return 0; + } + + /* success */ + return 2; + } + break; + } + } + + /* end of string while searching for matching '}' */ + PyErr_SetString(PyExc_ValueError, "unmatched '{' in format"); + return 0; +} + + +/* do the !r or !s conversion on obj */ +static PyObject * +do_conversion(PyObject *obj, STRINGLIB_CHAR conversion) +{ + /* XXX in pre-3.0, do we need to convert this to unicode, since it + might have returned a string? */ + switch (conversion) { + case 'r': + return PyObject_Repr(obj); + case 's': + return STRINGLIB_TOSTR(obj); + default: + PyErr_Format(PyExc_ValueError, + "Unknown converion specifier %c", + conversion); + return NULL; + } +} + +/* given: + + {field_name!conversion:format_spec} + + compute the result and write it to output. + format_spec_needs_expanding is an optimization. if it's false, + just output the string directly, otherwise recursively expand the + format_spec string. */ + +static int +output_markup(SubString *field_name, SubString *format_spec, + int format_spec_needs_expanding, STRINGLIB_CHAR conversion, + OutputString *output, PyObject *args, PyObject *kwargs, + int recursion_depth) +{ + PyObject *tmp = NULL; + PyObject *fieldobj = NULL; + SubString expanded_format_spec; + SubString *actual_format_spec; + int result = 0; + + /* convert field_name to an object */ + fieldobj = get_field_object(field_name, args, kwargs); + if (fieldobj == NULL) + goto done; + + if (conversion != '\0') { + tmp = do_conversion(fieldobj, conversion); + if (tmp == NULL) + goto done; + + /* do the assignment, transferring ownership: fieldobj = tmp */ + Py_DECREF(fieldobj); + fieldobj = tmp; + tmp = NULL; + } + + /* if needed, recurively compute the format_spec */ + if (format_spec_needs_expanding) { + tmp = build_string(format_spec, args, kwargs, recursion_depth-1); + if (tmp == NULL) + goto done; + + /* note that in the case we're expanding the format string, + tmp must be kept around until after the call to + render_field. */ + SubString_init(&expanded_format_spec, + STRINGLIB_STR(tmp), STRINGLIB_LEN(tmp)); + actual_format_spec = &expanded_format_spec; + } + else + actual_format_spec = format_spec; + + if (render_field(fieldobj, actual_format_spec, output) == 0) + goto done; + + result = 1; + +done: + Py_XDECREF(fieldobj); + Py_XDECREF(tmp); + + return result; +} + +/* + do_markup is the top-level loop for the format() method. It + searches through the format string for escapes to markup codes, and + calls other functions to move non-markup text to the output, + and to perform the markup to the output. +*/ +static int +do_markup(SubString *input, PyObject *args, PyObject *kwargs, + OutputString *output, int recursion_depth) +{ + MarkupIterator iter; + int format_spec_needs_expanding; + int result; + SubString literal; + SubString field_name; + SubString format_spec; + STRINGLIB_CHAR conversion; + + MarkupIterator_init(&iter, input->ptr, input->end - input->ptr); + while ((result = MarkupIterator_next(&iter, &literal, &field_name, + &format_spec, &conversion, + &format_spec_needs_expanding)) == 2) { + if (!output_data(output, literal.ptr, literal.end - literal.ptr)) + return 0; + if (field_name.ptr != field_name.end) + if (!output_markup(&field_name, &format_spec, + format_spec_needs_expanding, conversion, output, + args, kwargs, recursion_depth)) + return 0; + } + return result; +} + + +/* + build_string allocates the output string and then + calls do_markup to do the heavy lifting. +*/ +static PyObject * +build_string(SubString *input, PyObject *args, PyObject *kwargs, + int recursion_depth) +{ + OutputString output; + PyObject *result = NULL; + Py_ssize_t count; + + output.obj = NULL; /* needed so cleanup code always works */ + + /* check the recursion level */ + if (recursion_depth <= 0) { + PyErr_SetString(PyExc_ValueError, + "Max string recursion exceeded"); + goto done; + } + + /* initial size is the length of the format string, plus the size + increment. seems like a reasonable default */ + if (!output_initialize(&output, + input->end - input->ptr + + INITIAL_SIZE_INCREMENT)) + goto done; + + if (!do_markup(input, args, kwargs, &output, recursion_depth)) { + goto done; + } + + count = output.ptr - STRINGLIB_STR(output.obj); + if (STRINGLIB_RESIZE(&output.obj, count) < 0) { + goto done; + } + + /* transfer ownership to result */ + result = output.obj; + output.obj = NULL; + +done: + Py_XDECREF(output.obj); + return result; +} + +/************************************************************************/ +/*********** main routine ***********************************************/ +/************************************************************************/ + +/* this is the main entry point */ +static PyObject * +do_string_format(PyObject *self, PyObject *args, PyObject *kwargs) +{ + SubString input; + + /* PEP 3101 says only 2 levels, so that + "{0:{1}}".format('abc', 's') # works + "{0:{1:{2}}}".format('abc', 's', '') # fails + */ + int recursion_depth = 2; + + SubString_init(&input, STRINGLIB_STR(self), STRINGLIB_LEN(self)); + return build_string(&input, args, kwargs, recursion_depth); +} + + + +/************************************************************************/ +/*********** formatteriterator ******************************************/ +/************************************************************************/ + +/* This is used to implement string.Formatter.vparse(). It exists so + Formatter can share code with the built in unicode.format() method. + It's really just a wrapper around MarkupIterator that is callable + from Python. */ + +typedef struct { + PyObject_HEAD + + STRINGLIB_OBJECT *str; + + MarkupIterator it_markup; +} formatteriterobject; + +static void +formatteriter_dealloc(formatteriterobject *it) +{ + Py_XDECREF(it->str); + PyObject_FREE(it); +} + +/* returns a tuple: + (literal, field_name, format_spec, conversion) + + literal is any literal text to output. might be zero length + field_name is the string before the ':'. might be None + format_spec is the string after the ':'. mibht be None + conversion is either None, or the string after the '!' +*/ +static PyObject * +formatteriter_next(formatteriterobject *it) +{ + SubString literal; + SubString field_name; + SubString format_spec; + STRINGLIB_CHAR conversion; + int format_spec_needs_expanding; + int result = MarkupIterator_next(&it->it_markup, &literal, &field_name, + &format_spec, &conversion, + &format_spec_needs_expanding); + + /* all of the SubString objects point into it->str, so no + memory management needs to be done on them */ + assert(0 <= result && result <= 2); + if (result == 0 || result == 1) + /* if 0, error has already been set, if 1, iterator is empty */ + return NULL; + else { + PyObject *literal_str = NULL; + PyObject *field_name_str = NULL; + PyObject *format_spec_str = NULL; + PyObject *conversion_str = NULL; + PyObject *tuple = NULL; + int has_field = field_name.ptr != field_name.end; + + literal_str = SubString_new_object(&literal); + if (literal_str == NULL) + goto done; + + field_name_str = SubString_new_object(&field_name); + if (field_name_str == NULL) + goto done; + + /* if field_name is non-zero length, return a string for + format_spec (even if zero length), else return None */ + format_spec_str = (has_field ? + SubString_new_object_or_empty : + SubString_new_object)(&format_spec); + if (format_spec_str == NULL) + goto done; + + /* if the conversion is not specified, return a None, + otherwise create a one length string with the conversion + character */ + if (conversion == '\0') { + conversion_str = Py_None; + Py_INCREF(conversion_str); + } + else + conversion_str = STRINGLIB_NEW(&conversion, 1); + if (conversion_str == NULL) + goto done; + + tuple = PyTuple_Pack(4, literal_str, field_name_str, format_spec_str, + conversion_str); + done: + Py_XDECREF(literal_str); + Py_XDECREF(field_name_str); + Py_XDECREF(format_spec_str); + Py_XDECREF(conversion_str); + return tuple; + } +} + +static PyMethodDef formatteriter_methods[] = { + {NULL, NULL} /* sentinel */ +}; + +static PyTypeObject PyFormatterIter_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "formatteriterator", /* tp_name */ + sizeof(formatteriterobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)formatteriter_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)formatteriter_next, /* tp_iternext */ + formatteriter_methods, /* tp_methods */ + 0, +}; + +/* unicode_formatter_parser is used to implement + string.Formatter.vformat. it parses a string and returns tuples + describing the parsed elements. It's a wrapper around + stringlib/string_format.h's MarkupIterator */ +static PyObject * +formatter_parser(STRINGLIB_OBJECT *self) +{ + formatteriterobject *it; + + it = PyObject_New(formatteriterobject, &PyFormatterIter_Type); + if (it == NULL) + return NULL; + + /* take ownership, give the object to the iterator */ + Py_INCREF(self); + it->str = self; + + /* initialize the contained MarkupIterator */ + MarkupIterator_init(&it->it_markup, + STRINGLIB_STR(self), + STRINGLIB_LEN(self)); + + return (PyObject *)it; +} + + +/************************************************************************/ +/*********** fieldnameiterator ******************************************/ +/************************************************************************/ + + +/* This is used to implement string.Formatter.vparse(). It parses the + field name into attribute and item values. It's a Python-callable + wrapper around FieldNameIterator */ + +typedef struct { + PyObject_HEAD + + STRINGLIB_OBJECT *str; + + FieldNameIterator it_field; +} fieldnameiterobject; + +static void +fieldnameiter_dealloc(fieldnameiterobject *it) +{ + Py_XDECREF(it->str); + PyObject_FREE(it); +} + +/* returns a tuple: + (is_attr, value) + is_attr is true if we used attribute syntax (e.g., '.foo') + false if we used index syntax (e.g., '[foo]') + value is an integer or string +*/ +static PyObject * +fieldnameiter_next(fieldnameiterobject *it) +{ + int result; + int is_attr; + Py_ssize_t idx; + SubString name; + + result = FieldNameIterator_next(&it->it_field, &is_attr, + &idx, &name); + if (result == 0 || result == 1) + /* if 0, error has already been set, if 1, iterator is empty */ + return NULL; + else { + PyObject* result = NULL; + PyObject* is_attr_obj = NULL; + PyObject* obj = NULL; + + is_attr_obj = PyBool_FromLong(is_attr); + if (is_attr_obj == NULL) + goto done; + + /* either an integer or a string */ + if (idx != -1) + obj = PyLong_FromSsize_t(idx); + else + obj = SubString_new_object(&name); + if (obj == NULL) + goto done; + + /* return a tuple of values */ + result = PyTuple_Pack(2, is_attr_obj, obj); + + done: + Py_XDECREF(is_attr_obj); + Py_XDECREF(obj); + return result; + } +} + +static PyMethodDef fieldnameiter_methods[] = { + {NULL, NULL} /* sentinel */ +}; + +static PyTypeObject PyFieldNameIter_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "fieldnameiterator", /* tp_name */ + sizeof(fieldnameiterobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)fieldnameiter_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)fieldnameiter_next, /* tp_iternext */ + fieldnameiter_methods, /* tp_methods */ + 0}; + +/* unicode_formatter_field_name_split is used to implement + string.Formatter.vformat. it takes an PEP 3101 "field name", and + returns a tuple of (first, rest): "first", the part before the + first '.' or '['; and "rest", an iterator for the rest of the field + name. it's a wrapper around stringlib/string_format.h's + field_name_split. The iterator it returns is a + FieldNameIterator */ +static PyObject * +formatter_field_name_split(STRINGLIB_OBJECT *self) +{ + SubString first; + Py_ssize_t first_idx; + fieldnameiterobject *it; + + PyObject *first_obj = NULL; + PyObject *result = NULL; + + it = PyObject_New(fieldnameiterobject, &PyFieldNameIter_Type); + if (it == NULL) + return NULL; + + /* take ownership, give the object to the iterator. this is + just to keep the field_name alive */ + Py_INCREF(self); + it->str = self; + + if (!field_name_split(STRINGLIB_STR(self), + STRINGLIB_LEN(self), + &first, &first_idx, &it->it_field)) + goto done; + + /* first becomes an integer, if possible; else a string */ + if (first_idx != -1) + first_obj = PyLong_FromSsize_t(first_idx); + else + /* convert "first" into a string object */ + first_obj = SubString_new_object(&first); + if (first_obj == NULL) + goto done; + + /* return a tuple of values */ + result = PyTuple_Pack(2, first_obj, it); + +done: + Py_XDECREF(it); + Py_XDECREF(first_obj); + return result; +} Added: python/trunk/Objects/stringlib/stringdefs.h ============================================================================== --- (empty file) +++ python/trunk/Objects/stringlib/stringdefs.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,27 @@ +#ifndef STRINGLIB_STRINGDEFS_H +#define STRINGLIB_STRINGDEFS_H + +/* this is sort of a hack. there's at least one place (formatting + floats) where some stringlib code takes a different path if it's + compiled as unicode. */ +#define STRINGLIB_IS_UNICODE 0 + +#define STRINGLIB_OBJECT PyStringObject +#define STRINGLIB_CHAR char +#define STRINGLIB_TYPE_NAME "string" +#define STRINGLIB_PARSE_CODE "S" +#define STRINGLIB_EMPTY nullstring +#define STRINGLIB_ISDECIMAL(x) ((x >= '0') && (x <= '9')) +#define STRINGLIB_TODECIMAL(x) (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1) +#define STRINGLIB_TOUPPER toupper +#define STRINGLIB_TOLOWER tolower +#define STRINGLIB_FILL memset +#define STRINGLIB_STR PyString_AS_STRING +#define STRINGLIB_LEN PyString_GET_SIZE +#define STRINGLIB_NEW PyString_FromStringAndSize +#define STRINGLIB_RESIZE _PyString_Resize +#define STRINGLIB_CHECK PyString_Check +#define STRINGLIB_CMP memcmp +#define STRINGLIB_TOSTR PyObject_Str + +#endif /* !STRINGLIB_STRINGDEFS_H */ Added: python/trunk/Objects/stringlib/unicodedefs.h ============================================================================== --- (empty file) +++ python/trunk/Objects/stringlib/unicodedefs.h Sun Feb 17 20:46:49 2008 @@ -0,0 +1,52 @@ +#ifndef STRINGLIB_UNICODEDEFS_H +#define STRINGLIB_UNICODEDEFS_H + +/* this is sort of a hack. there's at least one place (formatting + floats) where some stringlib code takes a different path if it's + compiled as unicode. */ +#define STRINGLIB_IS_UNICODE 1 + +#define STRINGLIB_OBJECT PyUnicodeObject +#define STRINGLIB_CHAR Py_UNICODE +#define STRINGLIB_TYPE_NAME "unicode" +#define STRINGLIB_PARSE_CODE "U" +#define STRINGLIB_EMPTY unicode_empty +#define STRINGLIB_ISDECIMAL Py_UNICODE_ISDECIMAL +#define STRINGLIB_TODECIMAL Py_UNICODE_TODECIMAL +#define STRINGLIB_TOUPPER Py_UNICODE_TOUPPER +#define STRINGLIB_TOLOWER Py_UNICODE_TOLOWER +#define STRINGLIB_FILL Py_UNICODE_FILL +#define STRINGLIB_STR PyUnicode_AS_UNICODE +#define STRINGLIB_LEN PyUnicode_GET_SIZE +#define STRINGLIB_NEW PyUnicode_FromUnicode +#define STRINGLIB_RESIZE PyUnicode_Resize +#define STRINGLIB_CHECK PyUnicode_Check + +#if PY_VERSION_HEX < 0x03000000 +#define STRINGLIB_TOSTR PyObject_Unicode +#else +#define STRINGLIB_TOSTR PyObject_Str +#endif + +#define STRINGLIB_WANT_CONTAINS_OBJ 1 + +/* STRINGLIB_CMP was defined as: + +Py_LOCAL_INLINE(int) +STRINGLIB_CMP(const Py_UNICODE* str, const Py_UNICODE* other, Py_ssize_t len) +{ + if (str[0] != other[0]) + return 1; + return memcmp((void*) str, (void*) other, len * sizeof(Py_UNICODE)); +} + +but unfortunately that gives a error if the function isn't used in a file that +includes this file. So, reluctantly convert it to a macro instead. */ + +#define STRINGLIB_CMP(str, other, len) \ + (((str)[0] != (other)[0]) ? \ + 1 : \ + memcmp((void*) (str), (void*) (other), (len) * sizeof(Py_UNICODE))) + + +#endif /* !STRINGLIB_UNICODEDEFS_H */ Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Sun Feb 17 20:46:49 2008 @@ -4,6 +4,8 @@ #include "Python.h" +#include "formatter_string.h" + #include #ifdef COUNT_ALLOCS @@ -771,15 +773,7 @@ /* -------------------------------------------------------------------- */ /* Methods */ -#define STRINGLIB_CHAR char - -#define STRINGLIB_CMP memcmp -#define STRINGLIB_LEN PyString_GET_SIZE -#define STRINGLIB_NEW PyString_FromStringAndSize -#define STRINGLIB_STR PyString_AS_STRING - -#define STRINGLIB_EMPTY nullstring - +#include "stringlib/stringdefs.h" #include "stringlib/fastsearch.h" #include "stringlib/count.h" @@ -3910,6 +3904,19 @@ return Py_BuildValue("(s#)", v->ob_sval, Py_SIZE(v)); } + +#include "stringlib/string_format.h" + +PyDoc_STRVAR(format__doc__, +"S.format(*args, **kwargs) -> unicode\n\ +\n\ +"); + +PyDoc_STRVAR(p_format__doc__, +"S.__format__(format_spec) -> unicode\n\ +\n\ +"); + static PyMethodDef string_methods[] = { @@ -3954,6 +3961,10 @@ {"rjust", (PyCFunction)string_rjust, METH_VARARGS, rjust__doc__}, {"center", (PyCFunction)string_center, METH_VARARGS, center__doc__}, {"zfill", (PyCFunction)string_zfill, METH_VARARGS, zfill__doc__}, + {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__}, + {"__format__", (PyCFunction) string__format__, METH_VARARGS, p_format__doc__}, + {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS}, + {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS}, {"encode", (PyCFunction)string_encode, METH_VARARGS, encode__doc__}, {"decode", (PyCFunction)string_decode, METH_VARARGS, decode__doc__}, {"expandtabs", (PyCFunction)string_expandtabs, METH_VARARGS, Modified: python/trunk/Objects/typeobject.c ============================================================================== --- python/trunk/Objects/typeobject.c (original) +++ python/trunk/Objects/typeobject.c Sun Feb 17 20:46:49 2008 @@ -3210,11 +3210,57 @@ return _common_reduce(self, proto); } +/* + from PEP 3101, this code implements: + + class object: + def __format__(self, format_spec): + if isinstance(format_spec, str): + return format(str(self), format_spec) + elif isinstance(format_spec, unicode): + return format(unicode(self), format_spec) +*/ +static PyObject * +object_format(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + PyObject *self_as_str = NULL; + PyObject *result = NULL; + PyObject *format_meth = NULL; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyUnicode_Check(format_spec)) { + self_as_str = PyObject_Unicode(self); + } else if (PyString_Check(format_spec)) { + self_as_str = PyObject_Str(self); + } else { + PyErr_SetString(PyExc_TypeError, "argument to __format__ must be unicode or str"); + return NULL; + } + + if (self_as_str != NULL) { + /* find the format function */ + format_meth = PyObject_GetAttrString(self_as_str, "__format__"); + if (format_meth != NULL) { + /* and call it */ + result = PyObject_CallFunctionObjArgs(format_meth, format_spec, NULL); + } + } + + Py_XDECREF(self_as_str); + Py_XDECREF(format_meth); + + return result; +} + static PyMethodDef object_methods[] = { {"__reduce_ex__", object_reduce_ex, METH_VARARGS, PyDoc_STR("helper for pickle")}, {"__reduce__", object_reduce, METH_VARARGS, PyDoc_STR("helper for pickle")}, + {"__format__", object_format, METH_VARARGS, + PyDoc_STR("default object formatter")}, {0} }; Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Sun Feb 17 20:46:49 2008 @@ -42,6 +42,8 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" +#include "formatter_unicode.h" + #include "unicodeobject.h" #include "ucnhash.h" @@ -5059,21 +5061,8 @@ /* --- Helpers ------------------------------------------------------------ */ -#define STRINGLIB_CHAR Py_UNICODE - -#define STRINGLIB_LEN PyUnicode_GET_SIZE -#define STRINGLIB_NEW PyUnicode_FromUnicode -#define STRINGLIB_STR PyUnicode_AS_UNICODE - -Py_LOCAL_INLINE(int) -STRINGLIB_CMP(const Py_UNICODE* str, const Py_UNICODE* other, Py_ssize_t len) -{ - if (str[0] != other[0]) - return 1; - return memcmp((void*) str, (void*) other, len * sizeof(Py_UNICODE)); -} +#include "stringlib/unicodedefs.h" -#define STRINGLIB_EMPTY unicode_empty #define FROM_UNICODE #include "stringlib/fastsearch.h" @@ -7802,6 +7791,19 @@ } +/* Implements do_string_format, which is unicode because of stringlib */ +#include "stringlib/string_format.h" + +PyDoc_STRVAR(format__doc__, +"S.format(*args, **kwargs) -> unicode\n\ +\n\ +"); + +PyDoc_STRVAR(p_format__doc__, +"S.__format__(format_spec) -> unicode\n\ +\n\ +"); + static PyObject * unicode_getnewargs(PyUnicodeObject *v) @@ -7855,6 +7857,10 @@ {"isalpha", (PyCFunction) unicode_isalpha, METH_NOARGS, isalpha__doc__}, {"isalnum", (PyCFunction) unicode_isalnum, METH_NOARGS, isalnum__doc__}, {"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__}, + {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__}, + {"__format__", (PyCFunction) unicode__format__, METH_VARARGS, p_format__doc__}, + {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS}, + {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS}, #if 0 {"capwords", (PyCFunction) unicode_capwords, METH_NOARGS, capwords__doc__}, #endif Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Sun Feb 17 20:46:49 2008 @@ -339,6 +339,24 @@ "or string, return the same type, else return a list."); static PyObject * +builtin_format(PyObject *self, PyObject *args) +{ + PyObject *value; + PyObject *format_spec = NULL; + + if (!PyArg_ParseTuple(args, "O|O:format", &value, &format_spec)) + return NULL; + + return PyObject_Format(value, format_spec); +} + +PyDoc_STRVAR(format_doc, +"format(value[, format_spec]) -> string\n\ +\n\ +Returns value.__format__(format_spec)\n\ +format_spec defaults to \"\""); + +static PyObject * builtin_chr(PyObject *self, PyObject *args) { long x; @@ -2359,6 +2377,7 @@ {"eval", builtin_eval, METH_VARARGS, eval_doc}, {"execfile", builtin_execfile, METH_VARARGS, execfile_doc}, {"filter", builtin_filter, METH_VARARGS, filter_doc}, + {"format", builtin_format, METH_VARARGS, format_doc}, {"getattr", builtin_getattr, METH_VARARGS, getattr_doc}, {"globals", (PyCFunction)builtin_globals, METH_NOARGS, globals_doc}, {"hasattr", builtin_hasattr, METH_VARARGS, hasattr_doc}, Added: python/trunk/Python/formatter_string.c ============================================================================== --- (empty file) +++ python/trunk/Python/formatter_string.c Sun Feb 17 20:46:49 2008 @@ -0,0 +1,15 @@ +/***********************************************************************/ +/* Implements the string (as opposed to unicode) version of the + built-in formatters for string, int, float. That is, the versions + of int.__float__, etc., that take and return string objects */ + +#include "Python.h" +#include "formatter_string.h" + +#include "../Objects/stringlib/stringdefs.h" + +#define FORMAT_STRING string__format__ +#define FORMAT_LONG string_long__format__ +#define FORMAT_INT string_int__format__ +#define FORMAT_FLOAT string_float__format__ +#include "../Objects/stringlib/formatter.h" Added: python/trunk/Python/formatter_unicode.c ============================================================================== --- (empty file) +++ python/trunk/Python/formatter_unicode.c Sun Feb 17 20:46:49 2008 @@ -0,0 +1,13 @@ +/* Implements the unicode (as opposed to string) version of the + built-in formatter for unicode. That is, unicode.__format__(). */ + +#include "Python.h" +#include "formatter_unicode.h" + +#include "../Objects/stringlib/unicodedefs.h" + +#define FORMAT_STRING unicode__format__ +/* don't define FORMAT_LONG and FORMAT_FLOAT, since we can live + with only the string versions of those. The builtin format() + will convert them to unicode. */ +#include "../Objects/stringlib/formatter.h" From buildbot at python.org Sun Feb 17 20:54:13 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 19:54:13 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080217195414.0A8DA1E400A@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/932 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 21:07:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 20:07:58 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080217200758.820B31E402B@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/75 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 21:36:12 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 20:36:12 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080217203613.0BEE51E401D@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/641 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Sun Feb 17 21:56:31 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Sun, 17 Feb 2008 21:56:31 +0100 (CET) Subject: [Python-checkins] r60882 - in python/trunk: PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj Message-ID: <20080217205631.94E201E400A@bag.python.org> Author: amaury.forgeotdarc Date: Sun Feb 17 21:56:31 2008 New Revision: 60882 Modified: python/trunk/PC/VC6/pythoncore.dsp python/trunk/PC/VS7.1/pythoncore.vcproj python/trunk/PC/VS8.0/pythoncore.vcproj python/trunk/PCbuild/pythoncore.vcproj Log: Compilation was broken on Windows since the introduction of Advanced String Formatting. Only PCBuild (vs9) was really tested. Changes for older compilers were done manually. Modified: python/trunk/PC/VC6/pythoncore.dsp ============================================================================== --- python/trunk/PC/VC6/pythoncore.dsp (original) +++ python/trunk/PC/VC6/pythoncore.dsp Sun Feb 17 21:56:31 2008 @@ -125,6 +125,10 @@ # End Source File # Begin Source File +SOURCE=..\..\Modules\_collectionsmodule.c +# End Source File +# Begin Source File + SOURCE=..\..\Modules\_csv.c # End Source File # Begin Source File @@ -253,10 +257,6 @@ # End Source File # Begin Source File -SOURCE=..\..\Modules\collectionsmodule.c -# End Source File -# Begin Source File - SOURCE=..\..\Python\compile.c # End Source File # Begin Source File @@ -333,6 +333,14 @@ # End Source File # Begin Source File +SOURCE=..\..\Python\formatter_string.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\formatter_unicode.c +# End Source File +# Begin Source File + SOURCE=..\..\Objects\frameobject.c # End Source File # Begin Source File @@ -583,10 +591,6 @@ # End Source File # Begin Source File -SOURCE=..\..\Modules\rgbimgmodule.c -# End Source File -# Begin Source File - SOURCE=..\..\Modules\rotatingtree.c # End Source File # Begin Source File Modified: python/trunk/PC/VS7.1/pythoncore.vcproj ============================================================================== --- python/trunk/PC/VS7.1/pythoncore.vcproj (original) +++ python/trunk/PC/VS7.1/pythoncore.vcproj Sun Feb 17 21:56:31 2008 @@ -515,6 +515,12 @@ RelativePath="..\..\Objects\floatobject.c"> + + + + + + + + Modified: python/trunk/PCbuild/pythoncore.vcproj ============================================================================== --- python/trunk/PCbuild/pythoncore.vcproj (original) +++ python/trunk/PCbuild/pythoncore.vcproj Sun Feb 17 21:56:31 2008 @@ -1627,6 +1627,14 @@ > + + + + From eric+python-dev at trueblade.com Sun Feb 17 21:58:17 2008 From: eric+python-dev at trueblade.com (Eric Smith) Date: Sun, 17 Feb 2008 15:58:17 -0500 Subject: [Python-checkins] r60882 - in python/trunk: PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj In-Reply-To: <20080217205631.94E201E400A@bag.python.org> References: <20080217205631.94E201E400A@bag.python.org> Message-ID: <47B89FE9.4000007@trueblade.com> Thank you for fixing this. I don't have access to a Windows box with a compiler (despite the fact that I'm typing this on a Windows machine!). Eric. amaury.forgeotdarc wrote: > Author: amaury.forgeotdarc > Date: Sun Feb 17 21:56:31 2008 > New Revision: 60882 > > Modified: > python/trunk/PC/VC6/pythoncore.dsp > python/trunk/PC/VS7.1/pythoncore.vcproj > python/trunk/PC/VS8.0/pythoncore.vcproj > python/trunk/PCbuild/pythoncore.vcproj > Log: > Compilation was broken on Windows since the introduction of Advanced String Formatting. > > Only PCBuild (vs9) was really tested. > Changes for older compilers were done manually. > > > Modified: python/trunk/PC/VC6/pythoncore.dsp > ============================================================================== > --- python/trunk/PC/VC6/pythoncore.dsp (original) > +++ python/trunk/PC/VC6/pythoncore.dsp Sun Feb 17 21:56:31 2008 > @@ -125,6 +125,10 @@ > # End Source File > # Begin Source File > > +SOURCE=..\..\Modules\_collectionsmodule.c > +# End Source File > +# Begin Source File > + > SOURCE=..\..\Modules\_csv.c > # End Source File > # Begin Source File > @@ -253,10 +257,6 @@ > # End Source File > # Begin Source File > > -SOURCE=..\..\Modules\collectionsmodule.c > -# End Source File > -# Begin Source File > - > SOURCE=..\..\Python\compile.c > # End Source File > # Begin Source File > @@ -333,6 +333,14 @@ > # End Source File > # Begin Source File > > +SOURCE=..\..\Python\formatter_string.c > +# End Source File > +# Begin Source File > + > +SOURCE=..\..\Python\formatter_unicode.c > +# End Source File > +# Begin Source File > + > SOURCE=..\..\Objects\frameobject.c > # End Source File > # Begin Source File > @@ -583,10 +591,6 @@ > # End Source File > # Begin Source File > > -SOURCE=..\..\Modules\rgbimgmodule.c > -# End Source File > -# Begin Source File > - > SOURCE=..\..\Modules\rotatingtree.c > # End Source File > # Begin Source File > > Modified: python/trunk/PC/VS7.1/pythoncore.vcproj > ============================================================================== > --- python/trunk/PC/VS7.1/pythoncore.vcproj (original) > +++ python/trunk/PC/VS7.1/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -515,6 +515,12 @@ > RelativePath="..\..\Objects\floatobject.c"> > > + RelativePath="..\..\Python\formatter_string.c"> > + > + + RelativePath="..\..\Python\formatter_unicode.c"> > + > + RelativePath="..\..\Objects\frameobject.c"> > > > Modified: python/trunk/PC/VS8.0/pythoncore.vcproj > ============================================================================== > --- python/trunk/PC/VS8.0/pythoncore.vcproj (original) > +++ python/trunk/PC/VS8.0/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -1627,6 +1627,14 @@ > > > > + RelativePath="..\Python\formatter_string.c" > + > > + > + + RelativePath="..\Python\formatter_unicode.c" > + > > + > + RelativePath="..\..\Python\frozen.c" > > > > > Modified: python/trunk/PCbuild/pythoncore.vcproj > ============================================================================== > --- python/trunk/PCbuild/pythoncore.vcproj (original) > +++ python/trunk/PCbuild/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -1627,6 +1627,14 @@ > > > > + RelativePath="..\Python\formatter_string.c" > + > > + > + + RelativePath="..\Python\formatter_unicode.c" > + > > + > + RelativePath="..\Python\frozen.c" > > > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From python-checkins at python.org Sun Feb 17 22:18:55 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Feb 2008 22:18:55 +0100 (CET) Subject: [Python-checkins] r60883 - python/trunk/Lib/pydoc.py Message-ID: <20080217211855.6AF0E1E400A@bag.python.org> Author: georg.brandl Date: Sun Feb 17 22:18:55 2008 New Revision: 60883 Modified: python/trunk/Lib/pydoc.py Log: #2133: fix HTML color spec. Modified: python/trunk/Lib/pydoc.py ============================================================================== --- python/trunk/Lib/pydoc.py (original) +++ python/trunk/Lib/pydoc.py Sun Feb 17 22:18:55 2008 @@ -664,7 +664,7 @@ contents = self.multicolumn( modules, lambda (key, value), s=self: s.modulelink(value)) result = result + self.bigsection( - 'Modules', '#fffff', '#aa55cc', contents) + 'Modules', '#ffffff', '#aa55cc', contents) if classes: classlist = map(lambda (key, value): value, classes) From buildbot at python.org Sun Feb 17 22:25:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 21:25:19 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080217212519.3E3651E4012@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/201 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 22:44:15 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 21:44:15 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080217214415.7A5491E400A@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2867 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Sun Feb 17 23:44:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 22:44:18 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080217224419.1E8E81E400A@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1460 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 00:50:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 17 Feb 2008 23:50:29 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080217235030.081541E400A@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/682 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From python-checkins at python.org Mon Feb 18 04:43:44 2008 From: python-checkins at python.org (facundo.batista) Date: Mon, 18 Feb 2008 04:43:44 +0100 (CET) Subject: [Python-checkins] r60884 - in python/trunk: Doc/library/inspect.rst Lib/inspect.py Lib/test/test_inspect.py Misc/NEWS Message-ID: <20080218034344.596151E4012@bag.python.org> Author: facundo.batista Date: Mon Feb 18 04:43:43 2008 New Revision: 60884 Modified: python/trunk/Doc/library/inspect.rst python/trunk/Lib/inspect.py python/trunk/Lib/test/test_inspect.py python/trunk/Misc/NEWS Log: Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. Thanks Javi Mansilla for patch review and corrections. Modified: python/trunk/Doc/library/inspect.rst ============================================================================== --- python/trunk/Doc/library/inspect.rst (original) +++ python/trunk/Doc/library/inspect.rst Mon Feb 18 04:43:43 2008 @@ -28,7 +28,7 @@ ----------------- The :func:`getmembers` function retrieves the members of an object such as a -class or module. The eleven functions whose names begin with "is" are mainly +class or module. The fifteen functions whose names begin with "is" are mainly provided as convenient choices for the second argument to :func:`getmembers`. They also help you determine when you can expect to find the following special attributes: @@ -81,6 +81,35 @@ +-----------+-----------------+---------------------------+-------+ | | func_name | (same as __name__) | | +-----------+-----------------+---------------------------+-------+ +| generator | __iter__ | defined to support | | +| | | iteration over container | | ++-----------+-----------------+---------------------------+-------+ +| | close | raises new GeneratorExit | | +| | | exception inside the | | +| | | generator to terminate | | +| | | the iteration | | ++-----------+-----------------+---------------------------+-------+ +| | gi_code | code object | | ++-----------+-----------------+---------------------------+-------+ +| | gi_frame | frame object or possibly | | +| | | None once the generator | | +| | | has been exhausted | | ++-----------+-----------------+---------------------------+-------+ +| | gi_running | set to 1 when generator | | +| | | is executing, 0 otherwise | | ++-----------+-----------------+---------------------------+-------+ +| | next | return the next item from | | +| | | the container | | ++-----------+-----------------+---------------------------+-------+ +| | send | resumes the generator and | | +| | | "sends" a value that | | +| | | becomes the result of the | | +| | | current yield-expression | | ++-----------+-----------------+---------------------------+-------+ +| | throw | used to raise an | | +| | | exception inside the | | +| | | generator | | ++-----------+-----------------+---------------------------+-------+ | traceback | tb_frame | frame object at this | | | | | level | | +-----------+-----------------+---------------------------+-------+ @@ -246,6 +275,13 @@ Return true if the object is a Python function or unnamed (:term:`lambda`) function. +.. function:: isgeneratorfunction(object) + + Return true if the object is a Python generator function. + +.. function:: isgenerator(object) + + Return true if the object is a generator. .. function:: istraceback(object) Modified: python/trunk/Lib/inspect.py ============================================================================== --- python/trunk/Lib/inspect.py (original) +++ python/trunk/Lib/inspect.py Mon Feb 18 04:43:43 2008 @@ -7,8 +7,9 @@ Here are some of the useful functions provided by this module: - ismodule(), isclass(), ismethod(), isfunction(), istraceback(), - isframe(), iscode(), isbuiltin(), isroutine() - check object types + ismodule(), isclass(), ismethod(), isfunction(), isgeneratorfunction(), + isgenerator(), istraceback(), isframe(), iscode(), isbuiltin(), + isroutine() - check object types getmembers() - get members of an object that satisfy a given condition getfile(), getsourcefile(), getsource() - find an object's source code @@ -28,9 +29,19 @@ __author__ = 'Ka-Ping Yee ' __date__ = '1 Jan 2001' -import sys, os, types, string, re, dis, imp, tokenize, linecache +import sys +import os +import types +import string +import re +import dis +import imp +import tokenize +import linecache from operator import attrgetter from collections import namedtuple +from compiler.consts import (CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, + CO_VARKEYWORDS, CO_GENERATOR) # ----------------------------------------------------------- type-checking def ismodule(object): @@ -137,6 +148,33 @@ func_name (same as __name__)""" return isinstance(object, types.FunctionType) +def isgeneratorfunction(object): + """Return true if the object is a user-defined generator function. + + Generator function objects provides same attributes as functions. + + See isfunction.__doc__ for attributes listing.""" + if (isfunction(object) or ismethod(object)) and \ + object.func_code.co_flags & CO_GENERATOR: + return True + +def isgenerator(object): + """Return true if the object is a generator. + + Generator objects provide these attributes: + __iter__ defined to support interation over container + close raises a new GeneratorExit exception inside the + generator to terminate the iteration + gi_code code object + gi_frame frame object or possibly None once the generator has + been exhausted + gi_running set to 1 when generator is executing, 0 otherwise + next return the next item from the container + send resumes the generator and "sends" a value that becomes + the result of the current yield-expression + throw used to raise an exception inside the generator""" + return isinstance(object, types.GeneratorType) + def istraceback(object): """Return true if the object is a traceback. @@ -199,6 +237,10 @@ or ismethod(object) or ismethoddescriptor(object)) +def isgenerator(object): + """Return true if the object is a generator object.""" + return isinstance(object, types.GeneratorType) + def getmembers(object, predicate=None): """Return all members of an object as (name, value) pairs sorted by name. Optionally, only return members that satisfy a given predicate.""" @@ -671,9 +713,6 @@ return walktree(roots, children, None) # ------------------------------------------------ argument list extraction -# These constants are from Python's compile.h. -CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS = 1, 2, 4, 8 - Arguments = namedtuple('Arguments', 'args varargs keywords') def getargs(co): Modified: python/trunk/Lib/test/test_inspect.py ============================================================================== --- python/trunk/Lib/test/test_inspect.py (original) +++ python/trunk/Lib/test/test_inspect.py Mon Feb 18 04:43:43 2008 @@ -11,10 +11,10 @@ # Functions tested in this suite: # ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode, -# isbuiltin, isroutine, getmembers, getdoc, getfile, getmodule, -# getsourcefile, getcomments, getsource, getclasstree, getargspec, -# getargvalues, formatargspec, formatargvalues, currentframe, stack, trace -# isdatadescriptor +# isbuiltin, isroutine, isgenerator, isgeneratorfunction, getmembers, +# getdoc, getfile, getmodule, getsourcefile, getcomments, getsource, +# getclasstree, getargspec, getargvalues, formatargspec, formatargvalues, +# currentframe, stack, trace, isdatadescriptor modfile = mod.__file__ if modfile.endswith(('c', 'o')): @@ -32,23 +32,33 @@ class IsTestBase(unittest.TestCase): predicates = set([inspect.isbuiltin, inspect.isclass, inspect.iscode, inspect.isframe, inspect.isfunction, inspect.ismethod, - inspect.ismodule, inspect.istraceback]) + inspect.ismodule, inspect.istraceback, + inspect.isgenerator, inspect.isgeneratorfunction]) def istest(self, predicate, exp): obj = eval(exp) self.failUnless(predicate(obj), '%s(%s)' % (predicate.__name__, exp)) for other in self.predicates - set([predicate]): + if predicate == inspect.isgeneratorfunction and\ + other == inspect.isfunction: + continue self.failIf(other(obj), 'not %s(%s)' % (other.__name__, exp)) +def generator_function_example(self): + for i in xrange(2): + yield i + class TestPredicates(IsTestBase): - def test_thirteen(self): + def test_fifteen(self): count = len(filter(lambda x:x.startswith('is'), dir(inspect))) - # Doc/lib/libinspect.tex claims there are 13 such functions - expected = 13 + # This test is here for remember you to update Doc/library/inspect.rst + # which claims there are 15 such functions + expected = 15 err_msg = "There are %d (not %d) is* functions" % (count, expected) self.assertEqual(count, expected, err_msg) + def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') @@ -62,6 +72,8 @@ self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') + self.istest(inspect.isgenerator, '(x for x in xrange(2))') + self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Feb 18 04:43:43 2008 @@ -414,6 +414,8 @@ Library ------- +- Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. + - ctypes instances that are not or do not contain pointers can now be pickled. From buildbot at python.org Mon Feb 18 05:09:56 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 04:09:56 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080218040958.447F31E4012@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3128 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildslave/python-trunk/trunk.norwitz-x86/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 05:24:05 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 04:24:05 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080218042406.DEF211E400A@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/836 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 05:54:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 04:54:26 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080218045427.21F971E401E@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/78 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 08:11:45 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 07:11:45 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080218071145.674611E4002@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/86 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From mal at egenix.com Mon Feb 18 10:17:31 2008 From: mal at egenix.com (M.-A. Lemburg) Date: Mon, 18 Feb 2008 10:17:31 +0100 Subject: [Python-checkins] r60882 - in python/trunk: PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj In-Reply-To: <20080217205631.94E201E400A@bag.python.org> References: <20080217205631.94E201E400A@bag.python.org> Message-ID: <47B94D2B.1060906@egenix.com> Was it intended that you removed the rgbimgmodule.c ? On 2008-02-17 21:56, amaury.forgeotdarc wrote: > Author: amaury.forgeotdarc > Date: Sun Feb 17 21:56:31 2008 > New Revision: 60882 > > Modified: > python/trunk/PC/VC6/pythoncore.dsp > python/trunk/PC/VS7.1/pythoncore.vcproj > python/trunk/PC/VS8.0/pythoncore.vcproj > python/trunk/PCbuild/pythoncore.vcproj > Log: > Compilation was broken on Windows since the introduction of Advanced String Formatting. > > Only PCBuild (vs9) was really tested. > Changes for older compilers were done manually. > > > Modified: python/trunk/PC/VC6/pythoncore.dsp > ============================================================================== > --- python/trunk/PC/VC6/pythoncore.dsp (original) > +++ python/trunk/PC/VC6/pythoncore.dsp Sun Feb 17 21:56:31 2008 > @@ -125,6 +125,10 @@ > # End Source File > # Begin Source File > > +SOURCE=..\..\Modules\_collectionsmodule.c > +# End Source File > +# Begin Source File > + > SOURCE=..\..\Modules\_csv.c > # End Source File > # Begin Source File > @@ -253,10 +257,6 @@ > # End Source File > # Begin Source File > > -SOURCE=..\..\Modules\collectionsmodule.c > -# End Source File > -# Begin Source File > - > SOURCE=..\..\Python\compile.c > # End Source File > # Begin Source File > @@ -333,6 +333,14 @@ > # End Source File > # Begin Source File > > +SOURCE=..\..\Python\formatter_string.c > +# End Source File > +# Begin Source File > + > +SOURCE=..\..\Python\formatter_unicode.c > +# End Source File > +# Begin Source File > + > SOURCE=..\..\Objects\frameobject.c > # End Source File > # Begin Source File > @@ -583,10 +591,6 @@ > # End Source File > # Begin Source File > > -SOURCE=..\..\Modules\rgbimgmodule.c > -# End Source File > -# Begin Source File > - > SOURCE=..\..\Modules\rotatingtree.c > # End Source File > # Begin Source File > > Modified: python/trunk/PC/VS7.1/pythoncore.vcproj > ============================================================================== > --- python/trunk/PC/VS7.1/pythoncore.vcproj (original) > +++ python/trunk/PC/VS7.1/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -515,6 +515,12 @@ > RelativePath="..\..\Objects\floatobject.c"> > > + RelativePath="..\..\Python\formatter_string.c"> > + > + + RelativePath="..\..\Python\formatter_unicode.c"> > + > + RelativePath="..\..\Objects\frameobject.c"> > > > Modified: python/trunk/PC/VS8.0/pythoncore.vcproj > ============================================================================== > --- python/trunk/PC/VS8.0/pythoncore.vcproj (original) > +++ python/trunk/PC/VS8.0/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -1627,6 +1627,14 @@ > > > > + RelativePath="..\Python\formatter_string.c" > + > > + > + + RelativePath="..\Python\formatter_unicode.c" > + > > + > + RelativePath="..\..\Python\frozen.c" > > > > > Modified: python/trunk/PCbuild/pythoncore.vcproj > ============================================================================== > --- python/trunk/PCbuild/pythoncore.vcproj (original) > +++ python/trunk/PCbuild/pythoncore.vcproj Sun Feb 17 21:56:31 2008 > @@ -1627,6 +1627,14 @@ > > > > + RelativePath="..\Python\formatter_string.c" > + > > + > + + RelativePath="..\Python\formatter_unicode.c" > + > > + > + RelativePath="..\Python\frozen.c" > > > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Feb 18 2008) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ :::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 From amauryfa at gmail.com Mon Feb 18 11:17:36 2008 From: amauryfa at gmail.com (Amaury Forgeot d'Arc) Date: Mon, 18 Feb 2008 11:17:36 +0100 Subject: [Python-checkins] r60882 - in python/trunk: PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj Message-ID: > Was it intended that you removed the rgbimgmodule.c ? Yes it was. I should have added a line about this in the log message. This the easiest part of a bigger patch which restores support for VC6, and which still lies in my workspace. (rgbimgmodule.c was removed by r55458, collectionsmodule.c was renamed to _collectionsmodule.c by r54020.) -- Amaury Forgeot d'Arc From python-checkins at python.org Mon Feb 18 13:48:45 2008 From: python-checkins at python.org (facundo.batista) Date: Mon, 18 Feb 2008 13:48:45 +0100 (CET) Subject: [Python-checkins] r60885 - in python/trunk: Lib/SimpleHTTPServer.py Lib/test/test_SimpleHTTPServer.py Misc/NEWS Message-ID: <20080218124845.53A9E1E400B@bag.python.org> Author: facundo.batista Date: Mon Feb 18 13:48:43 2008 New Revision: 60885 Added: python/trunk/Lib/test/test_SimpleHTTPServer.py Modified: python/trunk/Lib/SimpleHTTPServer.py python/trunk/Misc/NEWS Log: Issue 1224. Now we support again the double slash in the URL. Thanks Anthony Lenton. Modified: python/trunk/Lib/SimpleHTTPServer.py ============================================================================== --- python/trunk/Lib/SimpleHTTPServer.py (original) +++ python/trunk/Lib/SimpleHTTPServer.py Mon Feb 18 13:48:43 2008 @@ -146,7 +146,8 @@ """ # abandon query parameters - path = urlparse.urlparse(path)[2] + path = path.split('?',1)[0] + path = path.split('#',1)[0] path = posixpath.normpath(urllib.unquote(path)) words = path.split('/') words = filter(None, words) Added: python/trunk/Lib/test/test_SimpleHTTPServer.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_SimpleHTTPServer.py Mon Feb 18 13:48:43 2008 @@ -0,0 +1,41 @@ +""" +These tests only check url parsing for now. +We don't want to require the 'network' resource. +""" + +import os, unittest +from SimpleHTTPServer import SimpleHTTPRequestHandler +from test import test_support + + +class SocketlessRequestHandler (SimpleHTTPRequestHandler): + def __init__(self): + pass + +class SimpleHTTPRequestHandlerTestCase(unittest.TestCase): + """ Test url parsing """ + def setUp (self): + self.translated = os.getcwd() + self.translated = os.path.join(self.translated, 'filename') + self.handler = SocketlessRequestHandler () + + def test_queryArguments (self): + path = self.handler.translate_path ('/filename') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('/filename?foo=bar') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('/filename?a=b&spam=eggs#zot') + self.assertEquals (path, self.translated) + + def test_startWithDoubleSlash (self): + path = self.handler.translate_path ('//filename') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('//filename?foo=bar') + self.assertEquals (path, self.translated) + + +def test_main(): + test_support.run_unittest(SimpleHTTPRequestHandlerTestCase) + +if __name__ == "__main__": + test_main() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Feb 18 13:48:43 2008 @@ -416,6 +416,8 @@ - Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. +- #1224: Fixed bad url parsing when path begins with double slash. + - ctypes instances that are not or do not contain pointers can now be pickled. From buildbot at python.org Mon Feb 18 14:39:17 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 13:39:17 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080218133917.60FE61E4012@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2812 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=24088 and list=[24094] 1 test failed: test_socketserver sincerely, -The Buildbot From python-checkins at python.org Mon Feb 18 14:59:36 2008 From: python-checkins at python.org (christian.heimes) Date: Mon, 18 Feb 2008 14:59:36 +0100 (CET) Subject: [Python-checkins] r60886 - in python/branches/trunk-math: Include/pystate.h Lib/test/test_complex.py Lib/test/test_contextlib.py Lib/test/test_float.py Modules/mathmodule.c Objects/complexobject.c Objects/floatobject.c Python/pystate.c Message-ID: <20080218135936.0FD6A1E4012@bag.python.org> Author: christian.heimes Date: Mon Feb 18 14:59:35 2008 New Revision: 60886 Modified: python/branches/trunk-math/Include/pystate.h python/branches/trunk-math/Lib/test/test_complex.py python/branches/trunk-math/Lib/test/test_contextlib.py python/branches/trunk-math/Lib/test/test_float.py python/branches/trunk-math/Modules/mathmodule.c python/branches/trunk-math/Objects/complexobject.c python/branches/trunk-math/Objects/floatobject.c python/branches/trunk-math/Python/pystate.c Log: Removed IEEE 754 context related code. Mark and I are going to write a proper PEP first. Modified: python/branches/trunk-math/Include/pystate.h ============================================================================== --- python/branches/trunk-math/Include/pystate.h (original) +++ python/branches/trunk-math/Include/pystate.h Mon Feb 18 14:59:35 2008 @@ -44,12 +44,6 @@ /* Py_tracefunc return -1 when raising an exception, or 0 for success. */ typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *); -typedef enum { - PyIEEE_Python, /* Python standard mode */ - PyIEEE_754, /* IEEE 754 mode */ - PyIEEE_Strict, /* strict Python mode */ -} PyIEEE_Mode; - /* The following values are used for 'what' for tracefunc functions: */ #define PyTrace_CALL 0 #define PyTrace_EXCEPTION 1 @@ -101,8 +95,6 @@ PyObject *async_exc; /* Asynchronous exception to raise */ long thread_id; /* Thread id where this tstate was created */ - PyIEEE_Mode float_ieee754; /* floating point operation behavior */ - /* XXX signal handlers should also be here */ } PyThreadState; @@ -197,11 +189,6 @@ /* hook for PyEval_GetFrame(), requested for Psyco */ PyAPI_DATA(PyThreadFrameGetter) _PyThreadState_GetFrame; -/* IEEE floating op state */ -#define PyIEEE_GET() PyThreadState_GET()->float_ieee754 -PyAPI_FUNC(int) PyIEEE_GetState(void); -PyAPI_FUNC(int) PyIEEE_SetState(int); - #ifdef __cplusplus } #endif Modified: python/branches/trunk-math/Lib/test/test_complex.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_complex.py (original) +++ python/branches/trunk-math/Lib/test/test_complex.py Mon Feb 18 14:59:35 2008 @@ -10,7 +10,6 @@ from random import random from math import atan2, pi, isinf, isnan, copysign -from contextlib import ieee754 INF = float("inf") NAN = float("nan") @@ -112,19 +111,6 @@ self.assertAlmostEqual(complex.__floordiv__(3+0j, 1.5+0j), 2) self.assertRaises(ZeroDivisionError, complex.__floordiv__, 3+0j, 0+0j) - def test_div_ieee754(self): - with ieee754(): - self.assertInf(complex(1., 0) / complex(0.), 1, 0) - self.assertInf(complex(-1., 0) / complex(0.), -1, 0) - self.assertInf(complex(-1., 0) / complex(-0.), 1, 0) - self.assertInf(complex(0, 1.) / complex(0.), 0, 1) - self.assertInf(complex(0, -1.) / complex(0.), 0, -1) - self.assertInf(complex(1., 1.) / complex(0.), 1, 1) - self.assertInf(complex(1., -1.) / complex(0.), 1, -1) - self.assertInf(complex(-1., 1.) / complex(0.), -1, 1) - self.assertInf(complex(-1., -1.) / complex(0.), -1, -1) - self.assertInf(complex(0.) / complex(0.), 0, 0) - def test_coerce(self): self.assertRaises(OverflowError, complex.__coerce__, 1+1j, 1L<<10000) Modified: python/branches/trunk-math/Lib/test/test_contextlib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_contextlib.py (original) +++ python/branches/trunk-math/Lib/test/test_contextlib.py Mon Feb 18 14:59:35 2008 @@ -331,25 +331,6 @@ return True self.boilerPlate(lock, locked) -class IEEE754TestCase(unittest.TestCase): - - def setUp(self): - self.state = math.get_ieee754() - - def tearDown(self): - math.set_ieee754(self.state) - - def test_ieee754(self): - with ieee754(): - r1 = 42./0. - r2 = -23./0. - r3 = 0./0. - self.assert_(math.isinf(r1)) - self.assert_(r1 > 0) - self.assert_(math.isinf(r2)) - self.assert_(r2 < 0) - self.assert_(math.isnan(r3)) - # This is needed to make the test actually run under regrtest.py! def test_main(): test_support.run_unittest(__name__) Modified: python/branches/trunk-math/Lib/test/test_float.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_float.py (original) +++ python/branches/trunk-math/Lib/test/test_float.py Mon Feb 18 14:59:35 2008 @@ -217,77 +217,6 @@ self.failIf((0.).is_inf()) -class IEEE754TestCase(unittest.TestCase): - - def setUp(self): - self.old_state = math.set_ieee754(math.IEEE_754) - - def tearDown(self): - math.set_ieee754(self.old_state) - - def test_div(self): - self.assert_(isinf(2./0.)) - self.assert_(2./0. > 0) - self.assert_(isinf(-2./0.)) - self.assert_(-2./0. < 0) - self.assert_(isnan(0./0.)) - - self.assertRaises(ZeroDivisionError, operator.floordiv, 1., 0.) - self.assertRaises(ZeroDivisionError, operator.floordiv, 0., 0.) - self.assertRaises(ZeroDivisionError, operator.div, 1, 0) - self.assertRaises(ZeroDivisionError, operator.div, 0, 0) - - def test_mod(self): - self.assert_(isinf(2. % 0.)) - self.assert_(2. % 0. > 0) - self.assert_(isinf(-2. % 0.)) - self.assert_(-2. % 0. < 0) - self.assert_(isnan(0. % 0.)) - - self.assertRaises(ZeroDivisionError, operator.div, 0, 0) - self.assertRaises(ZeroDivisionError, operator.div, 0, 0) - -class IEEEStrictTestCase(unittest.TestCase): - - def setUp(self): - self.old_state = math.set_ieee754(math.IEEE_STRICT) - - def tearDown(self): - math.set_ieee754(self.old_state) - - def value(self, op, *args): - self.assertRaises(ValueError, op, *args) - - def overflow(self, op, *args): - self.assertRaises(OverflowError, op, *args) - - def test_errors(self): - self.overflow(operator.mul, 1E300, 1E300) - self.overflow(operator.add, INF, 1) - self.overflow(operator.sub, INF, 1) - self.overflow(operator.div, INF, 1) - self.overflow(operator.mul, INF, 1) - self.overflow(operator.pow, INF, 1) - self.value(operator.add, NAN, 1) - self.value(operator.sub, NAN, 1) - self.value(operator.div, NAN, 1) - self.value(operator.mul, NAN, 1) - self.value(operator.pow, NAN, 1) - self.value(operator.mod, INF, 1) - self.assertRaises(ZeroDivisionError, operator.floordiv, 1., 0.) - self.assertRaises(ZeroDivisionError, operator.floordiv, 0., 0.) - self.assertRaises(ZeroDivisionError, operator.div, 1, 0) - self.assertRaises(ZeroDivisionError, operator.div, 0, 0) - - def test_fromstring(self): - self.assertAlmostEqual(float("1E100"), 1E100) - self.assertAlmostEqual(float("-1E308"), -1E308) - self.overflow(float, "1E400") - self.overflow(float, "inf") - self.overflow(float, "-inf") - self.value(float, "nan") - - def test_main(): test_support.run_unittest( FormatFunctionsTestCase, @@ -295,8 +224,6 @@ IEEEFormatTestCase, ReprTestCase, InfNanTest, - IEEE754TestCase, - IEEEStrictTestCase ) if __name__ == '__main__': Modified: python/branches/trunk-math/Modules/mathmodule.c ============================================================================== --- python/branches/trunk-math/Modules/mathmodule.c (original) +++ python/branches/trunk-math/Modules/mathmodule.c Mon Feb 18 14:59:35 2008 @@ -610,34 +610,6 @@ "isinf(x) -> bool\n\ Checks if float x is infinite (positive or negative)"); -static PyObject * -math_set_ieee754(PyObject *self, PyObject *arg) -{ - long state = PyInt_AsLong(arg); - - if (state == -1 && PyErr_Occurred()) - return NULL; - if (!(state == PyIEEE_Python || state == PyIEEE_754 || - state == PyIEEE_Strict)) { - PyErr_Format(PyExc_ValueError, "Invalid state %ld", state); - return NULL; - } - - return PyInt_FromLong((long)PyIEEE_SetState(state)); -} - -PyDoc_STRVAR(math_set_ieee754_doc, -"set_ieee754(int) -> int"); - -static PyObject * -math_get_ieee754(PyObject *self, PyObject *arg) -{ - return PyInt_FromLong((long)PyIEEE_GetState()); -} - -PyDoc_STRVAR(math_get_ieee754_doc, -"get_ieee754() -> int"); - static PyMethodDef math_methods[] = { {"acos", math_acos, METH_O, math_acos_doc}, {"acosh", math_acosh, METH_O, math_acosh_doc}, @@ -656,7 +628,6 @@ {"floor", math_floor, METH_O, math_floor_doc}, {"fmod", math_fmod, METH_VARARGS, math_fmod_doc}, {"frexp", math_frexp, METH_O, math_frexp_doc}, - {"get_ieee754", math_get_ieee754, METH_NOARGS, math_get_ieee754_doc}, {"hypot", math_hypot, METH_VARARGS, math_hypot_doc}, {"isinf", math_isinf, METH_O, math_isinf_doc}, {"isnan", math_isnan, METH_O, math_isnan_doc}, @@ -667,7 +638,6 @@ {"modf", math_modf, METH_O, math_modf_doc}, {"pow", math_pow, METH_VARARGS, math_pow_doc}, {"radians", math_radians, METH_O, math_radians_doc}, - {"set_ieee754", math_set_ieee754, METH_O, math_set_ieee754_doc}, {"sin", math_sin, METH_O, math_sin_doc}, {"sinh", math_sinh, METH_O, math_sinh_doc}, {"sqrt", math_sqrt, METH_O, math_sqrt_doc}, @@ -693,9 +663,6 @@ PyModule_AddObject(m, "pi", PyFloat_FromDouble(Py_MATH_PI)); PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E)); - PyModule_AddIntConstant(m, "IEEE_PYTHON", PyIEEE_Python); - PyModule_AddIntConstant(m, "IEEE_754", PyIEEE_754); - PyModule_AddIntConstant(m, "IEEE_STRICT", PyIEEE_Strict); finally: return; Modified: python/branches/trunk-math/Objects/complexobject.c ============================================================================== --- python/branches/trunk-math/Objects/complexobject.c (original) +++ python/branches/trunk-math/Objects/complexobject.c Mon Feb 18 14:59:35 2008 @@ -121,26 +121,6 @@ } Py_complex -c_quot_ieee754(Py_complex a, Py_complex b) -{ - /* IEEE 754 style division */ - if (b.real == 0. && b.imag == 0.) { - /* Complex division by zero - * - division of a complex w/o an imaginary part behaves like - * float division: (x+0j)/(0+0j) == x/0 - * - (0+0j)/(0+0j) results in NAN - * - for the remaining cases it's trying to do something - * sensible while keeping the invariant abs(c/0) == inf - */ - Py_complex quot; - quot.real = copysign(Py_HUGE_VAL, b.real) * a.real; - quot.imag = copysign(Py_HUGE_VAL, b.imag) * a.imag; - return quot; - } - return c_quot(a, b); -} - -Py_complex c_pow(Py_complex a, Py_complex b) { Py_complex r; @@ -540,10 +520,7 @@ PyFPE_START_PROTECT("complex_div", return 0) errno = 0; - if (PyIEEE_GET() == PyIEEE_754) - quot = c_quot_ieee754(v->cval,w->cval); - else - quot = c_quot(v->cval,w->cval); + quot = c_quot(v->cval,w->cval); PyFPE_END_PROTECT(quot) if (errno == EDOM) { PyErr_SetString(PyExc_ZeroDivisionError, "complex division"); @@ -564,10 +541,7 @@ PyFPE_START_PROTECT("complex_classic_div", return 0) errno = 0; - if (PyIEEE_GET() == PyIEEE_754) - quot = c_quot_ieee754(v->cval,w->cval); - else - quot = c_quot(v->cval,w->cval); + quot = c_quot(v->cval,w->cval); PyFPE_END_PROTECT(quot) if (errno == EDOM) { PyErr_SetString(PyExc_ZeroDivisionError, "complex division"); Modified: python/branches/trunk-math/Objects/floatobject.c ============================================================================== --- python/branches/trunk-math/Objects/floatobject.c (original) +++ python/branches/trunk-math/Objects/floatobject.c Mon Feb 18 14:59:35 2008 @@ -143,16 +143,6 @@ if ((free_list = fill_free_list()) == NULL) return NULL; } - if (PyIEEE_GET() == PyIEEE_Strict) { - if (Py_IS_NAN(fval)) { - PyErr_SetString(PyExc_ValueError, "Not a Number"); - return NULL; - } - if (Py_IS_INFINITY(fval)) { - PyErr_SetString(PyExc_OverflowError, "Infinity"); - return NULL; - } - } /* Inline PyObject_New */ op = free_list; free_list = (PyFloatObject *)Py_TYPE(op); @@ -252,20 +242,10 @@ p++; } if (PyOS_strnicmp(p, "inf", 4) == 0) { - if (PyIEEE_GET() == PyIEEE_Strict) { - PyErr_SetString(PyExc_OverflowError, - "Infinity"); - return NULL; - } Py_RETURN_INF(sign); } #ifdef Py_NAN if(PyOS_strnicmp(p, "nan", 4) == 0) { - if (PyIEEE_GET() == PyIEEE_Strict) { - PyErr_SetString(PyExc_ValueError, - "Not a Number"); - return NULL; - } Py_RETURN_NAN; } #endif @@ -793,15 +773,9 @@ CONVERT_TO_DOUBLE(w, b); #ifdef Py_NAN if (b == 0.0) { - if (PyIEEE_GET() == PyIEEE_Python) { - PyErr_SetString(PyExc_ZeroDivisionError, - "float division"); - return NULL; - } - else if (a == 0.) - Py_RETURN_NAN; - else - Py_RETURN_INF(a); + PyErr_SetString(PyExc_ZeroDivisionError, + "float division"); + return NULL; } #endif PyFPE_START_PROTECT("divide", return 0) @@ -821,15 +795,9 @@ return NULL; #ifdef Py_NAN if (b == 0.0) { - if (PyIEEE_GET() == PyIEEE_Python) { - PyErr_SetString(PyExc_ZeroDivisionError, - "float division"); - return NULL; - } - else if (a == 0.) - Py_RETURN_NAN; - else - Py_RETURN_INF(a); + PyErr_SetString(PyExc_ZeroDivisionError, + "float division"); + return NULL; } #endif PyFPE_START_PROTECT("divide", return 0) @@ -847,15 +815,9 @@ CONVERT_TO_DOUBLE(w, wx); #ifdef Py_NAN if (wx == 0.0) { - if (PyIEEE_GET() == PyIEEE_Python) { - PyErr_SetString(PyExc_ZeroDivisionError, - "float modulo"); - return NULL; - } - else if (vx == 0.) - Py_RETURN_NAN; - else - Py_RETURN_INF(vx); + PyErr_SetString(PyExc_ZeroDivisionError, + "float modulo"); + return NULL; } #endif PyFPE_START_PROTECT("modulo", return 0) @@ -1607,13 +1569,11 @@ _Py_NewReference(var); \ } - state = PyIEEE_SetState(PyIEEE_Python); #ifdef Py_NAN static_float(PyFloat_NAN, Py_NAN); #endif static_float(PyFloat_PINF, Py_HUGE_VAL); static_float(PyFloat_NINF, -Py_HUGE_VAL); - PyIEEE_SetState(state); #undef static_float } Modified: python/branches/trunk-math/Python/pystate.c ============================================================================== --- python/branches/trunk-math/Python/pystate.c (original) +++ python/branches/trunk-math/Python/pystate.c Mon Feb 18 14:59:35 2008 @@ -193,8 +193,6 @@ tstate->c_profileobj = NULL; tstate->c_traceobj = NULL; - tstate->float_ieee754 = PyIEEE_Python; - #ifdef WITH_THREAD _PyGILState_NoteThreadState(tstate); #endif @@ -635,23 +633,6 @@ PyEval_SaveThread(); } -int -PyIEEE_GetState(void) -{ - return PyThreadState_Get()->float_ieee754; -} - -int -PyIEEE_SetState(int state) -{ - int old_state; - PyThreadState *tstate = PyThreadState_Get(); - - old_state = tstate->float_ieee754; - tstate->float_ieee754 = state; - return old_state; -} - #ifdef __cplusplus } #endif From python-checkins at python.org Mon Feb 18 15:25:02 2008 From: python-checkins at python.org (eric.smith) Date: Mon, 18 Feb 2008 15:25:02 +0100 (CET) Subject: [Python-checkins] r60887 - python/trunk/Lib/test/test_types.py Message-ID: <20080218142502.D6EC11E400B@bag.python.org> Author: eric.smith Date: Mon Feb 18 15:25:02 2008 New Revision: 60887 Modified: python/trunk/Lib/test/test_types.py Log: Temporarily removed float tests. See issue 1600. Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Mon Feb 18 15:25:02 2008 @@ -489,12 +489,13 @@ test(1.1234e200, 'f', '1.1234e+200') test(1.1234e200, 'F', '1.1234e+200') - test( 1.0, 'e', '1.000000e+00') - test(-1.0, 'e', '-1.000000e+00') - test( 1.0, 'E', '1.000000E+00') - test(-1.0, 'E', '-1.000000E+00') - test(1.1234e20, 'e', '1.123400e+20') - test(1.1234e20, 'E', '1.123400E+20') + # temporarily removed. see issue 1600 + # test( 1.0, 'e', '1.000000e+00') + # test(-1.0, 'e', '-1.000000e+00') + # test( 1.0, 'E', '1.000000E+00') + # test(-1.0, 'E', '-1.000000E+00') + # test(1.1234e20, 'e', '1.123400e+20') + # test(1.1234e20, 'E', '1.123400E+20') # % formatting test(-1.0, '%', '-100.000000%') From buildbot at python.org Mon Feb 18 16:05:41 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 15:05:41 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080218150541.4A0B81E400B@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/838 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=21140 and list=[21292] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 16:33:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 15:33:36 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080218153336.742AA1E400B@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/80 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_syntax make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 16:43:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 15:43:55 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080218154355.BBBA11E400B@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2559 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 16:48:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 15:48:20 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080218154820.C26D51E4029@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/685 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Mon Feb 18 18:40:47 2008 From: python-checkins at python.org (kristjan.jonsson) Date: Mon, 18 Feb 2008 18:40:47 +0100 (CET) Subject: [Python-checkins] r60891 - python/trunk/Python/pythonrun.c Message-ID: <20080218174047.C8C351E401E@bag.python.org> Author: kristjan.jonsson Date: Mon Feb 18 18:40:47 2008 New Revision: 60891 Modified: python/trunk/Python/pythonrun.c Log: Perform correct handling of stack overflow for windows: Catch the correct exception code and reset the overflow condition when handled. Modified: python/trunk/Python/pythonrun.c ============================================================================== --- python/trunk/Python/pythonrun.c (original) +++ python/trunk/Python/pythonrun.c Mon Feb 18 18:40:47 2008 @@ -1701,8 +1701,14 @@ not enough space left on the stack */ alloca(PYOS_STACK_MARGIN * sizeof(void*)); return 0; - } __except (EXCEPTION_EXECUTE_HANDLER) { - /* just ignore all errors */ + } __except (GetExceptionCode() == STATUS_STACK_OVERFLOW ? + EXCEPTION_EXECUTE_HANDLER : + EXCEPTION_CONTINUE_SEARCH) { + int errcode = _resetstkoflw(); + if (errcode) + { + Py_FatalError("Could not reset the stack!"); + } } return 1; } From python-checkins at python.org Mon Feb 18 18:46:27 2008 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 18 Feb 2008 18:46:27 +0100 (CET) Subject: [Python-checkins] r60892 - in python/branches/release25-maint: Lib/test/test_struct.py Misc/NEWS Message-ID: <20080218174627.920EE1E4012@bag.python.org> Author: martin.v.loewis Date: Mon Feb 18 18:46:27 2008 New Revision: 60892 Modified: python/branches/release25-maint/Lib/test/test_struct.py python/branches/release25-maint/Misc/NEWS Log: Bug #2137: Remove test_struct.test_crasher, which was meaningful only on 32-bit systems. Modified: python/branches/release25-maint/Lib/test/test_struct.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_struct.py (original) +++ python/branches/release25-maint/Lib/test/test_struct.py Mon Feb 18 18:46:27 2008 @@ -618,12 +618,8 @@ value, = struct.unpack('>I', data) vereq(value, 0x12345678) -def test_crasher(): - assertRaises(MemoryError, struct.pack, "357913941c", "a") - # Test methods to pack and unpack from buffers rather than strings. test_unpack_from() test_pack_into() test_pack_into_fn() test_unpack_with_buffer() -test_crasher() Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Mon Feb 18 18:46:27 2008 @@ -15,6 +15,9 @@ - Fix deallocation of array objects when allocation ran out of memory. Remove array test case that was incorrect on 64-bit systems. +- Bug #2137: Remove test_struct.test_crasher, which was meaningful + only on 32-bit systems. + What's New in Python 2.5.2c1? ============================= From python-checkins at python.org Mon Feb 18 19:02:35 2008 From: python-checkins at python.org (eric.smith) Date: Mon, 18 Feb 2008 19:02:35 +0100 (CET) Subject: [Python-checkins] r60893 - in python/trunk: Lib/test/test_unicode.py Objects/stringlib/string_format.h Message-ID: <20080218180235.30E741E4013@bag.python.org> Author: eric.smith Date: Mon Feb 18 19:02:34 2008 New Revision: 60893 Modified: python/trunk/Lib/test/test_unicode.py python/trunk/Objects/stringlib/string_format.h Log: Added code to correct combining str and unicode in ''.format(). Added test case. Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Mon Feb 18 19:02:34 2008 @@ -1088,6 +1088,15 @@ self.assertRaises(ValueError, format, "", "-") self.assertRaises(ValueError, "{0:=s}".format, '') + # test combining string and unicode + self.assertEqual(u"foo{0}".format('bar'), u'foobar') + # This will try to convert the argument from unicode to str, which + # will succeed + self.assertEqual("foo{0}".format(u'bar'), 'foobar') + # This will try to convert the argument from unicode to str, which + # will fail + self.assertRaises(UnicodeEncodeError, "foo{0}".format, u'\u1000bar') + def test_main(): test_support.run_unittest(__name__) Modified: python/trunk/Objects/stringlib/string_format.h ============================================================================== --- python/trunk/Objects/stringlib/string_format.h (original) +++ python/trunk/Objects/stringlib/string_format.h Mon Feb 18 19:02:34 2008 @@ -493,6 +493,22 @@ if (result == NULL) goto done; +#if PY_VERSION_HEX >= 0x03000000 + assert(PyString_Check(result)); +#else + assert(PyString_Check(result) || PyUnicode_Check(result)); + + /* Convert result to our type. We could be str, and result could + be unicode */ + { + PyObject *tmp = STRINGLIB_TOSTR(result); + if (tmp == NULL) + goto done; + Py_DECREF(result); + result = tmp; + } +#endif + ok = output_data(output, STRINGLIB_STR(result), STRINGLIB_LEN(result)); done: From python-checkins at python.org Mon Feb 18 19:18:37 2008 From: python-checkins at python.org (andrew.kuchling) Date: Mon, 18 Feb 2008 19:18:37 +0100 (CET) Subject: [Python-checkins] r60896 - python/branches/release25-maint/Doc/inst/inst.tex Message-ID: <20080218181837.E6C1B1E4013@bag.python.org> Author: andrew.kuchling Date: Mon Feb 18 19:18:37 2008 New Revision: 60896 Modified: python/branches/release25-maint/Doc/inst/inst.tex Log: Fix link Modified: python/branches/release25-maint/Doc/inst/inst.tex ============================================================================== --- python/branches/release25-maint/Doc/inst/inst.tex (original) +++ python/branches/release25-maint/Doc/inst/inst.tex Mon Feb 18 19:18:37 2008 @@ -703,7 +703,7 @@ Paths can be absolute or relative, in which case they're relative to the directory containing the \file{.pth} file. Any directories added to the search path will be scanned in turn for \file{.pth} files. See -\citetitle[http://www.python.org/dev/doc/devel/lib/module-site.html] +\citetitle[http://www.python.org/doc/devel/lib/module-site.html] {site module documentation} for more information. A slightly less convenient way is to edit the \file{site.py} file in From buildbot at python.org Mon Feb 18 19:47:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 18:47:35 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080218184735.6200C1E4013@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3132 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socket_ssl make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Mon Feb 18 22:08:28 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Feb 2008 16:08:28 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080218210828.GA786@python.psfb.org> 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [558104 refs] From nnorwitz at gmail.com Mon Feb 18 22:15:33 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Feb 2008 16:15:33 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080218211533.GA2788@python.psfb.org> 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9888 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [557699 refs] From buildbot at python.org Mon Feb 18 21:54:41 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 20:54:41 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080218205441.332511E4023@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1465 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 21:55:14 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 20:55:14 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080218205514.7BBCC1E4023@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/687 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Mon Feb 18 22:22:21 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 18 Feb 2008 21:22:21 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080218212221.567441E4012@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/82 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Mon Feb 18 23:41:20 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Feb 2008 17:41:20 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080218224120.GA21142@python.psfb.org> 316 tests OK. 1 test failed: test_unicode 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 1 test failed: test_unicode 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [569746 refs] From brett at python.org Mon Feb 18 23:57:08 2008 From: brett at python.org (Brett Cannon) Date: Mon, 18 Feb 2008 14:57:08 -0800 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk In-Reply-To: <20080218205441.332511E4023@bag.python.org> References: <20080218205441.332511E4023@bag.python.org> Message-ID: Just so people know, I realize that the new refactoring of test_logging has made it flaky. There is an alternative unittest refactoring on the tracker that I was unaware of that I am going to evaluate at some point to see which version is better. -Brett On Feb 18, 2008 12:54 PM, wrote: > The Buildbot has detected a new failure of ia64 Ubuntu trunk. > Full details are available at: > http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1465 > > Buildbot URL: http://www.python.org/dev/buildbot/all/ > > Buildslave for this Build: klose-debian-ia64 > > Build Reason: > Build Source Stamp: [branch trunk] HEAD > Blamelist: eric.smith > > BUILD FAILED: failed test > > Excerpt from the test logfile: > 1 test failed: > test_logging > > make: *** [buildbottest] Error 1 > > sincerely, > -The Buildbot > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From python-checkins at python.org Tue Feb 19 05:38:32 2008 From: python-checkins at python.org (mark.dickinson) Date: Tue, 19 Feb 2008 05:38:32 +0100 (CET) Subject: [Python-checkins] r60898 - python/branches/trunk-math/Lib/test/cmath.ctest python/branches/trunk-math/Lib/test/cmath_testcases.txt python/branches/trunk-math/Lib/test/test_math.py Message-ID: <20080219043832.ED30F1E4012@bag.python.org> Author: mark.dickinson Date: Tue Feb 19 05:38:32 2008 New Revision: 60898 Added: python/branches/trunk-math/Lib/test/cmath_testcases.txt - copied unchanged from r60897, python/branches/trunk-math/Lib/test/cmath.ctest Removed: python/branches/trunk-math/Lib/test/cmath.ctest Modified: python/branches/trunk-math/Lib/test/test_math.py Log: Rename cmath.ctest to something clearer. Deleted: /python/branches/trunk-math/Lib/test/cmath.ctest ============================================================================== --- /python/branches/trunk-math/Lib/test/cmath.ctest Tue Feb 19 05:38:32 2008 +++ (empty file) @@ -1,2107 +0,0 @@ --- Testcases for functions in cmath. --- --- Each line takes the form: --- --- -> --- --- where: --- --- is a short name identifying the test, --- --- is the function to be tested (exp, cos, asinh, ...), --- --- is a pair of floats separated by whitespace --- representing real and imaginary parts of a complex number, and --- --- is the expected (ideal) output value, again --- represented as a pair of floats. --- --- is a list of the floating-point flags required by C99 --- --- The possible flags are: --- --- divide-by-zero : raised when a finite input gives a --- mathematically infinite result. --- --- overflow : raised when a finite input gives a finite result whose --- real or imaginary part is too large to fit in the usual range --- of an IEEE 754 double. --- --- invalid : raised for invalid inputs. --- --- ignore-real-sign : indicates that the sign of the real part of --- the result is unspecified; if the real part of the result is --- given as inf, then both -inf and inf should be accepted as --- correct. --- --- ignore-imag-sign : indicates that the sign of the imaginary part --- of the result is unspecified. --- --- Flags may appear in any order. --- --- Lines beginning with '--' (like this one) start a comment, and are --- ignored. Blank lines, or lines containing only whitespace, are also --- ignored. - - --------------------------- --- acos: Inverse cosine -- --------------------------- - --- zeros -acos0000 acos 0.0 0.0 -> 1.5707963267948966 -0.0 -acos0001 acos 0.0 -0.0 -> 1.5707963267948966 0.0 -acos0002 acos -0.0 0.0 -> 1.5707963267948966 -0.0 -acos0003 acos -0.0 -0.0 -> 1.5707963267948966 0.0 - --- branch points: +/-1 -acos0010 acos 1.0 0.0 -> 0.0 -0.0 -acos0011 acos 1.0 -0.0 -> 0.0 0.0 -acos0012 acos -1.0 0.0 -> 3.1415926535897931 -0.0 -acos0013 acos -1.0 -0.0 -> 3.1415926535897931 0.0 - --- values along both sides of real axis -acos0020 acos -9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0 -acos0021 acos -9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0 -acos0022 acos -1e-305 0.0 -> 1.5707963267948966 -0.0 -acos0023 acos -1e-305 -0.0 -> 1.5707963267948966 0.0 -acos0024 acos -1e-150 0.0 -> 1.5707963267948966 -0.0 -acos0025 acos -1e-150 -0.0 -> 1.5707963267948966 0.0 -acos0026 acos -9.9999999999999998e-17 0.0 -> 1.5707963267948968 -0.0 -acos0027 acos -9.9999999999999998e-17 -0.0 -> 1.5707963267948968 0.0 -acos0028 acos -0.001 0.0 -> 1.5717963269615634 -0.0 -acos0029 acos -0.001 -0.0 -> 1.5717963269615634 0.0 -acos0030 acos -0.57899999999999996 0.0 -> 2.1882979816120667 -0.0 -acos0031 acos -0.57899999999999996 -0.0 -> 2.1882979816120667 0.0 -acos0032 acos -0.99999999999999989 0.0 -> 3.1415926386886319 -0.0 -acos0033 acos -0.99999999999999989 -0.0 -> 3.1415926386886319 0.0 -acos0034 acos -1.0000000000000002 0.0 -> 3.1415926535897931 -2.1073424255447014e-08 -acos0035 acos -1.0000000000000002 -0.0 -> 3.1415926535897931 2.1073424255447014e-08 -acos0036 acos -1.0009999999999999 0.0 -> 3.1415926535897931 -0.044717633608306849 -acos0037 acos -1.0009999999999999 -0.0 -> 3.1415926535897931 0.044717633608306849 -acos0038 acos -2.0 0.0 -> 3.1415926535897931 -1.3169578969248168 -acos0039 acos -2.0 -0.0 -> 3.1415926535897931 1.3169578969248168 -acos0040 acos -23.0 0.0 -> 3.1415926535897931 -3.8281684713331012 -acos0041 acos -23.0 -0.0 -> 3.1415926535897931 3.8281684713331012 -acos0042 acos -10000000000000000.0 0.0 -> 3.1415926535897931 -37.534508668464674 -acos0043 acos -10000000000000000.0 -0.0 -> 3.1415926535897931 37.534508668464674 -acos0044 acos -9.9999999999999998e+149 0.0 -> 3.1415926535897931 -346.08091112966679 -acos0045 acos -9.9999999999999998e+149 -0.0 -> 3.1415926535897931 346.08091112966679 -acos0046 acos -1.0000000000000001e+299 0.0 -> 3.1415926535897931 -689.16608998577965 -acos0047 acos -1.0000000000000001e+299 -0.0 -> 3.1415926535897931 689.16608998577965 -acos0048 acos 9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0 -acos0049 acos 9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0 -acos0050 acos 1e-305 0.0 -> 1.5707963267948966 -0.0 -acos0051 acos 1e-305 -0.0 -> 1.5707963267948966 0.0 -acos0052 acos 1e-150 0.0 -> 1.5707963267948966 -0.0 -acos0053 acos 1e-150 -0.0 -> 1.5707963267948966 0.0 -acos0054 acos 9.9999999999999998e-17 0.0 -> 1.5707963267948966 -0.0 -acos0055 acos 9.9999999999999998e-17 -0.0 -> 1.5707963267948966 0.0 -acos0056 acos 0.001 0.0 -> 1.56979632662823 -0.0 -acos0057 acos 0.001 -0.0 -> 1.56979632662823 0.0 -acos0058 acos 0.57899999999999996 0.0 -> 0.95329467197772655 -0.0 -acos0059 acos 0.57899999999999996 -0.0 -> 0.95329467197772655 0.0 -acos0060 acos 0.99999999999999989 0.0 -> 1.4901161193847656e-08 -0.0 -acos0061 acos 0.99999999999999989 -0.0 -> 1.4901161193847656e-08 0.0 -acos0062 acos 1.0000000000000002 0.0 -> 0.0 -2.1073424255447014e-08 -acos0063 acos 1.0000000000000002 -0.0 -> 0.0 2.1073424255447014e-08 -acos0064 acos 1.0009999999999999 0.0 -> 0.0 -0.044717633608306849 -acos0065 acos 1.0009999999999999 -0.0 -> 0.0 0.044717633608306849 -acos0066 acos 2.0 0.0 -> 0.0 -1.3169578969248168 -acos0067 acos 2.0 -0.0 -> 0.0 1.3169578969248168 -acos0068 acos 23.0 0.0 -> 0.0 -3.8281684713331012 -acos0069 acos 23.0 -0.0 -> 0.0 3.8281684713331012 -acos0070 acos 10000000000000000.0 0.0 -> 0.0 -37.534508668464674 -acos0071 acos 10000000000000000.0 -0.0 -> 0.0 37.534508668464674 -acos0072 acos 9.9999999999999998e+149 0.0 -> 0.0 -346.08091112966679 -acos0073 acos 9.9999999999999998e+149 -0.0 -> 0.0 346.08091112966679 -acos0074 acos 1.0000000000000001e+299 0.0 -> 0.0 -689.16608998577965 -acos0075 acos 1.0000000000000001e+299 -0.0 -> 0.0 689.16608998577965 - --- random inputs -acos0100 acos -3.3307113324596682 -10.732007530863266 -> 1.8706085694482339 3.113986806554613 -acos0101 acos -2863.952991743291 -2681013315.2571239 -> 1.5707973950301699 22.402607843274758 -acos0102 acos -0.33072639793220088 -0.85055464658253055 -> 1.8219426895922601 0.79250166729311966 -acos0103 acos -2.5722325842097802 -12.703940809821574 -> 1.7699942413107408 3.2565170156527325 -acos0104 acos -42.495233785459583 -0.54039320751337161 -> 3.1288732573153304 4.4424815519735601 -acos0105 acos -1.1363818625856401 9641.1325498630376 -> 1.5709141948820049 -9.8669410553254284 -acos0106 acos -2.4398426824157866e-11 0.33002051890266165 -> 1.570796326818066 -0.32430578041578667 -acos0107 acos -1.3521340428186552 2.9369737912076772 -> 1.9849059192339338 -1.8822893674117942 -acos0108 acos -1.827364706477915 1.0355459232147557 -> 2.5732246307960032 -1.4090688267854969 -acos0109 acos -0.25978373706403546 10.09712669185833 -> 1.5963940386378306 -3.0081673050196063 -acos0110 acos 0.33561778471072551 -4587350.6823999118 -> 1.5707962536333251 16.031960402579539 -acos0111 acos 0.49133444610998445 -0.8071422362990015 -> 1.1908761712801788 0.78573345813187867 -acos0112 acos 0.42196734507823974 -2.4812965431745115 -> 1.414091186100692 1.651707260988172 -acos0113 acos 2.961426210100655 -219.03295695248664 -> 1.5572768319822778 6.0824659885827304 -acos0114 acos 2.886209063652641 -20.38011207220606 -> 1.4302765252297889 3.718201853147642 -acos0115 acos 0.4180568075276509 1.4833433990823484 -> 1.3393834558303042 -1.2079847758301576 -acos0116 acos 52.376111405924718 0.013930429001941001 -> 0.00026601761804024188 -4.6515066691204714 -acos0117 acos 41637948387.625969 1.563418292894041 -> 3.7547918507883548e-11 -25.145424989809381 -acos0118 acos 0.061226659122249526 0.8447234394615154 -> 1.5240280306367315 -0.76791798971140812 -acos0119 acos 2.4480466420442959e+26 0.18002339201384662 -> 7.353756620564798e-28 -61.455650015996376 - --- values near infinity -acos0200 acos 1.6206860518683021e+308 1.0308426226285283e+308 -> 0.56650826093826223 -710.54206874241561 -acos0201 acos 1.2067735875070062e+308 -1.3429173724390276e+308 -> 0.83874369390864889 710.48017794027498 -acos0202 acos -7.4130145132549047e+307 1.1759130543927645e+308 -> 2.1332729346478536 -710.21871115698752 -acos0203 acos -8.6329426442257249e+307 -1.2316282952184133e+308 -> 2.1821511032444838 710.29752145697148 -acos0204 acos 0.0 1.4289713855849746e+308 -> 1.5707963267948966 -710.24631069738996 -acos0205 acos -0.0 1.3153524545987432e+308 -> 1.5707963267948966 -710.1634604787539 -acos0206 acos 0.0 -9.6229037669269321e+307 -> 1.5707963267948966 709.85091679573691 -acos0207 acos -0.0 -4.9783616421107088e+307 -> 1.5707963267948966 709.19187157911233 -acos0208 acos 1.3937541925739389e+308 0.0 -> 0.0 -710.22135678707264 -acos0209 acos 9.1362388967371536e+307 -0.0 -> 0.0 709.79901953124613 -acos0210 acos -1.3457361220697436e+308 0.0 -> 3.1415926535897931 -710.18629698871848 -acos0211 acos -5.4699090056144284e+307 -0.0 -> 3.1415926535897931 709.28603271085649 -acos0212 acos 1.5880716932358901e+308 5.5638401252339929 -> 3.503519487773873e-308 -710.35187633140583 -acos0213 acos 1.2497211663463164e+308 -3.0456477717911024 -> 2.4370618453197486e-308 710.11227628223412 -acos0214 acos -9.9016224006029528e+307 4.9570427340789056 -> 3.1415926535897931 -709.87946935229468 -acos0215 acos -1.5854071066874139e+308 -4.4233577741497783 -> 3.1415926535897931 710.35019704672004 -acos0216 acos 9.3674623083647628 1.5209559051877979e+308 -> 1.5707963267948966 -710.30869484491086 -acos0217 acos 8.1773832021784383 -6.6093445795000056e+307 -> 1.5707963267948966 709.4752552227792 -acos0218 acos -3.1845935000665104 1.5768856396650893e+308 -> 1.5707963267948966 -710.34480761042687 -acos0219 acos -1.0577303880953903 -6.4574626815735613e+307 -> 1.5707963267948966 709.45200719662046 - --- values near 0 -acos0220 acos 1.8566986970714045e-320 3.1867234156760402e-321 -> 1.5707963267948966 -3.1867234156760402e-321 -acos0221 acos 7.9050503334599447e-323 -8.8931816251424378e-323 -> 1.5707963267948966 8.8931816251424378e-323 -acos0222 acos -4.4465908125712189e-323 2.4654065097222727e-311 -> 1.5707963267948966 -2.4654065097222727e-311 -acos0223 acos -6.1016916408192619e-311 -2.4703282292062327e-323 -> 1.5707963267948966 2.4703282292062327e-323 -acos0224 acos 0.0 3.4305783621842729e-311 -> 1.5707963267948966 -3.4305783621842729e-311 -acos0225 acos -0.0 1.6117409498633145e-319 -> 1.5707963267948966 -1.6117409498633145e-319 -acos0226 acos 0.0 -4.9900630229965901e-322 -> 1.5707963267948966 4.9900630229965901e-322 -acos0227 acos -0.0 -4.4889279210592818e-311 -> 1.5707963267948966 4.4889279210592818e-311 -acos0228 acos 5.3297678681477214e-312 0.0 -> 1.5707963267948966 -0.0 -acos0229 acos 6.2073425897211614e-313 -0.0 -> 1.5707963267948966 0.0 -acos0230 acos -4.9406564584124654e-324 0.0 -> 1.5707963267948966 -0.0 -acos0231 acos -1.7107517052899003e-318 -0.0 -> 1.5707963267948966 0.0 - --- special values -acos1000 acos 0.0 0.0 -> 1.5707963267948966 -0.0 -acos1001 acos 0.0 -0.0 -> 1.5707963267948966 0.0 -acos1002 acos -0.0 0.0 -> 1.5707963267948966 -0.0 -acos1003 acos -0.0 -0.0 -> 1.5707963267948966 0.0 -acos1004 acos 0.0 nan -> 1.5707963267948966 nan -acos1005 acos -0.0 nan -> 1.5707963267948966 nan -acos1006 acos -2.3 inf -> 1.5707963267948966 -inf -acos1007 acos -0.0 inf -> 1.5707963267948966 -inf -acos1008 acos 0.0 inf -> 1.5707963267948966 -inf -acos1009 acos 2.3 inf -> 1.5707963267948966 -inf -acos1010 acos -2.3 nan -> nan nan -acos1011 acos 2.3 nan -> nan nan -acos1012 acos -inf 2.3 -> 3.1415926535897931 -inf -acos1013 acos -inf 0.0 -> 3.1415926535897931 -inf -acos1014 acos inf 2.3 -> 0.0 -inf -acos1015 acos inf 0.0 -> 0.0 -inf -acos1016 acos -inf inf -> 2.3561944901923448 -inf -acos1017 acos inf inf -> 0.78539816339744828 -inf -acos1018 acos inf nan -> nan inf ignore-imag-sign -acos1019 acos -inf nan -> nan inf ignore-imag-sign -acos1020 acos nan 0.0 -> nan nan -acos1021 acos nan 2.3 -> nan nan -acos1022 acos nan inf -> nan -inf -acos1023 acos nan nan -> nan nan -acos1024 acos -2.3 -inf -> 1.5707963267948966 inf -acos1025 acos -0.0 -inf -> 1.5707963267948966 inf -acos1026 acos 0.0 -inf -> 1.5707963267948966 inf -acos1027 acos 2.3 -inf -> 1.5707963267948966 inf -acos1028 acos -inf -2.3 -> 3.1415926535897931 inf -acos1029 acos -inf -0.0 -> 3.1415926535897931 inf -acos1030 acos inf -2.3 -> 0.0 inf -acos1031 acos inf -0.0 -> 0.0 inf -acos1032 acos -inf -inf -> 2.3561944901923448 inf -acos1033 acos inf -inf -> 0.78539816339744828 inf -acos1034 acos nan -0.0 -> nan nan -acos1035 acos nan -2.3 -> nan nan -acos1036 acos nan -inf -> nan inf - - --------------------------------------- --- acosh: Inverse hyperbolic cosine -- --------------------------------------- - --- zeros -acosh0000 acosh 0.0 0.0 -> 0.0 1.5707963267948966 -acosh0001 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966 -acosh0002 acosh -0.0 0.0 -> 0.0 1.5707963267948966 -acosh0003 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966 - --- branch points: +/-1 -acosh0010 acosh 1.0 0.0 -> 0.0 0.0 -acosh0011 acosh 1.0 -0.0 -> 0.0 -0.0 -acosh0012 acosh -1.0 0.0 -> 0.0 3.1415926535897931 -acosh0013 acosh -1.0 -0.0 -> 0.0 -3.1415926535897931 - --- values along both sides of real axis -acosh0020 acosh -9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966 -acosh0021 acosh -9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966 -acosh0022 acosh -1e-305 0.0 -> 0.0 1.5707963267948966 -acosh0023 acosh -1e-305 -0.0 -> 0.0 -1.5707963267948966 -acosh0024 acosh -1e-150 0.0 -> 0.0 1.5707963267948966 -acosh0025 acosh -1e-150 -0.0 -> 0.0 -1.5707963267948966 -acosh0026 acosh -9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948968 -acosh0027 acosh -9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948968 -acosh0028 acosh -0.001 0.0 -> 0.0 1.5717963269615634 -acosh0029 acosh -0.001 -0.0 -> 0.0 -1.5717963269615634 -acosh0030 acosh -0.57899999999999996 0.0 -> 0.0 2.1882979816120667 -acosh0031 acosh -0.57899999999999996 -0.0 -> 0.0 -2.1882979816120667 -acosh0032 acosh -0.99999999999999989 0.0 -> 0.0 3.1415926386886319 -acosh0033 acosh -0.99999999999999989 -0.0 -> 0.0 -3.1415926386886319 -acosh0034 acosh -1.0000000000000002 0.0 -> 2.1073424255447014e-08 3.1415926535897931 -acosh0035 acosh -1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -3.1415926535897931 -acosh0036 acosh -1.0009999999999999 0.0 -> 0.044717633608306849 3.1415926535897931 -acosh0037 acosh -1.0009999999999999 -0.0 -> 0.044717633608306849 -3.1415926535897931 -acosh0038 acosh -2.0 0.0 -> 1.3169578969248168 3.1415926535897931 -acosh0039 acosh -2.0 -0.0 -> 1.3169578969248168 -3.1415926535897931 -acosh0040 acosh -23.0 0.0 -> 3.8281684713331012 3.1415926535897931 -acosh0041 acosh -23.0 -0.0 -> 3.8281684713331012 -3.1415926535897931 -acosh0042 acosh -10000000000000000.0 0.0 -> 37.534508668464674 3.1415926535897931 -acosh0043 acosh -10000000000000000.0 -0.0 -> 37.534508668464674 -3.1415926535897931 -acosh0044 acosh -9.9999999999999998e+149 0.0 -> 346.08091112966679 3.1415926535897931 -acosh0045 acosh -9.9999999999999998e+149 -0.0 -> 346.08091112966679 -3.1415926535897931 -acosh0046 acosh -1.0000000000000001e+299 0.0 -> 689.16608998577965 3.1415926535897931 -acosh0047 acosh -1.0000000000000001e+299 -0.0 -> 689.16608998577965 -3.1415926535897931 -acosh0048 acosh 9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966 -acosh0049 acosh 9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966 -acosh0050 acosh 1e-305 0.0 -> 0.0 1.5707963267948966 -acosh0051 acosh 1e-305 -0.0 -> 0.0 -1.5707963267948966 -acosh0052 acosh 1e-150 0.0 -> 0.0 1.5707963267948966 -acosh0053 acosh 1e-150 -0.0 -> 0.0 -1.5707963267948966 -acosh0054 acosh 9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948966 -acosh0055 acosh 9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948966 -acosh0056 acosh 0.001 0.0 -> 0.0 1.56979632662823 -acosh0057 acosh 0.001 -0.0 -> 0.0 -1.56979632662823 -acosh0058 acosh 0.57899999999999996 0.0 -> 0.0 0.95329467197772655 -acosh0059 acosh 0.57899999999999996 -0.0 -> 0.0 -0.95329467197772655 -acosh0060 acosh 0.99999999999999989 0.0 -> 0.0 1.4901161193847656e-08 -acosh0061 acosh 0.99999999999999989 -0.0 -> 0.0 -1.4901161193847656e-08 -acosh0062 acosh 1.0000000000000002 0.0 -> 2.1073424255447014e-08 0.0 -acosh0063 acosh 1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -0.0 -acosh0064 acosh 1.0009999999999999 0.0 -> 0.044717633608306849 0.0 -acosh0065 acosh 1.0009999999999999 -0.0 -> 0.044717633608306849 -0.0 -acosh0066 acosh 2.0 0.0 -> 1.3169578969248168 0.0 -acosh0067 acosh 2.0 -0.0 -> 1.3169578969248168 -0.0 -acosh0068 acosh 23.0 0.0 -> 3.8281684713331012 0.0 -acosh0069 acosh 23.0 -0.0 -> 3.8281684713331012 -0.0 -acosh0070 acosh 10000000000000000.0 0.0 -> 37.534508668464674 0.0 -acosh0071 acosh 10000000000000000.0 -0.0 -> 37.534508668464674 -0.0 -acosh0072 acosh 9.9999999999999998e+149 0.0 -> 346.08091112966679 0.0 -acosh0073 acosh 9.9999999999999998e+149 -0.0 -> 346.08091112966679 -0.0 -acosh0074 acosh 1.0000000000000001e+299 0.0 -> 689.16608998577965 0.0 -acosh0075 acosh 1.0000000000000001e+299 -0.0 -> 689.16608998577965 -0.0 - --- random inputs -acosh0100 acosh -1.4328589581250843 -1.8370347775558309 -> 1.5526962646549587 -2.190250168435786 -acosh0101 acosh -0.31075819156220957 -1.0772555786839297 -> 0.95139168286193709 -1.7812228089636479 -acosh0102 acosh -1.9044776578070453 -20.485370158932124 -> 3.7177411088932359 -1.6633888745861227 -acosh0103 acosh -0.075642506000858742 -21965976320.873051 -> 24.505907742881991 -1.5707963267983402 -acosh0104 acosh -1.6162271181056307 -3.0369343458696099 -> 1.9407057262861227 -2.0429549461750209 -acosh0105 acosh -0.3103780280298063 0.00018054880018078987 -> 0.00018992877058761416 1.886386995096728 -acosh0106 acosh -9159468751.5897655 5.8014747664273649 -> 23.631201197959193 3.1415926529564078 -acosh0107 acosh -0.037739157550933884 0.21841357493510705 -> 0.21685844960602488 1.6076735133449402 -acosh0108 acosh -8225991.0508394297 0.28318543008913644 -> 16.615956520420287 3.1415926191641019 -acosh0109 acosh -35.620070502302639 0.31303237005015 -> 4.2658980006943965 3.1328013255541873 -acosh0110 acosh 96.729939906820917 -0.029345228372365334 -> 5.2650434775863548 -0.00030338895866972843 -acosh0111 acosh 0.59656024007966491 -2.0412294654163978 -> 1.4923002024287835 -1.312568421900338 -acosh0112 acosh 109.29384112677828 -0.00015454863061533812 -> 5.3871662961545477 -1.4141245154061214e-06 -acosh0113 acosh 8.6705651969361597 -3.6723631649787465 -> 2.9336180958363545 -0.40267362031872861 -acosh0114 acosh 1.8101646445052686 -0.012345132721855478 -> 1.1997148566285769 -0.0081813912760150265 -acosh0115 acosh 52.56897195025288 0.001113916065985443 -> 4.6551827622264135 2.1193445872040307e-05 -acosh0116 acosh 0.28336786164214739 355643992457.40485 -> 27.290343226816528 1.5707963267940999 -acosh0117 acosh 0.73876621291911437 2.8828594541104322e-20 -> 4.2774820978159067e-20 0.73955845836827927 -acosh0118 acosh 0.025865471781718878 37125746064318.492 -> 31.938478989418012 1.5707963267948959 -acosh0119 acosh 2.2047353511780132 0.074712248143489271 -> 1.4286403248698021 0.037997904971626598 - --- values near infinity -acosh0200 acosh 8.1548592876467785e+307 9.0943779335951128e+307 -> 710.08944620800605 0.83981165425478954 -acosh0201 acosh 1.4237229680972531e+308 -1.0336966617874858e+308 -> 710.4543331094759 -0.6279972876348755 -acosh0202 acosh -1.5014526899738939e+308 1.5670700378448792e+308 -> 710.66420706795464 2.3348137299106697 -acosh0203 acosh -1.0939040375213928e+308 -1.0416960351127978e+308 -> 710.30182863115886 -2.380636147787027 -acosh0204 acosh 0.0 1.476062433559588e+308 -> 710.27873384716929 1.5707963267948966 -acosh0205 acosh -0.0 6.2077210326221094e+307 -> 709.41256457484769 1.5707963267948966 -acosh0206 acosh 0.0 -1.5621899909968308e+308 -> 710.33544449990734 -1.5707963267948966 -acosh0207 acosh -0.0 -8.3556624833839122e+307 -> 709.70971018048317 -1.5707963267948966 -acosh0208 acosh 1.3067079752499342e+308 0.0 -> 710.15686680107228 0.0 -acosh0209 acosh 1.5653640340214026e+308 -0.0 -> 710.33747422926706 -0.0 -acosh0210 acosh -6.9011375992290636e+307 0.0 -> 709.51845699719922 3.1415926535897931 -acosh0211 acosh -9.9539576809926973e+307 -0.0 -> 709.88474095870185 -3.1415926535897931 -acosh0212 acosh 7.6449598518914925e+307 9.5706540768268358 -> 709.62081731754802 1.2518906916769345e-307 -acosh0213 acosh 5.4325410972602197e+307 -7.8064807816522706 -> 709.279177727925 -1.4369851312471974e-307 -acosh0214 acosh -1.1523626112360465e+308 7.0617510038869336 -> 710.03117010216909 3.1415926535897931 -acosh0215 acosh -1.1685027786862599e+308 -5.1568558357925625 -> 710.04507907571417 -3.1415926535897931 -acosh0216 acosh 3.0236370339788721 1.7503248720096417e+308 -> 710.44915723458064 1.5707963267948966 -acosh0217 acosh 6.6108007926031149 -9.1469968225806149e+307 -> 709.80019633903328 -1.5707963267948966 -acosh0218 acosh -5.1096262905623959 6.4484926785412395e+307 -> 709.45061713997973 1.5707963267948966 -acosh0219 acosh -2.8080920608735846 -1.7716118836519368e+308 -> 710.46124562363445 -1.5707963267948966 - --- values near 0 -acosh0220 acosh 4.5560530326699304e-317 7.3048989121436657e-318 -> 7.3048989121436657e-318 1.5707963267948966 -acosh0221 acosh 4.8754274133585331e-314 -9.8469794897684199e-315 -> 9.8469794897684199e-315 -1.5707963267948966 -acosh0222 acosh -4.6748876009960097e-312 9.7900342887557606e-318 -> 9.7900342887557606e-318 1.5707963267948966 -acosh0223 acosh -4.3136871538399236e-320 -4.9406564584124654e-323 -> 4.9406564584124654e-323 -1.5707963267948966 -acosh0224 acosh 0.0 4.3431013866496774e-314 -> 4.3431013866496774e-314 1.5707963267948966 -acosh0225 acosh -0.0 6.0147334335829184e-317 -> 6.0147334335829184e-317 1.5707963267948966 -acosh0226 acosh 0.0 -1.2880291387081297e-320 -> 1.2880291387081297e-320 -1.5707963267948966 -acosh0227 acosh -0.0 -1.4401563976534621e-317 -> 1.4401563976534621e-317 -1.5707963267948966 -acosh0228 acosh 1.3689680570863091e-313 0.0 -> 0.0 1.5707963267948966 -acosh0229 acosh 1.5304346893494371e-312 -0.0 -> 0.0 -1.5707963267948966 -acosh0230 acosh -3.7450175954766488e-320 0.0 -> 0.0 1.5707963267948966 -acosh0231 acosh -8.4250563080885801e-311 -0.0 -> 0.0 -1.5707963267948966 - --- special values -acosh1000 acosh 0.0 0.0 -> 0.0 1.5707963267948966 -acosh1001 acosh -0.0 0.0 -> 0.0 1.5707963267948966 -acosh1002 acosh 0.0 inf -> inf 1.5707963267948966 -acosh1003 acosh 2.3 inf -> inf 1.5707963267948966 -acosh1004 acosh -0.0 inf -> inf 1.5707963267948966 -acosh1005 acosh -2.3 inf -> inf 1.5707963267948966 -acosh1006 acosh 0.0 nan -> nan nan -acosh1007 acosh 2.3 nan -> nan nan -acosh1008 acosh -0.0 nan -> nan nan -acosh1009 acosh -2.3 nan -> nan nan -acosh1010 acosh -inf 0.0 -> inf 3.1415926535897931 -acosh1011 acosh -inf 2.3 -> inf 3.1415926535897931 -acosh1012 acosh inf 0.0 -> inf 0.0 -acosh1013 acosh inf 2.3 -> inf 0.0 -acosh1014 acosh -inf inf -> inf 2.3561944901923448 -acosh1015 acosh inf inf -> inf 0.78539816339744828 -acosh1016 acosh inf nan -> inf nan -acosh1017 acosh -inf nan -> inf nan -acosh1018 acosh nan 0.0 -> nan nan -acosh1019 acosh nan 2.3 -> nan nan -acosh1020 acosh nan inf -> inf nan -acosh1021 acosh nan nan -> nan nan -acosh1022 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966 -acosh1023 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966 -acosh1024 acosh 0.0 -inf -> inf -1.5707963267948966 -acosh1025 acosh 2.3 -inf -> inf -1.5707963267948966 -acosh1026 acosh -0.0 -inf -> inf -1.5707963267948966 -acosh1027 acosh -2.3 -inf -> inf -1.5707963267948966 -acosh1028 acosh -inf -0.0 -> inf -3.1415926535897931 -acosh1029 acosh -inf -2.3 -> inf -3.1415926535897931 -acosh1030 acosh inf -0.0 -> inf -0.0 -acosh1031 acosh inf -2.3 -> inf -0.0 -acosh1032 acosh -inf -inf -> inf -2.3561944901923448 -acosh1033 acosh inf -inf -> inf -0.78539816339744828 -acosh1034 acosh nan -0.0 -> nan nan -acosh1035 acosh nan -2.3 -> nan nan -acosh1036 acosh nan -inf -> inf nan - - ------------------------- --- asin: Inverse sine -- ------------------------- - --- zeros -asin0000 asin 0.0 0.0 -> 0.0 0.0 -asin0001 asin 0.0 -0.0 -> 0.0 -0.0 -asin0002 asin -0.0 0.0 -> -0.0 0.0 -asin0003 asin -0.0 -0.0 -> -0.0 -0.0 - --- branch points: +/-1 -asin0010 asin 1.0 0.0 -> 1.5707963267948966 0.0 -asin0011 asin 1.0 -0.0 -> 1.5707963267948966 -0.0 -asin0012 asin -1.0 0.0 -> -1.5707963267948966 0.0 -asin0013 asin -1.0 -0.0 -> -1.5707963267948966 -0.0 - --- values along both sides of real axis -asin0020 asin -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0 -asin0021 asin -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 -asin0022 asin -1e-305 0.0 -> -1e-305 0.0 -asin0023 asin -1e-305 -0.0 -> -1e-305 -0.0 -asin0024 asin -1e-150 0.0 -> -1e-150 0.0 -asin0025 asin -1e-150 -0.0 -> -1e-150 -0.0 -asin0026 asin -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0 -asin0027 asin -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0 -asin0028 asin -0.001 0.0 -> -0.0010000001666667416 0.0 -asin0029 asin -0.001 -0.0 -> -0.0010000001666667416 -0.0 -asin0030 asin -0.57899999999999996 0.0 -> -0.61750165481717001 0.0 -asin0031 asin -0.57899999999999996 -0.0 -> -0.61750165481717001 -0.0 -asin0032 asin -0.99999999999999989 0.0 -> -1.5707963118937354 0.0 -asin0033 asin -0.99999999999999989 -0.0 -> -1.5707963118937354 -0.0 -asin0034 asin -1.0000000000000002 0.0 -> -1.5707963267948966 2.1073424255447014e-08 -asin0035 asin -1.0000000000000002 -0.0 -> -1.5707963267948966 -2.1073424255447014e-08 -asin0036 asin -1.0009999999999999 0.0 -> -1.5707963267948966 0.044717633608306849 -asin0037 asin -1.0009999999999999 -0.0 -> -1.5707963267948966 -0.044717633608306849 -asin0038 asin -2.0 0.0 -> -1.5707963267948966 1.3169578969248168 -asin0039 asin -2.0 -0.0 -> -1.5707963267948966 -1.3169578969248168 -asin0040 asin -23.0 0.0 -> -1.5707963267948966 3.8281684713331012 -asin0041 asin -23.0 -0.0 -> -1.5707963267948966 -3.8281684713331012 -asin0042 asin -10000000000000000.0 0.0 -> -1.5707963267948966 37.534508668464674 -asin0043 asin -10000000000000000.0 -0.0 -> -1.5707963267948966 -37.534508668464674 -asin0044 asin -9.9999999999999998e+149 0.0 -> -1.5707963267948966 346.08091112966679 -asin0045 asin -9.9999999999999998e+149 -0.0 -> -1.5707963267948966 -346.08091112966679 -asin0046 asin -1.0000000000000001e+299 0.0 -> -1.5707963267948966 689.16608998577965 -asin0047 asin -1.0000000000000001e+299 -0.0 -> -1.5707963267948966 -689.16608998577965 -asin0048 asin 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0 -asin0049 asin 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0 -asin0050 asin 1e-305 0.0 -> 1e-305 0.0 -asin0051 asin 1e-305 -0.0 -> 1e-305 -0.0 -asin0052 asin 1e-150 0.0 -> 1e-150 0.0 -asin0053 asin 1e-150 -0.0 -> 1e-150 -0.0 -asin0054 asin 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0 -asin0055 asin 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0 -asin0056 asin 0.001 0.0 -> 0.0010000001666667416 0.0 -asin0057 asin 0.001 -0.0 -> 0.0010000001666667416 -0.0 -asin0058 asin 0.57899999999999996 0.0 -> 0.61750165481717001 0.0 -asin0059 asin 0.57899999999999996 -0.0 -> 0.61750165481717001 -0.0 -asin0060 asin 0.99999999999999989 0.0 -> 1.5707963118937354 0.0 -asin0061 asin 0.99999999999999989 -0.0 -> 1.5707963118937354 -0.0 -asin0062 asin 1.0000000000000002 0.0 -> 1.5707963267948966 2.1073424255447014e-08 -asin0063 asin 1.0000000000000002 -0.0 -> 1.5707963267948966 -2.1073424255447014e-08 -asin0064 asin 1.0009999999999999 0.0 -> 1.5707963267948966 0.044717633608306849 -asin0065 asin 1.0009999999999999 -0.0 -> 1.5707963267948966 -0.044717633608306849 -asin0066 asin 2.0 0.0 -> 1.5707963267948966 1.3169578969248168 -asin0067 asin 2.0 -0.0 -> 1.5707963267948966 -1.3169578969248168 -asin0068 asin 23.0 0.0 -> 1.5707963267948966 3.8281684713331012 -asin0069 asin 23.0 -0.0 -> 1.5707963267948966 -3.8281684713331012 -asin0070 asin 10000000000000000.0 0.0 -> 1.5707963267948966 37.534508668464674 -asin0071 asin 10000000000000000.0 -0.0 -> 1.5707963267948966 -37.534508668464674 -asin0072 asin 9.9999999999999998e+149 0.0 -> 1.5707963267948966 346.08091112966679 -asin0073 asin 9.9999999999999998e+149 -0.0 -> 1.5707963267948966 -346.08091112966679 -asin0074 asin 1.0000000000000001e+299 0.0 -> 1.5707963267948966 689.16608998577965 -asin0075 asin 1.0000000000000001e+299 -0.0 -> 1.5707963267948966 -689.16608998577965 - --- random inputs -asin0100 asin -1.5979555835086083 -0.15003009814595247 -> -1.4515369557405788 -1.0544476399790823 -asin0101 asin -0.57488225895317679 -9.6080397838952743e-13 -> -0.61246024460412851 -1.174238005400403e-12 -asin0102 asin -3.6508087930516249 -0.36027527093220152 -> -1.4685890605305874 -1.9742273007152038 -asin0103 asin -1.5238659792326819 -1.1360813516996364 -> -0.86080051691147275 -1.3223742205689195 -asin0104 asin -1592.0639045555306 -0.72362427935018236 -> -1.5703418071175179 -8.0659336918729228 -asin0105 asin -0.19835471371312019 4.2131508416697709 -> -0.045777831019935149 2.1461732751933171 -asin0106 asin -1.918471054430213 0.40603305079779234 -> -1.3301396585791556 1.30263642314981 -asin0107 asin -254495.01623373642 0.71084414434470822 -> -1.5707935336394359 13.140183712762321 -asin0108 asin -0.31315882715691157 3.9647994288429866 -> -0.076450403840916004 2.0889762138713457 -asin0109 asin -0.90017064284720816 1.2530659485907105 -> -0.53466509741943447 1.1702811557577 -asin0110 asin 2.1615181696571075 -0.14058647488229523 -> 1.4976166323896871 -1.4085811039334604 -asin0111 asin 1.2104749210707795 -0.85732484485298999 -> 0.83913071588343924 -1.0681719250525901 -asin0112 asin 1.7059733185128891 -0.84032966373156581 -> 1.0510900815816229 -1.2967979791361652 -asin0113 asin 9.9137085017290687 -1.4608383970250893 -> 1.4237704820128891 -2.995414677560686 -asin0114 asin 117.12344751041495 -5453908091.5334015 -> 2.1475141411392012e-08 -23.112745450217066 -asin0115 asin 0.081041187798029227 0.067054349860173196 -> 0.080946786856771813 0.067223991060639698 -asin0116 asin 46.635472322049949 2.3835190718056678 -> 1.5197194940010779 4.5366989600972083 -asin0117 asin 3907.0687961127105 19.144021886390181 -> 1.5658965233083235 8.9637018715924217 -asin0118 asin 1.0889312322308273 509.01577883554768 -> 0.0021392803817829316 6.9256294494524706 -asin0119 asin 0.10851518277509224 1.5612510908217476 -> 0.058491014243902621 1.2297075725621327 - --- values near infinity -asin0200 asin 1.5230241998821499e+308 5.5707228994084525e+307 -> 1.2201446370892068 710.37283486535966 -asin0201 asin 8.1334317698672204e+307 -9.2249425197872451e+307 -> 0.72259991284020042 -710.0962453049026 -asin0202 asin -9.9138506659241768e+307 6.701544526434995e+307 -> -0.97637511742194594 710.06887486671371 -asin0203 asin -1.4141298868173842e+308 -5.401505134514191e+307 -> -1.2059319055160587 -710.30396478954628 -asin0204 asin 0.0 9.1618092977897431e+307 -> 0.0 709.80181441050593 -asin0205 asin -0.0 6.8064342551939755e+307 -> -0.0 709.50463910853489 -asin0206 asin 0.0 -6.4997516454798215e+307 -> 0.0 -709.45853469751592 -asin0207 asin -0.0 -1.6767449053345242e+308 -> -0.0 -710.4062101803022 -asin0208 asin 5.4242749957378916e+307 0.0 -> 1.5707963267948966 709.27765497888902 -asin0209 asin 9.5342145121164749e+307 -0.0 -> 1.5707963267948966 -709.84165758595907 -asin0210 asin -7.0445698006201847e+307 0.0 -> -1.5707963267948966 709.53902780872136 -asin0211 asin -1.0016025569769706e+308 -0.0 -> -1.5707963267948966 -709.89095709697881 -asin0212 asin 1.6552203778877204e+308 0.48761543336249491 -> 1.5707963267948966 710.39328998153474 -asin0213 asin 1.2485712830384869e+308 -4.3489311161278899 -> 1.5707963267948966 -710.1113557467786 -asin0214 asin -1.5117842813353125e+308 5.123452666102434 -> -1.5707963267948966 710.30264641923031 -asin0215 asin -1.3167634313008016e+308 -0.52939679793528982 -> -1.5707963267948966 -710.16453260239768 -asin0216 asin 0.80843929176985907 1.0150851827767876e+308 -> 7.9642507396113875e-309 709.90432835561637 -asin0217 asin 8.2544809829680901 -1.7423548140539474e+308 -> 4.7375430746865733e-308 -710.44459336242164 -asin0218 asin -5.2499000118824295 4.6655578977512214e+307 -> -1.1252459249113292e-307 709.1269781491103 -asin0219 asin -5.9904782760833433 -4.7315689314781163e+307 -> -1.2660659419394637e-307 -709.14102757522312 - - ------------------------------------- --- asinh: Inverse hyperbolic sine -- ------------------------------------- - --- zeros -asinh0000 asinh 0.0 0.0 -> 0.0 0.0 -asinh0001 asinh 0.0 -0.0 -> 0.0 -0.0 -asinh0002 asinh -0.0 0.0 -> -0.0 0.0 -asinh0003 asinh -0.0 -0.0 -> -0.0 -0.0 - --- branch points: +/-i -asinh0010 asinh 0.0 1.0 -> 0.0 1.5707963267948966 -asinh0011 asinh 0.0 -1.0 -> 0.0 -1.5707963267948966 -asinh0012 asinh -0.0 1.0 -> -0.0 1.5707963267948966 -asinh0013 asinh -0.0 -1.0 -> -0.0 -1.5707963267948966 - --- values along both sides of imaginary axis -asinh0020 asinh 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324 -asinh0021 asinh -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324 -asinh0022 asinh 0.0 -1e-305 -> 0.0 -1e-305 -asinh0023 asinh -0.0 -1e-305 -> -0.0 -1e-305 -asinh0024 asinh 0.0 -1e-150 -> 0.0 -1e-150 -asinh0025 asinh -0.0 -1e-150 -> -0.0 -1e-150 -asinh0026 asinh 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17 -asinh0027 asinh -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17 -asinh0028 asinh 0.0 -0.001 -> 0.0 -0.0010000001666667416 -asinh0029 asinh -0.0 -0.001 -> -0.0 -0.0010000001666667416 -asinh0030 asinh 0.0 -0.57899999999999996 -> 0.0 -0.61750165481717001 -asinh0031 asinh -0.0 -0.57899999999999996 -> -0.0 -0.61750165481717001 -asinh0032 asinh 0.0 -0.99999999999999989 -> 0.0 -1.5707963118937354 -asinh0033 asinh -0.0 -0.99999999999999989 -> -0.0 -1.5707963118937354 -asinh0034 asinh 0.0 -1.0000000000000002 -> 2.1073424255447014e-08 -1.5707963267948966 -asinh0035 asinh -0.0 -1.0000000000000002 -> -2.1073424255447014e-08 -1.5707963267948966 -asinh0036 asinh 0.0 -1.0009999999999999 -> 0.044717633608306849 -1.5707963267948966 -asinh0037 asinh -0.0 -1.0009999999999999 -> -0.044717633608306849 -1.5707963267948966 -asinh0038 asinh 0.0 -2.0 -> 1.3169578969248168 -1.5707963267948966 -asinh0039 asinh -0.0 -2.0 -> -1.3169578969248168 -1.5707963267948966 -asinh0040 asinh 0.0 -20.0 -> 3.6882538673612966 -1.5707963267948966 -asinh0041 asinh -0.0 -20.0 -> -3.6882538673612966 -1.5707963267948966 -asinh0042 asinh 0.0 -10000000000000000.0 -> 37.534508668464674 -1.5707963267948966 -asinh0043 asinh -0.0 -10000000000000000.0 -> -37.534508668464674 -1.5707963267948966 -asinh0044 asinh 0.0 -9.9999999999999998e+149 -> 346.08091112966679 -1.5707963267948966 -asinh0045 asinh -0.0 -9.9999999999999998e+149 -> -346.08091112966679 -1.5707963267948966 -asinh0046 asinh 0.0 -1.0000000000000001e+299 -> 689.16608998577965 -1.5707963267948966 -asinh0047 asinh -0.0 -1.0000000000000001e+299 -> -689.16608998577965 -1.5707963267948966 -asinh0048 asinh 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324 -asinh0049 asinh -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324 -asinh0050 asinh 0.0 1e-305 -> 0.0 1e-305 -asinh0051 asinh -0.0 1e-305 -> -0.0 1e-305 -asinh0052 asinh 0.0 1e-150 -> 0.0 1e-150 -asinh0053 asinh -0.0 1e-150 -> -0.0 1e-150 -asinh0054 asinh 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17 -asinh0055 asinh -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17 -asinh0056 asinh 0.0 0.001 -> 0.0 0.0010000001666667416 -asinh0057 asinh -0.0 0.001 -> -0.0 0.0010000001666667416 -asinh0058 asinh 0.0 0.57899999999999996 -> 0.0 0.61750165481717001 -asinh0059 asinh -0.0 0.57899999999999996 -> -0.0 0.61750165481717001 -asinh0060 asinh 0.0 0.99999999999999989 -> 0.0 1.5707963118937354 -asinh0061 asinh -0.0 0.99999999999999989 -> -0.0 1.5707963118937354 -asinh0062 asinh 0.0 1.0000000000000002 -> 2.1073424255447014e-08 1.5707963267948966 -asinh0063 asinh -0.0 1.0000000000000002 -> -2.1073424255447014e-08 1.5707963267948966 -asinh0064 asinh 0.0 1.0009999999999999 -> 0.044717633608306849 1.5707963267948966 -asinh0065 asinh -0.0 1.0009999999999999 -> -0.044717633608306849 1.5707963267948966 -asinh0066 asinh 0.0 2.0 -> 1.3169578969248168 1.5707963267948966 -asinh0067 asinh -0.0 2.0 -> -1.3169578969248168 1.5707963267948966 -asinh0068 asinh 0.0 20.0 -> 3.6882538673612966 1.5707963267948966 -asinh0069 asinh -0.0 20.0 -> -3.6882538673612966 1.5707963267948966 -asinh0070 asinh 0.0 10000000000000000.0 -> 37.534508668464674 1.5707963267948966 -asinh0071 asinh -0.0 10000000000000000.0 -> -37.534508668464674 1.5707963267948966 -asinh0072 asinh 0.0 9.9999999999999998e+149 -> 346.08091112966679 1.5707963267948966 -asinh0073 asinh -0.0 9.9999999999999998e+149 -> -346.08091112966679 1.5707963267948966 -asinh0074 asinh 0.0 1.0000000000000001e+299 -> 689.16608998577965 1.5707963267948966 -asinh0075 asinh -0.0 1.0000000000000001e+299 -> -689.16608998577965 1.5707963267948966 - --- random inputs -asinh0100 asinh -0.5946402853710423 -0.044506548910000145 -> -0.56459775392653022 -0.038256221441536356 -asinh0101 asinh -0.19353958046180916 -0.017489624793193454 -> -0.19237926804196651 -0.017171741895336792 -asinh0102 asinh -0.033117585138955893 -8.5256414015933757 -> -2.8327758348650969 -1.5668848791092411 -asinh0103 asinh -1.5184043184035716 -0.73491245339073275 -> -1.2715891419764005 -0.39204624408542355 -asinh0104 asinh -0.60716120271208818 -0.28900743958436542 -> -0.59119299421187232 -0.24745931678118135 -asinh0105 asinh -0.0237177865112429 2.8832601052166313 -> -1.7205820772413236 1.5620261702963094 -asinh0106 asinh -2.3906812342743979 2.6349216848574013 -> -1.9609636249445124 0.8142142660574706 -asinh0107 asinh -0.0027605019787620517 183.85588476550555 -> -5.9072920005445066 1.5707813120847871 -asinh0108 asinh -0.99083661164404713 0.028006797051617648 -> -0.8750185251283995 0.019894099615994653 -asinh0109 asinh -3.0362951937986393 0.86377266758504867 -> -1.8636030714685221 0.26475058859950168 -asinh0110 asinh 0.34438464536152769 -0.71603790174885029 -> 0.43985415690734164 -0.71015037409294324 -asinh0111 asinh 4.4925124413876256 -60604595352.871613 -> 25.520783738612078 -1.5707963267207683 -asinh0112 asinh 2.3213991428170337 -7.5459667007307258 -> 2.7560464993451643 -1.270073210856117 -asinh0113 asinh 0.21291939741682028 -1.2720428814784408 -> 0.77275088137338266 -1.3182099250896895 -asinh0114 asinh 6.6447359379455957 -0.97196191666946996 -> 2.602830695139672 -0.14368247412319965 -asinh0115 asinh 7.1326256655083746 2.1516360452706857 -> 2.7051146374367212 0.29051701669727581 -asinh0116 asinh 0.18846550905063442 3.4705348585339832 -> 1.917697875799296 1.514155593347924 -asinh0117 asinh 0.19065075303281598 0.26216814548222012 -> 0.19603050785932474 0.26013422809614117 -asinh0118 asinh 2.0242004665739719 0.70510281647495787 -> 1.4970366212896002 0.30526007200481453 -asinh0119 asinh 37.336596461576057 717.29157391678234 -> 7.269981997945294 1.5187910219576033 - --- values near infinity -asinh0200 asinh 1.0760517500874541e+308 1.1497786241240167e+308 -> 710.34346055651815 0.81850936961793475 -asinh0201 asinh 1.1784839328845529e+308 -1.6478429586716638e+308 -> 710.59536255783678 -0.94996311735607697 -asinh0202 asinh -4.8777682248909193e+307 1.4103736217538474e+308 -> -710.28970147376992 1.2378239519096443 -asinh0203 asinh -1.2832478903233108e+308 -1.5732392613155698e+308 -> -710.59750164290745 -0.88657181439322452 -asinh0204 asinh 0.0 6.8431383856345372e+307 -> 709.51001718444604 1.5707963267948966 -asinh0205 asinh -0.0 8.601822432238051e+307 -> -709.73874482126689 1.5707963267948966 -asinh0206 asinh 0.0 -5.5698396067303782e+307 -> 709.30413698733742 -1.5707963267948966 -asinh0207 asinh -0.0 -7.1507777734621804e+307 -> -709.55399186002705 -1.5707963267948966 -asinh0208 asinh 1.6025136110019349e+308 0.0 -> 710.3609292261076 0.0 -asinh0209 asinh 1.3927819858239114e+308 -0.0 -> 710.22065899832899 -0.0 -asinh0210 asinh -6.0442994056210995e+307 0.0 -> -709.38588631057621 0.0 -asinh0211 asinh -1.2775271979042634e+308 -0.0 -> -710.13428215553972 -0.0 -asinh0212 asinh 1.0687496260268489e+308 1.0255615699476961 -> 709.95584521407841 9.5959010882679093e-309 -asinh0213 asinh 1.0050967333370962e+308 -0.87668970117333433 -> 709.89443961168183 -8.7224410556242882e-309 -asinh0214 asinh -5.7161452814862392e+307 8.2377808413450122 -> -709.33006540611166 1.4411426644501116e-307 -asinh0215 asinh -8.2009040727653315e+307 -6.407409526654976 -> -709.69101513070109 -7.8130526461510088e-308 -asinh0216 asinh 6.4239368496483982 1.6365990821551427e+308 -> 710.38197618101287 1.5707963267948966 -asinh0217 asinh 5.4729111423315882 -1.1227237438144211e+308 -> 710.00511346983546 -1.5707963267948966 -asinh0218 asinh -8.3455818297412723 1.443172020182019e+308 -> -710.25619930551818 1.5707963267948966 -asinh0219 asinh -2.6049726230372441 -1.7952291144022702e+308 -> -710.47448847685644 -1.5707963267948966 - --- values near 0 -asinh0220 asinh 1.2940113339664088e-314 6.9169190417774516e-323 -> 1.2940113339664088e-314 6.9169190417774516e-323 -asinh0221 asinh 2.3848478863874649e-315 -3.1907655025717717e-310 -> 2.3848478863874649e-315 -3.1907655025717717e-310 -asinh0222 asinh -3.0097643679641622e-316 4.6936236354918422e-322 -> -3.0097643679641622e-316 4.6936236354918422e-322 -asinh0223 asinh -1.787997087755751e-308 -8.5619622834902341e-310 -> -1.787997087755751e-308 -8.5619622834902341e-310 -asinh0224 asinh 0.0 1.2491433448427325e-314 -> 0.0 1.2491433448427325e-314 -asinh0225 asinh -0.0 2.5024072154538062e-308 -> -0.0 2.5024072154538062e-308 -asinh0226 asinh 0.0 -2.9643938750474793e-323 -> 0.0 -2.9643938750474793e-323 -asinh0227 asinh -0.0 -2.9396905927554169e-320 -> -0.0 -2.9396905927554169e-320 -asinh0228 asinh 5.64042930029359e-317 0.0 -> 5.64042930029359e-317 0.0 -asinh0229 asinh 3.3833911866596068e-318 -0.0 -> 3.3833911866596068e-318 -0.0 -asinh0230 asinh -4.9406564584124654e-324 0.0 -> -4.9406564584124654e-324 0.0 -asinh0231 asinh -2.2211379227994845e-308 -0.0 -> -2.2211379227994845e-308 -0.0 - --- special values -asinh1000 asinh 0.0 0.0 -> 0.0 0.0 -asinh1001 asinh 0.0 -0.0 -> 0.0 -0.0 -asinh1002 asinh -0.0 0.0 -> -0.0 0.0 -asinh1003 asinh -0.0 -0.0 -> -0.0 -0.0 -asinh1004 asinh 0.0 inf -> inf 1.5707963267948966 -asinh1005 asinh 2.3 inf -> inf 1.5707963267948966 -asinh1006 asinh 0.0 nan -> nan nan -asinh1007 asinh 2.3 nan -> nan nan -asinh1008 asinh inf 0.0 -> inf 0.0 -asinh1009 asinh inf 2.3 -> inf 0.0 -asinh1010 asinh inf inf -> inf 0.78539816339744828 -asinh1011 asinh inf nan -> inf nan -asinh1012 asinh nan 0.0 -> nan 0.0 -asinh1013 asinh nan 2.3 -> nan nan -asinh1014 asinh nan inf -> inf nan ignore-real-sign -asinh1015 asinh nan nan -> nan nan -asinh1016 asinh 0.0 -inf -> inf -1.5707963267948966 -asinh1017 asinh 2.3 -inf -> inf -1.5707963267948966 -asinh1018 asinh inf -0.0 -> inf -0.0 -asinh1019 asinh inf -2.3 -> inf -0.0 -asinh1020 asinh inf -inf -> inf -0.78539816339744828 -asinh1021 asinh nan -0.0 -> nan -0.0 -asinh1022 asinh nan -2.3 -> nan nan -asinh1023 asinh nan -inf -> inf nan ignore-real-sign -asinh1024 asinh -0.0 -inf -> -inf -1.5707963267948966 -asinh1025 asinh -2.3 -inf -> -inf -1.5707963267948966 -asinh1026 asinh -0.0 nan -> nan nan -asinh1027 asinh -2.3 nan -> nan nan -asinh1028 asinh -inf -0.0 -> -inf -0.0 -asinh1029 asinh -inf -2.3 -> -inf -0.0 -asinh1030 asinh -inf -inf -> -inf -0.78539816339744828 -asinh1031 asinh -inf nan -> -inf nan -asinh1032 asinh -0.0 inf -> -inf 1.5707963267948966 -asinh1033 asinh -2.3 inf -> -inf 1.5707963267948966 -asinh1034 asinh -inf 0.0 -> -inf 0.0 -asinh1035 asinh -inf 2.3 -> -inf 0.0 -asinh1036 asinh -inf inf -> -inf 0.78539816339744828 - - ---------------------------- --- atan: Inverse tangent -- ---------------------------- - --- zeros -atan0000 atan 0.0 0.0 -> 0.0 0.0 -atan0001 atan 0.0 -0.0 -> 0.0 -0.0 -atan0002 atan -0.0 0.0 -> -0.0 0.0 -atan0003 atan -0.0 -0.0 -> -0.0 -0.0 - --- values along both sides of imaginary axis -atan0010 atan 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324 -atan0011 atan -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324 -atan0012 atan 0.0 -1e-305 -> 0.0 -1e-305 -atan0013 atan -0.0 -1e-305 -> -0.0 -1e-305 -atan0014 atan 0.0 -1e-150 -> 0.0 -1e-150 -atan0015 atan -0.0 -1e-150 -> -0.0 -1e-150 -atan0016 atan 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17 -atan0017 atan -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17 -atan0018 atan 0.0 -0.001 -> 0.0 -0.0010000003333335333 -atan0019 atan -0.0 -0.001 -> -0.0 -0.0010000003333335333 -atan0020 atan 0.0 -0.57899999999999996 -> 0.0 -0.6609570902866303 -atan0021 atan -0.0 -0.57899999999999996 -> -0.0 -0.6609570902866303 -atan0022 atan 0.0 -0.99999999999999989 -> 0.0 -18.714973875118524 -atan0023 atan -0.0 -0.99999999999999989 -> -0.0 -18.714973875118524 -atan0024 atan 0.0 -1.0000000000000002 -> 1.5707963267948966 -18.36840028483855 -atan0025 atan -0.0 -1.0000000000000002 -> -1.5707963267948966 -18.36840028483855 -atan0026 atan 0.0 -1.0009999999999999 -> 1.5707963267948966 -3.8007011672919218 -atan0027 atan -0.0 -1.0009999999999999 -> -1.5707963267948966 -3.8007011672919218 -atan0028 atan 0.0 -2.0 -> 1.5707963267948966 -0.54930614433405489 -atan0029 atan -0.0 -2.0 -> -1.5707963267948966 -0.54930614433405489 -atan0030 atan 0.0 -20.0 -> 1.5707963267948966 -0.050041729278491265 -atan0031 atan -0.0 -20.0 -> -1.5707963267948966 -0.050041729278491265 -atan0032 atan 0.0 -10000000000000000.0 -> 1.5707963267948966 -9.9999999999999998e-17 -atan0033 atan -0.0 -10000000000000000.0 -> -1.5707963267948966 -9.9999999999999998e-17 -atan0034 atan 0.0 -9.9999999999999998e+149 -> 1.5707963267948966 -1e-150 -atan0035 atan -0.0 -9.9999999999999998e+149 -> -1.5707963267948966 -1e-150 -atan0036 atan 0.0 -1.0000000000000001e+299 -> 1.5707963267948966 -9.9999999999999999e-300 -atan0037 atan -0.0 -1.0000000000000001e+299 -> -1.5707963267948966 -9.9999999999999999e-300 -atan0038 atan 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324 -atan0039 atan -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324 -atan0040 atan 0.0 1e-305 -> 0.0 1e-305 -atan0041 atan -0.0 1e-305 -> -0.0 1e-305 -atan0042 atan 0.0 1e-150 -> 0.0 1e-150 -atan0043 atan -0.0 1e-150 -> -0.0 1e-150 -atan0044 atan 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17 -atan0045 atan -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17 -atan0046 atan 0.0 0.001 -> 0.0 0.0010000003333335333 -atan0047 atan -0.0 0.001 -> -0.0 0.0010000003333335333 -atan0048 atan 0.0 0.57899999999999996 -> 0.0 0.6609570902866303 -atan0049 atan -0.0 0.57899999999999996 -> -0.0 0.6609570902866303 -atan0050 atan 0.0 0.99999999999999989 -> 0.0 18.714973875118524 -atan0051 atan -0.0 0.99999999999999989 -> -0.0 18.714973875118524 -atan0052 atan 0.0 1.0000000000000002 -> 1.5707963267948966 18.36840028483855 -atan0053 atan -0.0 1.0000000000000002 -> -1.5707963267948966 18.36840028483855 -atan0054 atan 0.0 1.0009999999999999 -> 1.5707963267948966 3.8007011672919218 -atan0055 atan -0.0 1.0009999999999999 -> -1.5707963267948966 3.8007011672919218 -atan0056 atan 0.0 2.0 -> 1.5707963267948966 0.54930614433405489 -atan0057 atan -0.0 2.0 -> -1.5707963267948966 0.54930614433405489 -atan0058 atan 0.0 20.0 -> 1.5707963267948966 0.050041729278491265 -atan0059 atan -0.0 20.0 -> -1.5707963267948966 0.050041729278491265 -atan0060 atan 0.0 10000000000000000.0 -> 1.5707963267948966 9.9999999999999998e-17 -atan0061 atan -0.0 10000000000000000.0 -> -1.5707963267948966 9.9999999999999998e-17 -atan0062 atan 0.0 9.9999999999999998e+149 -> 1.5707963267948966 1e-150 -atan0063 atan -0.0 9.9999999999999998e+149 -> -1.5707963267948966 1e-150 -atan0064 atan 0.0 1.0000000000000001e+299 -> 1.5707963267948966 9.9999999999999999e-300 -atan0065 atan -0.0 1.0000000000000001e+299 -> -1.5707963267948966 9.9999999999999999e-300 - --- random inputs -atan0100 atan -0.32538873661060214 -1.5530461550412578 -> -1.3682728427554227 -0.69451401598762041 -atan0101 atan -0.45863393495197929 -4799.1747094903594 -> -1.5707963068820623 -0.00020836916050636145 -atan0102 atan -8.3006999685976162 -2.6788890251790938 -> -1.4619862771810199 -0.034811669653327826 -atan0103 atan -1.8836307682985314 -1.1441976638861771 -> -1.1839984370871612 -0.20630956157312796 -atan0104 atan -0.00063230482407491669 -4.9312520961829485 -> -1.5707692093223147 -0.20563867743008304 -atan0105 atan -0.84278137150065946 179012.37493146997 -> -1.5707963267685969 5.5862059836425272e-06 -atan0106 atan -0.95487853984049287 14.311334539886177 -> -1.5661322859434561 0.069676024526232005 -atan0107 atan -1.3513252539663239 6.0500727021632198e-08 -> -0.93371676315220975 2.140800269742656e-08 -atan0108 atan -0.20566254458595795 0.11933771944159823 -> -0.20556463711174916 0.11493405387141732 -atan0109 atan -0.58563718795408559 0.64438965423212868 -> -0.68361089300233124 0.46759762751800249 -atan0110 atan 48.479267751948292 -78.386382460112543 -> 1.5650888770910523 -0.0092276811373297584 -atan0111 atan 1.0575373914056061 -0.75988012377296987 -> 0.94430886722043594 -0.31915698126703118 -atan0112 atan 4444810.4314677203 -0.56553404593942558 -> 1.5707961018134231 -2.8625446437701909e-14 -atan0113 atan 0.010101405082520009 -0.032932668550282478 -> 0.01011202676646334 -0.032941214776834996 -atan0114 atan 1.5353585300154911 -2.1947099346796519 -> 1.3400310739206394 -0.29996003607449045 -atan0115 atan 0.21869457055670882 9.9915684254007093 -> 1.5685846078876444 0.1003716881759439 -atan0116 atan 0.17783290150246836 0.064334689863650957 -> 0.17668728064286277 0.062435808728873846 -atan0117 atan 15.757474087615918 383.57262142534 -> 1.5706894060369621 0.0026026817278826603 -atan0118 atan 10.587017408533317 0.21720238081843438 -> 1.4766594681336236 0.0019199097383010061 -atan0119 atan 0.86026078678781204 0.1230148609359502 -> 0.7147259322534929 0.070551221954286605 - --- values near infinity -atan0200 atan 7.8764397011195798e+307 8.1647921137746308e+307 -> 1.5707963267948966 6.3439446939604493e-309 -atan0201 atan 1.5873698696131487e+308 -1.0780367422960641e+308 -> 1.5707963267948966 -2.9279309368530781e-309 -atan0202 atan -1.5844551864825834e+308 1.0290657809098675e+308 -> -1.5707963267948966 2.8829614736961417e-309 -atan0203 atan -1.3168792562524032e+308 -9.088432341614825e+307 -> -1.5707963267948966 -3.5499373057390056e-309 -atan0204 atan 0.0 1.0360465742258337e+308 -> 1.5707963267948966 9.6520757355646018e-309 -atan0205 atan -0.0 1.0045063210373196e+308 -> -1.5707963267948966 9.955138947929503e-309 -atan0206 atan 0.0 -9.5155296715763696e+307 -> 1.5707963267948966 -1.050913648020118e-308 -atan0207 atan -0.0 -1.5565700490496501e+308 -> -1.5707963267948966 -6.4243816114189071e-309 -atan0208 atan 1.2956339389525244e+308 0.0 -> 1.5707963267948966 0.0 -atan0209 atan 1.4408126243772151e+308 -0.0 -> 1.5707963267948966 -0.0 -atan0210 atan -1.0631786461936417e+308 0.0 -> -1.5707963267948966 0.0 -atan0211 atan -1.0516056964171069e+308 -0.0 -> -1.5707963267948966 -0.0 -atan0212 atan 1.236162319603838e+308 4.6827953496242936 -> 1.5707963267948966 0.0 -atan0213 atan 7.000516472897218e+307 -5.8631608017844163 -> 1.5707963267948966 -0.0 -atan0214 atan -1.5053444003338508e+308 5.1199197268420313 -> -1.5707963267948966 0.0 -atan0215 atan -1.399172518147259e+308 -3.5687766472913673 -> -1.5707963267948966 -0.0 -atan0216 atan 8.1252833070803021 6.2782953917343822e+307 -> 1.5707963267948966 1.5927890256908564e-308 -atan0217 atan 2.8034285947515167 -1.3378049775753878e+308 -> 1.5707963267948966 -7.4749310756219562e-309 -atan0218 atan -1.4073509988974953 1.6776381785968355e+308 -> -1.5707963267948966 5.9607608646364569e-309 -atan0219 atan -2.7135551527592119 -1.281567445525738e+308 -> -1.5707963267948966 -7.8029447727565326e-309 - --- imaginary part = +/-1, real part tiny -atan0300 atan -1e-150 -1.0 -> -0.78539816339744828 -173.04045556483339 -atan0301 atan 1e-155 1.0 -> 0.78539816339744828 178.79691829731851 -atan0302 atan 9.9999999999999999e-161 -1.0 -> 0.78539816339744828 -184.55338102980363 -atan0303 atan -1e-165 1.0 -> -0.78539816339744828 190.30984376228875 -atan0304 atan -9.9998886718268301e-321 -1.0 -> -0.78539816339744828 -368.76019403576692 - - ---------------------------------------- --- atanh: Inverse hyperbolic tangent -- ---------------------------------------- - --- zeros -atanh0000 atanh 0.0 0.0 -> 0.0 0.0 -atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0 -atanh0002 atanh -0.0 0.0 -> -0.0 0.0 -atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0 - --- values along both sides of real axis -atanh0010 atanh -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0 -atanh0011 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 -atanh0012 atanh -1e-305 0.0 -> -1e-305 0.0 -atanh0013 atanh -1e-305 -0.0 -> -1e-305 -0.0 -atanh0014 atanh -1e-150 0.0 -> -1e-150 0.0 -atanh0015 atanh -1e-150 -0.0 -> -1e-150 -0.0 -atanh0016 atanh -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0 -atanh0017 atanh -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0 -atanh0018 atanh -0.001 0.0 -> -0.0010000003333335333 0.0 -atanh0019 atanh -0.001 -0.0 -> -0.0010000003333335333 -0.0 -atanh0020 atanh -0.57899999999999996 0.0 -> -0.6609570902866303 0.0 -atanh0021 atanh -0.57899999999999996 -0.0 -> -0.6609570902866303 -0.0 -atanh0022 atanh -0.99999999999999989 0.0 -> -18.714973875118524 0.0 -atanh0023 atanh -0.99999999999999989 -0.0 -> -18.714973875118524 -0.0 -atanh0024 atanh -1.0000000000000002 0.0 -> -18.36840028483855 1.5707963267948966 -atanh0025 atanh -1.0000000000000002 -0.0 -> -18.36840028483855 -1.5707963267948966 -atanh0026 atanh -1.0009999999999999 0.0 -> -3.8007011672919218 1.5707963267948966 -atanh0027 atanh -1.0009999999999999 -0.0 -> -3.8007011672919218 -1.5707963267948966 -atanh0028 atanh -2.0 0.0 -> -0.54930614433405489 1.5707963267948966 -atanh0029 atanh -2.0 -0.0 -> -0.54930614433405489 -1.5707963267948966 -atanh0030 atanh -23.0 0.0 -> -0.043505688494814884 1.5707963267948966 -atanh0031 atanh -23.0 -0.0 -> -0.043505688494814884 -1.5707963267948966 -atanh0032 atanh -10000000000000000.0 0.0 -> -9.9999999999999998e-17 1.5707963267948966 -atanh0033 atanh -10000000000000000.0 -0.0 -> -9.9999999999999998e-17 -1.5707963267948966 -atanh0034 atanh -9.9999999999999998e+149 0.0 -> -1e-150 1.5707963267948966 -atanh0035 atanh -9.9999999999999998e+149 -0.0 -> -1e-150 -1.5707963267948966 -atanh0036 atanh -1.0000000000000001e+299 0.0 -> -9.9999999999999999e-300 1.5707963267948966 -atanh0037 atanh -1.0000000000000001e+299 -0.0 -> -9.9999999999999999e-300 -1.5707963267948966 -atanh0038 atanh 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0 -atanh0039 atanh 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0 -atanh0040 atanh 1e-305 0.0 -> 1e-305 0.0 -atanh0041 atanh 1e-305 -0.0 -> 1e-305 -0.0 -atanh0042 atanh 1e-150 0.0 -> 1e-150 0.0 -atanh0043 atanh 1e-150 -0.0 -> 1e-150 -0.0 -atanh0044 atanh 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0 -atanh0045 atanh 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0 -atanh0046 atanh 0.001 0.0 -> 0.0010000003333335333 0.0 -atanh0047 atanh 0.001 -0.0 -> 0.0010000003333335333 -0.0 -atanh0048 atanh 0.57899999999999996 0.0 -> 0.6609570902866303 0.0 -atanh0049 atanh 0.57899999999999996 -0.0 -> 0.6609570902866303 -0.0 -atanh0050 atanh 0.99999999999999989 0.0 -> 18.714973875118524 0.0 -atanh0051 atanh 0.99999999999999989 -0.0 -> 18.714973875118524 -0.0 -atanh0052 atanh 1.0000000000000002 0.0 -> 18.36840028483855 1.5707963267948966 -atanh0053 atanh 1.0000000000000002 -0.0 -> 18.36840028483855 -1.5707963267948966 -atanh0054 atanh 1.0009999999999999 0.0 -> 3.8007011672919218 1.5707963267948966 -atanh0055 atanh 1.0009999999999999 -0.0 -> 3.8007011672919218 -1.5707963267948966 -atanh0056 atanh 2.0 0.0 -> 0.54930614433405489 1.5707963267948966 -atanh0057 atanh 2.0 -0.0 -> 0.54930614433405489 -1.5707963267948966 -atanh0058 atanh 23.0 0.0 -> 0.043505688494814884 1.5707963267948966 -atanh0059 atanh 23.0 -0.0 -> 0.043505688494814884 -1.5707963267948966 -atanh0060 atanh 10000000000000000.0 0.0 -> 9.9999999999999998e-17 1.5707963267948966 -atanh0061 atanh 10000000000000000.0 -0.0 -> 9.9999999999999998e-17 -1.5707963267948966 -atanh0062 atanh 9.9999999999999998e+149 0.0 -> 1e-150 1.5707963267948966 -atanh0063 atanh 9.9999999999999998e+149 -0.0 -> 1e-150 -1.5707963267948966 -atanh0064 atanh 1.0000000000000001e+299 0.0 -> 9.9999999999999999e-300 1.5707963267948966 -atanh0065 atanh 1.0000000000000001e+299 -0.0 -> 9.9999999999999999e-300 -1.5707963267948966 - --- random inputs -atanh0100 atanh -0.54460925980633501 -0.54038050126721027 -> -0.41984265808446974 -0.60354153938352828 -atanh0101 atanh -1.6934614269829051 -0.48807386108113621 -> -0.58592769102243281 -1.3537837470975898 -atanh0102 atanh -1.3467293985501207 -0.47868354895395876 -> -0.69961624370709985 -1.1994450156570076 -atanh0103 atanh -5.6142232418984888 -544551613.39307702 -> -1.8932657550925744e-17 -1.5707963249585235 -atanh0104 atanh -0.011841460381263651 -3.259978899823385 -> -0.0010183936547405188 -1.2731614020743838 -atanh0105 atanh -0.0073345736950029532 0.35821949670922248 -> -0.0065004869024682466 0.34399359971920895 -atanh0106 atanh -13.866782244320014 0.9541129545860273 -> -0.071896852055058899 1.5658322704631409 -atanh0107 atanh -708.59964982780775 21.984802159266675 -> -0.0014098779074189741 1.5707525842838959 -atanh0108 atanh -30.916832076030602 1.3691897138829843 -> -0.032292682045743676 1.5693652094847115 -atanh0109 atanh -0.57461806339861754 0.29534797443913063 -> -0.56467464472482765 0.39615612824172625 -atanh0110 atanh 0.40089246737415685 -1.632285984300659 -> 0.1063832707890608 -1.0402821335326482 -atanh0111 atanh 2119.6167688262176 -1.5383653437377242e+17 -> 8.9565008518382049e-32 -1.5707963267948966 -atanh0112 atanh 756.86017850941641 -6.6064087133223817 -> 0.0013211481136820046 -1.5707847948702234 -atanh0113 atanh 4.0490617718041602 -2.5784456791040652e-12 -> 0.25218425538553618 -1.5707963267947291 -atanh0114 atanh 10.589254957173523 -0.13956391149624509 -> 0.094700890282197664 -1.5695407140217623 -atanh0115 atanh 1.0171187553160499 0.70766113465354019 -> 0.55260251975367791 0.96619711116641682 -atanh0116 atanh 0.031645502527750849 0.067319983726544394 -> 0.031513018344086742 0.067285437670549036 -atanh0117 atanh 0.13670177624994517 0.43240089361857947 -> 0.11538933151017253 0.41392008145336212 -atanh0118 atanh 0.64173899243596688 2.9008577686695256 -> 0.065680142424134405 1.2518535724053921 -atanh0119 atanh 0.19313813528025942 38.799619150741869 -> 0.00012820765917366644 1.5450292202823612 - --- values near infinity -atanh0200 atanh 5.3242646831347954e+307 1.3740396080084153e+308 -> 2.4519253616695576e-309 1.5707963267948966 -atanh0201 atanh 1.158701641241358e+308 -6.5579268873375853e+307 -> 6.5365375267795098e-309 -1.5707963267948966 -atanh0202 atanh -1.3435325735762247e+308 9.8947369259601547e+307 -> -4.8256680906589956e-309 1.5707963267948966 -atanh0203 atanh -1.4359857522598942e+308 -9.4701204702391004e+307 -> -4.8531282262872645e-309 -1.5707963267948966 -atanh0204 atanh 0.0 5.6614181068098497e+307 -> 0.0 1.5707963267948966 -atanh0205 atanh -0.0 6.9813212721450139e+307 -> -0.0 1.5707963267948966 -atanh0206 atanh 0.0 -7.4970613060311453e+307 -> 0.0 -1.5707963267948966 -atanh0207 atanh -0.0 -1.5280601880314068e+308 -> -0.0 -1.5707963267948966 -atanh0208 atanh 8.2219472336000745e+307 0.0 -> 1.2162568933954813e-308 1.5707963267948966 -atanh0209 atanh 1.4811519617280899e+308 -0.0 -> 6.7515017083951325e-309 -1.5707963267948966 -atanh0210 atanh -1.2282016263598785e+308 0.0 -> -8.1419856360537615e-309 1.5707963267948966 -atanh0211 atanh -1.0616427760154426e+308 -0.0 -> -9.4193642399489563e-309 -1.5707963267948966 -atanh0212 atanh 1.2971536510180682e+308 5.2847948452333293 -> 7.7091869510998328e-309 1.5707963267948966 -atanh0213 atanh 1.1849860977411851e+308 -7.9781906447459949 -> 8.4389175696339014e-309 -1.5707963267948966 -atanh0214 atanh -1.4029969422586635e+308 0.93891986543663375 -> -7.127599283218073e-309 1.5707963267948966 -atanh0215 atanh -4.7508098912248211e+307 -8.2702421247039908 -> -2.1049042645278043e-308 -1.5707963267948966 -atanh0216 atanh 8.2680742115769998 8.1153898410918065e+307 -> 0.0 1.5707963267948966 -atanh0217 atanh 1.2575325146218885 -1.4746679147661649e+308 -> 0.0 -1.5707963267948966 -atanh0218 atanh -2.4618803682310899 1.3781522717005568e+308 -> -0.0 1.5707963267948966 -atanh0219 atanh -4.0952386694788112 -1.231083376353703e+308 -> -0.0 -1.5707963267948966 - --- values near 0 -atanh0220 atanh 3.8017563659811628e-314 2.6635484239074319e-312 -> 3.8017563659811628e-314 2.6635484239074319e-312 -atanh0221 atanh 1.7391110733611878e-321 -4.3547800672541419e-313 -> 1.7391110733611878e-321 -4.3547800672541419e-313 -atanh0222 atanh -5.9656816081325078e-317 9.9692253555416263e-313 -> -5.9656816081325078e-317 9.9692253555416263e-313 -atanh0223 atanh -6.5606671178400239e-313 -2.1680936406357335e-309 -> -6.5606671178400239e-313 -2.1680936406357335e-309 -atanh0224 atanh 0.0 2.5230944401820779e-319 -> 0.0 2.5230944401820779e-319 -atanh0225 atanh -0.0 5.6066569490064658e-320 -> -0.0 5.6066569490064658e-320 -atanh0226 atanh 0.0 -2.4222487249468377e-317 -> 0.0 -2.4222487249468377e-317 -atanh0227 atanh -0.0 -3.0861101089206037e-316 -> -0.0 -3.0861101089206037e-316 -atanh0228 atanh 3.1219222884393986e-310 0.0 -> 3.1219222884393986e-310 0.0 -atanh0229 atanh 9.8926337564976196e-309 -0.0 -> 9.8926337564976196e-309 -0.0 -atanh0230 atanh -1.5462535092918154e-312 0.0 -> -1.5462535092918154e-312 0.0 -atanh0231 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0 - --- real part = +/-1, imaginary part tiny -atanh0300 atanh 1.0 1e-153 -> 176.49433320432448 0.78539816339744828 -atanh0301 atanh 1.0 9.9999999999999997e-155 -> 177.64562575082149 0.78539816339744828 -atanh0302 atanh -1.0 1e-161 -> -185.70467357630065 0.78539816339744828 -atanh0303 atanh 1.0 -1e-165 -> 190.30984376228875 -0.78539816339744828 -atanh0304 atanh -1.0 -9.8813129168249309e-324 -> -372.22003596069061 -0.78539816339744828 - --- special values -atanh1000 atanh 0.0 0.0 -> 0.0 0.0 -atanh1001 atanh 0.0 nan -> 0.0 nan -atanh1002 atanh 1.0 0.0 -> inf 0.0 divide-by-zero -atanh1003 atanh 0.0 inf -> 0.0 1.5707963267948966 -atanh1004 atanh 2.3 inf -> 0.0 1.5707963267948966 -atanh1005 atanh 2.3 nan -> nan nan -atanh1006 atanh inf 0.0 -> 0.0 1.5707963267948966 -atanh1007 atanh inf 2.3 -> 0.0 1.5707963267948966 -atanh1008 atanh inf inf -> 0.0 1.5707963267948966 -atanh1009 atanh inf nan -> 0.0 nan -atanh1010 atanh nan 0.0 -> nan nan -atanh1011 atanh nan 2.3 -> nan nan -atanh1012 atanh nan inf -> 0.0 1.5707963267948966 ignore-real-sign -atanh1013 atanh nan nan -> nan nan -atanh1014 atanh 0.0 -0.0 -> 0.0 -0.0 -atanh1015 atanh 1.0 -0.0 -> inf -0.0 divide-by-zero -atanh1016 atanh 0.0 -inf -> 0.0 -1.5707963267948966 -atanh1017 atanh 2.3 -inf -> 0.0 -1.5707963267948966 -atanh1018 atanh inf -0.0 -> 0.0 -1.5707963267948966 -atanh1019 atanh inf -2.3 -> 0.0 -1.5707963267948966 -atanh1020 atanh inf -inf -> 0.0 -1.5707963267948966 -atanh1021 atanh nan -0.0 -> nan nan -atanh1022 atanh nan -2.3 -> nan nan -atanh1023 atanh nan -inf -> 0.0 -1.5707963267948966 ignore-real-sign -atanh1024 atanh -0.0 -0.0 -> -0.0 -0.0 -atanh1025 atanh -0.0 nan -> -0.0 nan -atanh1026 atanh -1.0 -0.0 -> -inf -0.0 divide-by-zero -atanh1027 atanh -0.0 -inf -> -0.0 -1.5707963267948966 -atanh1028 atanh -2.3 -inf -> -0.0 -1.5707963267948966 -atanh1029 atanh -2.3 nan -> nan nan -atanh1030 atanh -inf -0.0 -> -0.0 -1.5707963267948966 -atanh1031 atanh -inf -2.3 -> -0.0 -1.5707963267948966 -atanh1032 atanh -inf -inf -> -0.0 -1.5707963267948966 -atanh1033 atanh -inf nan -> -0.0 nan -atanh1034 atanh -0.0 0.0 -> -0.0 0.0 -atanh1035 atanh -1.0 0.0 -> -inf 0.0 divide-by-zero -atanh1036 atanh -0.0 inf -> -0.0 1.5707963267948966 -atanh1037 atanh -2.3 inf -> -0.0 1.5707963267948966 -atanh1038 atanh -inf 0.0 -> -0.0 1.5707963267948966 -atanh1039 atanh -inf 2.3 -> -0.0 1.5707963267948966 -atanh1040 atanh -inf inf -> -0.0 1.5707963267948966 - - ----------------------------- --- log: Natural logarithm -- ----------------------------- - -log0000 log 1.0 0.0 -> 0.0 0.0 -log0001 log 1.0 -0.0 -> 0.0 -0.0 -log0002 log -1.0 0.0 -> 0.0 3.1415926535897931 -log0003 log -1.0 -0.0 -> 0.0 -3.1415926535897931 --- values along both sides of real axis -log0010 log -9.8813129168249309e-324 0.0 -> -743.74692474082133 3.1415926535897931 -log0011 log -9.8813129168249309e-324 -0.0 -> -743.74692474082133 -3.1415926535897931 -log0012 log -1e-305 0.0 -> -702.28845336318398 3.1415926535897931 -log0013 log -1e-305 -0.0 -> -702.28845336318398 -3.1415926535897931 -log0014 log -1e-150 0.0 -> -345.38776394910684 3.1415926535897931 -log0015 log -1e-150 -0.0 -> -345.38776394910684 -3.1415926535897931 -log0016 log -9.9999999999999998e-17 0.0 -> -36.841361487904734 3.1415926535897931 -log0017 log -9.9999999999999998e-17 -0.0 -> -36.841361487904734 -3.1415926535897931 -log0018 log -0.001 0.0 -> -6.9077552789821368 3.1415926535897931 -log0019 log -0.001 -0.0 -> -6.9077552789821368 -3.1415926535897931 -log0020 log -0.57899999999999996 0.0 -> -0.54645280140914188 3.1415926535897931 -log0021 log -0.57899999999999996 -0.0 -> -0.54645280140914188 -3.1415926535897931 -log0022 log -0.99999999999999989 0.0 -> -1.1102230246251565e-16 3.1415926535897931 -log0023 log -0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -3.1415926535897931 -log0024 log -1.0000000000000002 0.0 -> 2.2204460492503128e-16 3.1415926535897931 -log0025 log -1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -3.1415926535897931 -log0026 log -1.0009999999999999 0.0 -> 0.00099950033308342321 3.1415926535897931 -log0027 log -1.0009999999999999 -0.0 -> 0.00099950033308342321 -3.1415926535897931 -log0028 log -2.0 0.0 -> 0.69314718055994529 3.1415926535897931 -log0029 log -2.0 -0.0 -> 0.69314718055994529 -3.1415926535897931 -log0030 log -23.0 0.0 -> 3.1354942159291497 3.1415926535897931 -log0031 log -23.0 -0.0 -> 3.1354942159291497 -3.1415926535897931 -log0032 log -10000000000000000.0 0.0 -> 36.841361487904734 3.1415926535897931 -log0033 log -10000000000000000.0 -0.0 -> 36.841361487904734 -3.1415926535897931 -log0034 log -9.9999999999999998e+149 0.0 -> 345.38776394910684 3.1415926535897931 -log0035 log -9.9999999999999998e+149 -0.0 -> 345.38776394910684 -3.1415926535897931 -log0036 log -1.0000000000000001e+299 0.0 -> 688.47294280521965 3.1415926535897931 -log0037 log -1.0000000000000001e+299 -0.0 -> 688.47294280521965 -3.1415926535897931 -log0038 log 9.8813129168249309e-324 0.0 -> -743.74692474082133 0.0 -log0039 log 9.8813129168249309e-324 -0.0 -> -743.74692474082133 -0.0 -log0040 log 1e-305 0.0 -> -702.28845336318398 0.0 -log0041 log 1e-305 -0.0 -> -702.28845336318398 -0.0 -log0042 log 1e-150 0.0 -> -345.38776394910684 0.0 -log0043 log 1e-150 -0.0 -> -345.38776394910684 -0.0 -log0044 log 9.9999999999999998e-17 0.0 -> -36.841361487904734 0.0 -log0045 log 9.9999999999999998e-17 -0.0 -> -36.841361487904734 -0.0 -log0046 log 0.001 0.0 -> -6.9077552789821368 0.0 -log0047 log 0.001 -0.0 -> -6.9077552789821368 -0.0 -log0048 log 0.57899999999999996 0.0 -> -0.54645280140914188 0.0 -log0049 log 0.57899999999999996 -0.0 -> -0.54645280140914188 -0.0 -log0050 log 0.99999999999999989 0.0 -> -1.1102230246251565e-16 0.0 -log0051 log 0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -0.0 -log0052 log 1.0000000000000002 0.0 -> 2.2204460492503128e-16 0.0 -log0053 log 1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -0.0 -log0054 log 1.0009999999999999 0.0 -> 0.00099950033308342321 0.0 -log0055 log 1.0009999999999999 -0.0 -> 0.00099950033308342321 -0.0 -log0056 log 2.0 0.0 -> 0.69314718055994529 0.0 -log0057 log 2.0 -0.0 -> 0.69314718055994529 -0.0 -log0058 log 23.0 0.0 -> 3.1354942159291497 0.0 -log0059 log 23.0 -0.0 -> 3.1354942159291497 -0.0 -log0060 log 10000000000000000.0 0.0 -> 36.841361487904734 0.0 -log0061 log 10000000000000000.0 -0.0 -> 36.841361487904734 -0.0 -log0062 log 9.9999999999999998e+149 0.0 -> 345.38776394910684 0.0 -log0063 log 9.9999999999999998e+149 -0.0 -> 345.38776394910684 -0.0 -log0064 log 1.0000000000000001e+299 0.0 -> 688.47294280521965 0.0 -log0065 log 1.0000000000000001e+299 -0.0 -> 688.47294280521965 -0.0 - --- random inputs -log0066 log -1.9830454945186191e-16 -2.0334448025673346 -> 0.70973130194329803 -1.5707963267948968 -log0067 log -0.96745853024741857 -0.84995816228299692 -> 0.25292811398722387 -2.4207570438536905 -log0068 log -0.1603644313948418 -0.2929942111041835 -> -1.0965857872427374 -2.0715870859971419 -log0069 log -0.15917913168438699 -0.25238799251132177 -> -1.2093477313249901 -2.1334784232033863 -log0070 log -0.68907818535078802 -3.0693105853476346 -> 1.1460398629184565 -1.7916403813913211 -log0071 log -17.268133447565589 6.8165120014604756 -> 2.9212694465974836 2.7656245081603164 -log0072 log -1.7153894479690328 26.434055372802636 -> 3.2767542953718003 1.6355986276341734 -log0073 log -8.0456794648936578e-06 0.19722758057570208 -> -1.6233969848296075 1.5708371206810101 -log0074 log -2.4306442691323173 0.6846919750700996 -> 0.92633592001969589 2.8670160576718331 -log0075 log -3.5488049250888194 0.45324040643185254 -> 1.2747008374256426 3.0145640007885111 -log0076 log 0.18418516851510189 -0.26062518836212617 -> -1.1421287121940344 -0.95558440841183434 -log0077 log 2.7124837795638399 -13.148769067133387 -> 2.5971659975706802 -1.3673583045209439 -log0078 log 3.6521275476169149e-13 -3.7820543023170673e-05 -> -10.182658136741569 -1.5707963171384316 -log0079 log 5.0877545813862239 -1.2834978326786852 -> 1.6576856213076328 -0.24711583497738485 -log0080 log 0.26477986808461512 -0.67659001194187429 -> -0.31944085207999973 -1.197773671987121 -log0081 log 0.0014754261398071962 5.3514691608205442 -> 1.6773711707153829 1.5705206219261802 -log0082 log 0.29667334462157885 0.00020056045042584795 -> -1.2151233667079588 0.00067603114168689204 -log0083 log 0.82104233671099425 3.9005387130133102 -> 1.3827918965299593 1.3633304701848363 -log0084 log 0.27268135358180667 124.42088110945804 -> 4.8236724223559229 1.5686047258789015 -log0085 log 0.0026286959168267485 0.47795808180573013 -> -0.73821712137809126 1.5652965360960087 - --- values near infinity -log0100 log 1.0512025744003172e+308 7.2621669750664611e+307 -> 709.44123967814494 0.60455434048332968 -log0101 log 5.5344249034372126e+307 -1.2155859158431275e+308 -> 709.48562300345679 -1.143553056717973 -log0102 log -1.3155575403469408e+308 1.1610793541663864e+308 -> 709.75847809546428 2.41848796504974 -log0103 log -1.632366720973235e+308 -1.54299446211448e+308 -> 710.00545236515586 -2.3843326028455087 -log0104 log 0.0 5.9449276692327712e+307 -> 708.67616191258526 1.5707963267948966 -log0105 log -0.0 1.1201850459025692e+308 -> 709.30970253338171 1.5707963267948966 -log0106 log 0.0 -1.6214225933466528e+308 -> 709.6795125501086 -1.5707963267948966 -log0107 log -0.0 -1.7453269791591058e+308 -> 709.75315056087379 -1.5707963267948966 -log0108 log 1.440860577601428e+308 0.0 -> 709.56144920058262 0.0 -log0109 log 1.391515176148282e+308 -0.0 -> 709.52660185041327 -0.0 -log0110 log -1.201354401295296e+308 0.0 -> 709.37965823023956 3.1415926535897931 -log0111 log -1.6704337825976804e+308 -0.0 -> 709.70929198492399 -3.1415926535897931 -log0112 log 7.2276974655190223e+307 7.94879711369164 -> 708.87154406512104 1.0997689307850458e-307 -log0113 log 1.1207859593716076e+308 -6.1956200868221147 -> 709.31023883080104 -5.5279244310803286e-308 -log0114 log -4.6678933874471045e+307 9.947107893220382 -> 708.43433142431388 3.1415926535897931 -log0115 log -1.5108012453950142e+308 -5.3117197179375619 -> 709.60884877835008 -3.1415926535897931 -log0116 log 7.4903750871504435 1.5320703776626352e+308 -> 709.62282865085137 1.5707963267948966 -log0117 log 5.9760325525654778 -8.0149473997349123e+307 -> 708.97493177248396 -1.5707963267948966 -log0118 log -7.880194206386629 1.7861845814767441e+308 -> 709.77629046837137 1.5707963267948966 -log0119 log -9.886438993852865 -6.19235781080747e+307 -> 708.71693946977302 -1.5707963267948966 - --- values near 0 -log0120 log 2.2996867579227779e-308 6.7861840770939125e-312 -> -708.36343567717392 0.00029509166223339815 -log0121 log 6.9169190417774516e-323 -9.0414013188948118e-322 -> -739.22766796468386 -1.4944423210001669 -log0122 log -1.5378064962914011e-316 1.8243628389354635e-310 -> -713.20014803142965 1.5707971697228842 -log0123 log -2.3319898483706837e-321 -2.2358763941866371e-313 -> -719.9045008332522 -1.570796337224766 -log0124 log 0.0 3.872770101081121e-315 -> -723.96033425374401 1.5707963267948966 -log0125 log -0.0 9.6342800939043076e-322 -> -739.16707236281752 1.5707963267948966 -log0126 log 0.0 -2.266099393427834e-308 -> -708.37814861757965 -1.5707963267948966 -log0127 log -0.0 -2.1184695673766626e-315 -> -724.56361036731812 -1.5707963267948966 -log0128 log 1.1363509854348671e-322 0.0 -> -741.30457770545206 0.0 -log0129 log 3.5572726500569751e-322 -0.0 -> -740.16340580236522 -0.0 -log0130 log -2.3696071074040593e-310 0.0 -> -712.93865466421641 3.1415926535897931 -log0131 log -2.813283897266934e-317 -0.0 -> -728.88512203138862 -3.1415926535897931 - --- values near the unit circle -log0200 log -0.59999999999999998 0.80000000000000004 -> 2.2204460492503132e-17 2.2142974355881808 -log0201 log 0.79999999999999993 0.60000000000000009 -> 6.1629758220391547e-33 0.64350110879328448 - --- special values -log1000 log -0.0 0.0 -> -inf 3.1415926535897931 divide-by-zero -log1001 log 0.0 0.0 -> -inf 0.0 divide-by-zero -log1002 log 0.0 inf -> inf 1.5707963267948966 -log1003 log 2.3 inf -> inf 1.5707963267948966 -log1004 log -0.0 inf -> inf 1.5707963267948966 -log1005 log -2.3 inf -> inf 1.5707963267948966 -log1006 log 0.0 nan -> nan nan -log1007 log 2.3 nan -> nan nan -log1008 log -0.0 nan -> nan nan -log1009 log -2.3 nan -> nan nan -log1010 log -inf 0.0 -> inf 3.1415926535897931 -log1011 log -inf 2.3 -> inf 3.1415926535897931 -log1012 log inf 0.0 -> inf 0.0 -log1013 log inf 2.3 -> inf 0.0 -log1014 log -inf inf -> inf 2.3561944901923448 -log1015 log inf inf -> inf 0.78539816339744828 -log1016 log inf nan -> inf nan -log1017 log -inf nan -> inf nan -log1018 log nan 0.0 -> nan nan -log1019 log nan 2.3 -> nan nan -log1020 log nan inf -> inf nan -log1021 log nan nan -> nan nan -log1022 log -0.0 -0.0 -> -inf -3.1415926535897931 divide-by-zero -log1023 log 0.0 -0.0 -> -inf -0.0 divide-by-zero -log1024 log 0.0 -inf -> inf -1.5707963267948966 -log1025 log 2.3 -inf -> inf -1.5707963267948966 -log1026 log -0.0 -inf -> inf -1.5707963267948966 -log1027 log -2.3 -inf -> inf -1.5707963267948966 -log1028 log -inf -0.0 -> inf -3.1415926535897931 -log1029 log -inf -2.3 -> inf -3.1415926535897931 -log1030 log inf -0.0 -> inf -0.0 -log1031 log inf -2.3 -> inf -0.0 -log1032 log -inf -inf -> inf -2.3561944901923448 -log1033 log inf -inf -> inf -0.78539816339744828 -log1034 log nan -0.0 -> nan nan -log1035 log nan -2.3 -> nan nan -log1036 log nan -inf -> inf nan - - ------------------------------- --- log10: Logarithm base 10 -- ------------------------------- - -logt0000 log10 1.0 0.0 -> 0.0 0.0 -logt0001 log10 1.0 -0.0 -> 0.0 -0.0 -logt0002 log10 -1.0 0.0 -> 0.0 1.3643763538418414 -logt0003 log10 -1.0 -0.0 -> 0.0 -1.3643763538418414 --- values along both sides of real axis -logt0010 log10 -9.8813129168249309e-324 0.0 -> -323.0051853474518 1.3643763538418414 -logt0011 log10 -9.8813129168249309e-324 -0.0 -> -323.0051853474518 -1.3643763538418414 -logt0012 log10 -1e-305 0.0 -> -305.0 1.3643763538418414 -logt0013 log10 -1e-305 -0.0 -> -305.0 -1.3643763538418414 -logt0014 log10 -1e-150 0.0 -> -150.0 1.3643763538418414 -logt0015 log10 -1e-150 -0.0 -> -150.0 -1.3643763538418414 -logt0016 log10 -9.9999999999999998e-17 0.0 -> -16.0 1.3643763538418414 -logt0017 log10 -9.9999999999999998e-17 -0.0 -> -16.0 -1.3643763538418414 -logt0018 log10 -0.001 0.0 -> -3.0 1.3643763538418414 -logt0019 log10 -0.001 -0.0 -> -3.0 -1.3643763538418414 -logt0020 log10 -0.57899999999999996 0.0 -> -0.23732143627256383 1.3643763538418414 -logt0021 log10 -0.57899999999999996 -0.0 -> -0.23732143627256383 -1.3643763538418414 -logt0022 log10 -0.99999999999999989 0.0 -> -4.821637332766436e-17 1.3643763538418414 -logt0023 log10 -0.99999999999999989 -0.0 -> -4.821637332766436e-17 -1.3643763538418414 -logt0024 log10 -1.0000000000000002 0.0 -> 9.6432746655328696e-17 1.3643763538418414 -logt0025 log10 -1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -1.3643763538418414 -logt0026 log10 -1.0009999999999999 0.0 -> 0.0004340774793185929 1.3643763538418414 -logt0027 log10 -1.0009999999999999 -0.0 -> 0.0004340774793185929 -1.3643763538418414 -logt0028 log10 -2.0 0.0 -> 0.3010299956639812 1.3643763538418414 -logt0029 log10 -2.0 -0.0 -> 0.3010299956639812 -1.3643763538418414 -logt0030 log10 -23.0 0.0 -> 1.3617278360175928 1.3643763538418414 -logt0031 log10 -23.0 -0.0 -> 1.3617278360175928 -1.3643763538418414 -logt0032 log10 -10000000000000000.0 0.0 -> 16.0 1.3643763538418414 -logt0033 log10 -10000000000000000.0 -0.0 -> 16.0 -1.3643763538418414 -logt0034 log10 -9.9999999999999998e+149 0.0 -> 150.0 1.3643763538418414 -logt0035 log10 -9.9999999999999998e+149 -0.0 -> 150.0 -1.3643763538418414 -logt0036 log10 -1.0000000000000001e+299 0.0 -> 299.0 1.3643763538418414 -logt0037 log10 -1.0000000000000001e+299 -0.0 -> 299.0 -1.3643763538418414 -logt0038 log10 9.8813129168249309e-324 0.0 -> -323.0051853474518 0.0 -logt0039 log10 9.8813129168249309e-324 -0.0 -> -323.0051853474518 -0.0 -logt0040 log10 1e-305 0.0 -> -305.0 0.0 -logt0041 log10 1e-305 -0.0 -> -305.0 -0.0 -logt0042 log10 1e-150 0.0 -> -150.0 0.0 -logt0043 log10 1e-150 -0.0 -> -150.0 -0.0 -logt0044 log10 9.9999999999999998e-17 0.0 -> -16.0 0.0 -logt0045 log10 9.9999999999999998e-17 -0.0 -> -16.0 -0.0 -logt0046 log10 0.001 0.0 -> -3.0 0.0 -logt0047 log10 0.001 -0.0 -> -3.0 -0.0 -logt0048 log10 0.57899999999999996 0.0 -> -0.23732143627256383 0.0 -logt0049 log10 0.57899999999999996 -0.0 -> -0.23732143627256383 -0.0 -logt0050 log10 0.99999999999999989 0.0 -> -4.821637332766436e-17 0.0 -logt0051 log10 0.99999999999999989 -0.0 -> -4.821637332766436e-17 -0.0 -logt0052 log10 1.0000000000000002 0.0 -> 9.6432746655328696e-17 0.0 -logt0053 log10 1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -0.0 -logt0054 log10 1.0009999999999999 0.0 -> 0.0004340774793185929 0.0 -logt0055 log10 1.0009999999999999 -0.0 -> 0.0004340774793185929 -0.0 -logt0056 log10 2.0 0.0 -> 0.3010299956639812 0.0 -logt0057 log10 2.0 -0.0 -> 0.3010299956639812 -0.0 -logt0058 log10 23.0 0.0 -> 1.3617278360175928 0.0 -logt0059 log10 23.0 -0.0 -> 1.3617278360175928 -0.0 -logt0060 log10 10000000000000000.0 0.0 -> 16.0 0.0 -logt0061 log10 10000000000000000.0 -0.0 -> 16.0 -0.0 -logt0062 log10 9.9999999999999998e+149 0.0 -> 150.0 0.0 -logt0063 log10 9.9999999999999998e+149 -0.0 -> 150.0 -0.0 -logt0064 log10 1.0000000000000001e+299 0.0 -> 299.0 0.0 -logt0065 log10 1.0000000000000001e+299 -0.0 -> 299.0 -0.0 - --- random inputs -logt0066 log10 -1.9830454945186191e-16 -2.0334448025673346 -> 0.30823238806798503 -0.68218817692092071 -logt0067 log10 -0.96745853024741857 -0.84995816228299692 -> 0.10984528422284802 -1.051321426174086 -logt0068 log10 -0.1603644313948418 -0.2929942111041835 -> -0.47624115633305419 -0.89967884023059597 -logt0069 log10 -0.15917913168438699 -0.25238799251132177 -> -0.52521304641665956 -0.92655790645688119 -logt0070 log10 -0.68907818535078802 -3.0693105853476346 -> 0.4977187885066448 -0.77809953119328823 -logt0071 log10 -17.268133447565589 6.8165120014604756 -> 1.2686912008098534 1.2010954629104202 -logt0072 log10 -1.7153894479690328 26.434055372802636 -> 1.423076309032751 0.71033145859005309 -logt0073 log10 -8.0456794648936578e-06 0.19722758057570208 -> -0.70503235244987561 0.68220589348055516 -logt0074 log10 -2.4306442691323173 0.6846919750700996 -> 0.40230257845332595 1.2451292533748923 -logt0075 log10 -3.5488049250888194 0.45324040643185254 -> 0.55359553977141063 1.3092085108866405 -logt0076 log10 0.18418516851510189 -0.26062518836212617 -> -0.49602019732913638 -0.41500503556604301 -logt0077 log10 2.7124837795638399 -13.148769067133387 -> 1.1279348613317008 -0.59383616643803216 -logt0078 log10 3.6521275476169149e-13 -3.7820543023170673e-05 -> -4.4222722398941112 -0.68218817272717114 -logt0079 log10 5.0877545813862239 -1.2834978326786852 -> 0.71992371806426847 -0.10732104352159283 -logt0080 log10 0.26477986808461512 -0.67659001194187429 -> -0.13873139935281681 -0.52018649631300229 -logt0081 log10 0.0014754261398071962 5.3514691608205442 -> 0.72847304354528819 0.6820684398178033 -logt0082 log10 0.29667334462157885 0.00020056045042584795 -> -0.52772137299296806 0.00029359659442937261 -logt0083 log10 0.82104233671099425 3.9005387130133102 -> 0.60053889028349361 0.59208690021184018 -logt0084 log10 0.27268135358180667 124.42088110945804 -> 2.094894315538069 0.68123637673656989 -logt0085 log10 0.0026286959168267485 0.47795808180573013 -> -0.32060362226100814 0.67979964816877081 - --- values near infinity -logt0100 log10 1.0512025744003172e+308 7.2621669750664611e+307 -> 308.10641562682065 0.26255461408256975 -logt0101 log10 5.5344249034372126e+307 -1.2155859158431275e+308 -> 308.12569106009209 -0.496638782296212 -logt0102 log10 -1.3155575403469408e+308 1.1610793541663864e+308 -> 308.24419052091019 1.0503359777705266 -logt0103 log10 -1.632366720973235e+308 -1.54299446211448e+308 -> 308.3514500834093 -1.0355024924378222 -logt0104 log10 0.0 5.9449276692327712e+307 -> 307.77414657501117 0.68218817692092071 -logt0105 log10 -0.0 1.1201850459025692e+308 -> 308.04928977068465 0.68218817692092071 -logt0106 log10 0.0 -1.6214225933466528e+308 -> 308.20989622030174 -0.68218817692092071 -logt0107 log10 -0.0 -1.7453269791591058e+308 -> 308.24187680203539 -0.68218817692092071 -logt0108 log10 1.440860577601428e+308 0.0 -> 308.15862195908755 0.0 -logt0109 log10 1.391515176148282e+308 -0.0 -> 308.14348794720007 -0.0 -logt0110 log10 -1.201354401295296e+308 0.0 -> 308.07967114380773 1.3643763538418414 -logt0111 log10 -1.6704337825976804e+308 -0.0 -> 308.22282926451624 -1.3643763538418414 -logt0112 log10 7.2276974655190223e+307 7.94879711369164 -> 307.85899996571993 4.7762357800858463e-308 -logt0113 log10 1.1207859593716076e+308 -6.1956200868221147 -> 308.04952268169455 -2.4007470767963597e-308 -logt0114 log10 -4.6678933874471045e+307 9.947107893220382 -> 307.66912092839902 1.3643763538418414 -logt0115 log10 -1.5108012453950142e+308 -5.3117197179375619 -> 308.1792073341565 -1.3643763538418414 -logt0116 log10 7.4903750871504435 1.5320703776626352e+308 -> 308.18527871564157 0.68218817692092071 -logt0117 log10 5.9760325525654778 -8.0149473997349123e+307 -> 307.90390067652424 -0.68218817692092071 -logt0118 log10 -7.880194206386629 1.7861845814767441e+308 -> 308.25192633617331 0.68218817692092071 -logt0119 log10 -9.886438993852865 -6.19235781080747e+307 -> 307.79185604308338 -0.68218817692092071 - --- values near 0 -logt0120 log10 2.2996867579227779e-308 6.7861840770939125e-312 -> -307.63833129662572 0.00012815668056362305 -logt0121 log10 6.9169190417774516e-323 -9.0414013188948118e-322 -> -321.04249706727148 -0.64902805353306059 -logt0122 log10 -1.5378064962914011e-316 1.8243628389354635e-310 -> -309.73888878263222 0.68218854299989429 -logt0123 log10 -2.3319898483706837e-321 -2.2358763941866371e-313 -> -312.65055220919641 -0.68218818145055538 -logt0124 log10 0.0 3.872770101081121e-315 -> -314.41197828323476 0.68218817692092071 -logt0125 log10 -0.0 9.6342800939043076e-322 -> -321.01618073175331 0.68218817692092071 -logt0126 log10 0.0 -2.266099393427834e-308 -> -307.64472104545649 -0.68218817692092071 -logt0127 log10 -0.0 -2.1184695673766626e-315 -> -314.67397777042407 -0.68218817692092071 -logt0128 log10 1.1363509854348671e-322 0.0 -> -321.94448750709819 0.0 -logt0129 log10 3.5572726500569751e-322 -0.0 -> -321.44888284668451 -0.0 -logt0130 log10 -2.3696071074040593e-310 0.0 -> -309.62532365619722 1.3643763538418414 -logt0131 log10 -2.813283897266934e-317 -0.0 -> -316.55078643961042 -1.3643763538418414 - --- values near the unit circle -logt0200 log10 -0.59999999999999998 0.80000000000000004 -> 9.6432746655328709e-18 0.96165715756846815 -logt0201 log10 0.79999999999999993 0.60000000000000009 -> 2.6765463916147622e-33 0.2794689806475476 - --- special values -logt1000 log10 -0.0 0.0 -> -inf 1.3643763538418414 divide-by-zero -logt1001 log10 0.0 0.0 -> -inf 0.0 divide-by-zero -logt1002 log10 0.0 inf -> inf 0.68218817692092071 -logt1003 log10 2.3 inf -> inf 0.68218817692092071 -logt1004 log10 -0.0 inf -> inf 0.68218817692092071 -logt1005 log10 -2.3 inf -> inf 0.68218817692092071 -logt1006 log10 0.0 nan -> nan nan -logt1007 log10 2.3 nan -> nan nan -logt1008 log10 -0.0 nan -> nan nan -logt1009 log10 -2.3 nan -> nan nan -logt1010 log10 -inf 0.0 -> inf 1.3643763538418414 -logt1011 log10 -inf 2.3 -> inf 1.3643763538418414 -logt1012 log10 inf 0.0 -> inf 0.0 -logt1013 log10 inf 2.3 -> inf 0.0 -logt1014 log10 -inf inf -> inf 1.0232822653813811 -logt1015 log10 inf inf -> inf 0.34109408846046035 -logt1016 log10 inf nan -> inf nan -logt1017 log10 -inf nan -> inf nan -logt1018 log10 nan 0.0 -> nan nan -logt1019 log10 nan 2.3 -> nan nan -logt1020 log10 nan inf -> inf nan -logt1021 log10 nan nan -> nan nan -logt1022 log10 -0.0 -0.0 -> -inf -1.3643763538418414 divide-by-zero -logt1023 log10 0.0 -0.0 -> -inf -0.0 divide-by-zero -logt1024 log10 0.0 -inf -> inf -0.68218817692092071 -logt1025 log10 2.3 -inf -> inf -0.68218817692092071 -logt1026 log10 -0.0 -inf -> inf -0.68218817692092071 -logt1027 log10 -2.3 -inf -> inf -0.68218817692092071 -logt1028 log10 -inf -0.0 -> inf -1.3643763538418414 -logt1029 log10 -inf -2.3 -> inf -1.3643763538418414 -logt1030 log10 inf -0.0 -> inf -0.0 -logt1031 log10 inf -2.3 -> inf -0.0 -logt1032 log10 -inf -inf -> inf -1.0232822653813811 -logt1033 log10 inf -inf -> inf -0.34109408846046035 -logt1034 log10 nan -0.0 -> nan nan -logt1035 log10 nan -2.3 -> nan nan -logt1036 log10 nan -inf -> inf nan - - ------------------------ --- sqrt: Square root -- ------------------------ - --- zeros -sqrt0000 sqrt 0.0 0.0 -> 0.0 0.0 -sqrt0001 sqrt 0.0 -0.0 -> 0.0 -0.0 -sqrt0002 sqrt -0.0 0.0 -> 0.0 0.0 -sqrt0003 sqrt -0.0 -0.0 -> 0.0 -0.0 - --- values along both sides of real axis -sqrt0010 sqrt -9.8813129168249309e-324 0.0 -> 0.0 3.1434555694052576e-162 -sqrt0011 sqrt -9.8813129168249309e-324 -0.0 -> 0.0 -3.1434555694052576e-162 -sqrt0012 sqrt -1e-305 0.0 -> 0.0 3.1622776601683791e-153 -sqrt0013 sqrt -1e-305 -0.0 -> 0.0 -3.1622776601683791e-153 -sqrt0014 sqrt -1e-150 0.0 -> 0.0 9.9999999999999996e-76 -sqrt0015 sqrt -1e-150 -0.0 -> 0.0 -9.9999999999999996e-76 -sqrt0016 sqrt -9.9999999999999998e-17 0.0 -> 0.0 1e-08 -sqrt0017 sqrt -9.9999999999999998e-17 -0.0 -> 0.0 -1e-08 -sqrt0018 sqrt -0.001 0.0 -> 0.0 0.031622776601683791 -sqrt0019 sqrt -0.001 -0.0 -> 0.0 -0.031622776601683791 -sqrt0020 sqrt -0.57899999999999996 0.0 -> 0.0 0.76092049518987193 -sqrt0021 sqrt -0.57899999999999996 -0.0 -> 0.0 -0.76092049518987193 -sqrt0022 sqrt -0.99999999999999989 0.0 -> 0.0 0.99999999999999989 -sqrt0023 sqrt -0.99999999999999989 -0.0 -> 0.0 -0.99999999999999989 -sqrt0024 sqrt -1.0000000000000002 0.0 -> 0.0 1.0 -sqrt0025 sqrt -1.0000000000000002 -0.0 -> 0.0 -1.0 -sqrt0026 sqrt -1.0009999999999999 0.0 -> 0.0 1.000499875062461 -sqrt0027 sqrt -1.0009999999999999 -0.0 -> 0.0 -1.000499875062461 -sqrt0028 sqrt -2.0 0.0 -> 0.0 1.4142135623730951 -sqrt0029 sqrt -2.0 -0.0 -> 0.0 -1.4142135623730951 -sqrt0030 sqrt -23.0 0.0 -> 0.0 4.7958315233127191 -sqrt0031 sqrt -23.0 -0.0 -> 0.0 -4.7958315233127191 -sqrt0032 sqrt -10000000000000000.0 0.0 -> 0.0 100000000.0 -sqrt0033 sqrt -10000000000000000.0 -0.0 -> 0.0 -100000000.0 -sqrt0034 sqrt -9.9999999999999998e+149 0.0 -> 0.0 9.9999999999999993e+74 -sqrt0035 sqrt -9.9999999999999998e+149 -0.0 -> 0.0 -9.9999999999999993e+74 -sqrt0036 sqrt -1.0000000000000001e+299 0.0 -> 0.0 3.1622776601683796e+149 -sqrt0037 sqrt -1.0000000000000001e+299 -0.0 -> 0.0 -3.1622776601683796e+149 -sqrt0038 sqrt 9.8813129168249309e-324 0.0 -> 3.1434555694052576e-162 0.0 -sqrt0039 sqrt 9.8813129168249309e-324 -0.0 -> 3.1434555694052576e-162 -0.0 -sqrt0040 sqrt 1e-305 0.0 -> 3.1622776601683791e-153 0.0 -sqrt0041 sqrt 1e-305 -0.0 -> 3.1622776601683791e-153 -0.0 -sqrt0042 sqrt 1e-150 0.0 -> 9.9999999999999996e-76 0.0 -sqrt0043 sqrt 1e-150 -0.0 -> 9.9999999999999996e-76 -0.0 -sqrt0044 sqrt 9.9999999999999998e-17 0.0 -> 1e-08 0.0 -sqrt0045 sqrt 9.9999999999999998e-17 -0.0 -> 1e-08 -0.0 -sqrt0046 sqrt 0.001 0.0 -> 0.031622776601683791 0.0 -sqrt0047 sqrt 0.001 -0.0 -> 0.031622776601683791 -0.0 -sqrt0048 sqrt 0.57899999999999996 0.0 -> 0.76092049518987193 0.0 -sqrt0049 sqrt 0.57899999999999996 -0.0 -> 0.76092049518987193 -0.0 -sqrt0050 sqrt 0.99999999999999989 0.0 -> 0.99999999999999989 0.0 -sqrt0051 sqrt 0.99999999999999989 -0.0 -> 0.99999999999999989 -0.0 -sqrt0052 sqrt 1.0000000000000002 0.0 -> 1.0 0.0 -sqrt0053 sqrt 1.0000000000000002 -0.0 -> 1.0 -0.0 -sqrt0054 sqrt 1.0009999999999999 0.0 -> 1.000499875062461 0.0 -sqrt0055 sqrt 1.0009999999999999 -0.0 -> 1.000499875062461 -0.0 -sqrt0056 sqrt 2.0 0.0 -> 1.4142135623730951 0.0 -sqrt0057 sqrt 2.0 -0.0 -> 1.4142135623730951 -0.0 -sqrt0058 sqrt 23.0 0.0 -> 4.7958315233127191 0.0 -sqrt0059 sqrt 23.0 -0.0 -> 4.7958315233127191 -0.0 -sqrt0060 sqrt 10000000000000000.0 0.0 -> 100000000.0 0.0 -sqrt0061 sqrt 10000000000000000.0 -0.0 -> 100000000.0 -0.0 -sqrt0062 sqrt 9.9999999999999998e+149 0.0 -> 9.9999999999999993e+74 0.0 -sqrt0063 sqrt 9.9999999999999998e+149 -0.0 -> 9.9999999999999993e+74 -0.0 -sqrt0064 sqrt 1.0000000000000001e+299 0.0 -> 3.1622776601683796e+149 0.0 -sqrt0065 sqrt 1.0000000000000001e+299 -0.0 -> 3.1622776601683796e+149 -0.0 - --- random inputs -sqrt0100 sqrt -0.34252542541549913 -223039880.15076211 -> 10560.300180587592 -10560.300196805192 -sqrt0101 sqrt -0.88790791393018909 -5.3307751730827402 -> 1.5027154613689004 -1.7737140896343291 -sqrt0102 sqrt -113916.89291310767 -0.018143374626153858 -> 2.6877817875351178e-05 -337.51576691038952 -sqrt0103 sqrt -0.63187172386197121 -0.26293913366617694 -> 0.16205707495266153 -0.81125471918761971 -sqrt0104 sqrt -0.058185169308906215 -2.3548312990430991 -> 1.0717660342420072 -1.0985752598086966 -sqrt0105 sqrt -1.0580584765935896 0.14400319259151736 -> 0.069837489270111242 1.030987755262468 -sqrt0106 sqrt -1.1667595947504932 0.11159711473953678 -> 0.051598531319315251 1.0813981705111229 -sqrt0107 sqrt -0.5123728411449906 0.026175433648339085 -> 0.018278026262418718 0.71603556293597614 -sqrt0108 sqrt -3.7453400060067228 1.0946500314809635 -> 0.27990088541692498 1.9554243814742367 -sqrt0109 sqrt -0.0027736121575097673 1.0367943000839817 -> 0.71903560338719175 0.72096172651250545 -sqrt0110 sqrt 1501.2559699453188 -1.1997325207283589 -> 38.746047664730959 -0.015481998720355024 -sqrt0111 sqrt 1.4830075326850578 -0.64100878436755349 -> 1.244712815741096 -0.25749264258434584 -sqrt0112 sqrt 0.095395618499734602 -0.48226565701639595 -> 0.54175904053472879 -0.44509239434231551 -sqrt0113 sqrt 0.50109185681863277 -0.54054037379892561 -> 0.7868179858332387 -0.34349772344520979 -sqrt0114 sqrt 0.98779807595367897 -0.00019848758437225191 -> 0.99388031770665153 -9.9854872279921968e-05 -sqrt0115 sqrt 11.845472380792259 0.0010051104581506761 -> 3.4417252072345397 0.00014601840612346451 -sqrt0116 sqrt 2.3558249686735975 0.25605157371744403 -> 1.5371278477386647 0.083288964575761404 -sqrt0117 sqrt 0.77584894123159098 1.0496420627016076 -> 1.0200744386390885 0.51449287568756552 -sqrt0118 sqrt 1.8961715669604893 0.34940793467158854 -> 1.3827991781411615 0.12634080935066902 -sqrt0119 sqrt 0.96025378316565801 0.69573224860140515 -> 1.0358710342209998 0.33581991658093457 - --- values near 0 -sqrt0120 sqrt 7.3577938365086866e-313 8.1181408465112743e-319 -> 8.5777583531543516e-157 4.732087634251168e-163 -sqrt0121 sqrt 1.2406883874892108e-310 -5.1210133324269776e-312 -> 1.1140990057468052e-155 -2.2982756945349973e-157 -sqrt0122 sqrt -7.1145453001139502e-322 2.9561379244703735e-314 -> 1.2157585807480286e-157 1.2157586100077242e-157 -sqrt0123 sqrt -4.9963244206801218e-314 -8.4718424423690227e-319 -> 1.8950582312540437e-162 -2.2352459419578971e-157 -sqrt0124 sqrt 0.0 7.699553609385195e-318 -> 1.9620848107797476e-159 1.9620848107797476e-159 -sqrt0125 sqrt -0.0 3.3900826606499415e-309 -> 4.1170879639922327e-155 4.1170879639922327e-155 -sqrt0126 sqrt 0.0 -9.8907989772250828e-319 -> 7.032353438652342e-160 -7.032353438652342e-160 -sqrt0127 sqrt -0.0 -1.3722939367590908e-315 -> 2.6194407196566702e-158 -2.6194407196566702e-158 -sqrt0128 sqrt 7.9050503334599447e-323 0.0 -> 8.8910349979403099e-162 0.0 -sqrt0129 sqrt 1.8623241768349486e-309 -0.0 -> 4.3154654173506579e-155 -0.0 -sqrt0130 sqrt -2.665971134499887e-308 0.0 -> 0.0 1.6327801856036491e-154 -sqrt0131 sqrt -1.5477066694467245e-310 -0.0 -> 0.0 -1.2440685951533077e-155 - --- inputs whose absolute value overflows -sqrt0140 sqrt 1.6999999999999999e+308 -1.6999999999999999e+308 -> 1.4325088230154573e+154 -5.9336458271212207e+153 -sqrt0141 sqrt -1.797e+308 -9.9999999999999999e+306 -> 3.7284476432057307e+152 -1.3410406899802901e+154 - --- special values -sqrt1000 sqrt 0.0 0.0 -> 0.0 0.0 -sqrt1001 sqrt -0.0 0.0 -> 0.0 0.0 -sqrt1002 sqrt 0.0 inf -> inf inf -sqrt1003 sqrt 2.3 inf -> inf inf -sqrt1004 sqrt inf inf -> inf inf -sqrt1005 sqrt -0.0 inf -> inf inf -sqrt1006 sqrt -2.3 inf -> inf inf -sqrt1007 sqrt -inf inf -> inf inf -sqrt1008 sqrt nan inf -> inf inf -sqrt1009 sqrt 0.0 nan -> nan nan -sqrt1010 sqrt 2.3 nan -> nan nan -sqrt1011 sqrt -0.0 nan -> nan nan -sqrt1012 sqrt -2.3 nan -> nan nan -sqrt1013 sqrt -inf 0.0 -> 0.0 inf -sqrt1014 sqrt -inf 2.3 -> 0.0 inf -sqrt1015 sqrt inf 0.0 -> inf 0.0 -sqrt1016 sqrt inf 2.3 -> inf 0.0 -sqrt1017 sqrt -inf nan -> nan inf ignore-imag-sign -sqrt1018 sqrt inf nan -> inf nan -sqrt1019 sqrt nan 0.0 -> nan nan -sqrt1020 sqrt nan 2.3 -> nan nan -sqrt1021 sqrt nan nan -> nan nan -sqrt1022 sqrt 0.0 -0.0 -> 0.0 -0.0 -sqrt1023 sqrt -0.0 -0.0 -> 0.0 -0.0 -sqrt1024 sqrt 0.0 -inf -> inf -inf -sqrt1025 sqrt 2.3 -inf -> inf -inf -sqrt1026 sqrt inf -inf -> inf -inf -sqrt1027 sqrt -0.0 -inf -> inf -inf -sqrt1028 sqrt -2.3 -inf -> inf -inf -sqrt1029 sqrt -inf -inf -> inf -inf -sqrt1030 sqrt nan -inf -> inf -inf -sqrt1031 sqrt -inf -0.0 -> 0.0 -inf -sqrt1032 sqrt -inf -2.3 -> 0.0 -inf -sqrt1033 sqrt inf -0.0 -> inf -0.0 -sqrt1034 sqrt inf -2.3 -> inf -0.0 -sqrt1035 sqrt nan -0.0 -> nan nan -sqrt1036 sqrt nan -2.3 -> nan nan - - --- For exp, cosh, sinh, tanh we limit tests to arguments whose --- imaginary part is less than 10 in absolute value: most math --- libraries have poor accuracy for (real) sine and cosine for --- large arguments, and the accuracy of these complex functions --- suffer correspondingly. --- --- Similarly, for cos, sin and tan we limit tests to arguments --- with relatively small real part. - - -------------------------------- --- exp: Exponential function -- -------------------------------- - --- zeros -exp0000 exp 0.0 0.0 -> 1.0 0.0 -exp0001 exp 0.0 -0.0 -> 1.0 -0.0 -exp0002 exp -0.0 0.0 -> 1.0 0.0 -exp0003 exp -0.0 -0.0 -> 1.0 -0.0 - --- random inputs -exp0004 exp -17.957359009564684 -1.108613895795274 -> 7.0869292576226611e-09 -1.4225929202377833e-08 -exp0005 exp -1.4456149663368642e-15 -0.75359817331772239 -> 0.72923148323917997 -0.68426708517419033 -exp0006 exp -0.76008654883512661 -0.46657235480105019 -> 0.41764393109928666 -0.21035108396792854 -exp0007 exp -5.7071614697735731 -2.3744161818115816e-11 -> 0.0033220890242068356 -7.8880219364953578e-14 -exp0008 exp -0.4653981327927097 -5.2236706667445587e-21 -> 0.62788507378216663 -3.2798648420026468e-21 -exp0009 exp -3.2444565242295518 1.1535625304243959 -> 0.015799936931457641 0.035644950380024749 -exp0010 exp -3.0651456337977727 0.87765086532391878 -> 0.029805595629855953 0.035882775180855669 -exp0011 exp -0.11080823753233926 0.96486386300873106 -> 0.50979112534376314 0.73575512419561562 -exp0012 exp -2.5629722598928648 0.019636235754708079 -> 0.077060452853917397 0.0015133717341137684 -exp0013 exp -3.3201709957983357e-10 1.2684017344487268 -> 0.29780699855434889 0.95462610007689186 -exp0014 exp 0.88767276057993272 -0.18953422986895557 -> 2.3859624049858095 -0.45771559132044426 -exp0015 exp 1.5738333486794742 -2.2576803075544328e-11 -> 4.8251091132458654 -1.0893553826776623e-10 -exp0016 exp 1.6408702341813795 -1.438879484380837 -> 0.6786733590689048 -5.1148284173168825 -exp0017 exp 1.820279424202033 -0.020812040370785722 -> 6.1722462896420902 -0.1284755888435051 -exp0018 exp 1.7273965735945873 -0.61140621328954947 -> 4.6067931898799976 -3.2294267694441308 -exp0019 exp 2.5606034306862995 0.098153136008435504 -> 12.881325889966629 1.2684184812864494 -exp0020 exp 10.280368619483029 3.4564622559748535 -> -27721.283321551502 -9028.9663215568835 -exp0021 exp 1.104007405129741e-155 0.21258803067317278 -> 0.97748813933531764 0.21099037290544478 -exp0022 exp 0.027364777809295172 0.00059226603500623363 -> 1.0277424518451876 0.0006086970181346579 -exp0023 exp 0.94356313429255245 3.418530463518592 -> -2.4712285695346194 -0.70242654900218349 - --- cases where exp(z) representable, exp(z.real) not -exp0030 exp 710.0 0.78500000000000003 -> 1.5803016909637158e+308 1.5790437551806911e+308 -exp0031 exp 710.0 -0.78500000000000003 -> 1.5803016909637158e+308 -1.5790437551806911e+308 - --- values for which exp(x) is subnormal, or underflows to 0 -exp0040 exp -735.0 0.78500000000000003 -> 4.3976783136329355e-320 4.3942198541120468e-320 -exp0041 exp -735.0 -2.3559999999999999 -> -4.3952079854037293e-320 -4.396690182341253e-320 -exp0042 exp -745.0 0.0 -> 4.9406564584124654e-324 0.0 -exp0043 exp -745.0 0.7 -> 0.0 0.0 -exp0044 exp -745.0 2.1 -> -0.0 0.0 -exp0045 exp -745.0 3.7 -> -0.0 -0.0 -exp0046 exp -745.0 5.3 -> 0.0 -0.0 - --- values for which exp(z) overflows -exp0050 exp 710.0 0.0 -> inf 0.0 overflow -exp0051 exp 711.0 0.7 -> inf inf overflow -exp0052 exp 710.0 1.5 -> 1.5802653829857376e+307 inf overflow -exp0053 exp 710.0 1.6 -> -6.5231579995501372e+306 inf overflow -exp0054 exp 710.0 2.8 -> -inf 7.4836177417448528e+307 overflow - --- special values -exp1000 exp 0.0 0.0 -> 1.0 0.0 -exp1001 exp -0.0 0.0 -> 1.0 0.0 -exp1002 exp 0.0 inf -> nan nan invalid -exp1003 exp 2.3 inf -> nan nan invalid -exp1004 exp -0.0 inf -> nan nan invalid -exp1005 exp -2.3 inf -> nan nan invalid -exp1006 exp 0.0 nan -> nan nan -exp1007 exp 2.3 nan -> nan nan -exp1008 exp -0.0 nan -> nan nan -exp1009 exp -2.3 nan -> nan nan -exp1010 exp -inf 0.0 -> 0.0 0.0 -exp1011 exp -inf 1.4 -> 0.0 0.0 -exp1012 exp -inf 2.8 -> -0.0 0.0 -exp1013 exp -inf 4.2 -> -0.0 -0.0 -exp1014 exp -inf 5.6 -> 0.0 -0.0 -exp1015 exp -inf 7.0 -> 0.0 0.0 -exp1016 exp inf 0.0 -> inf 0.0 -exp1017 exp inf 1.4 -> inf inf -exp1018 exp inf 2.8 -> -inf inf -exp1019 exp inf 4.2 -> -inf -inf -exp1020 exp inf 5.6 -> inf -inf -exp1021 exp inf 7.0 -> inf inf -exp1022 exp -inf inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -exp1023 exp inf inf -> inf nan invalid ignore-real-sign -exp1024 exp -inf nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign -exp1025 exp inf nan -> inf nan ignore-real-sign -exp1026 exp nan 0.0 -> nan 0.0 -exp1027 exp nan 2.3 -> nan nan -exp1028 exp nan inf -> nan nan -exp1029 exp nan nan -> nan nan -exp1030 exp 0.0 -0.0 -> 1.0 -0.0 -exp1031 exp -0.0 -0.0 -> 1.0 -0.0 -exp1032 exp 0.0 -inf -> nan nan invalid -exp1033 exp 2.3 -inf -> nan nan invalid -exp1034 exp -0.0 -inf -> nan nan invalid -exp1035 exp -2.3 -inf -> nan nan invalid -exp1036 exp -inf -0.0 -> 0.0 -0.0 -exp1037 exp -inf -1.4 -> 0.0 -0.0 -exp1038 exp -inf -2.8 -> -0.0 -0.0 -exp1039 exp -inf -4.2 -> -0.0 0.0 -exp1040 exp -inf -5.6 -> 0.0 0.0 -exp1041 exp -inf -7.0 -> 0.0 -0.0 -exp1042 exp inf -0.0 -> inf -0.0 -exp1043 exp inf -1.4 -> inf -inf -exp1044 exp inf -2.8 -> -inf -inf -exp1045 exp inf -4.2 -> -inf inf -exp1046 exp inf -5.6 -> inf inf -exp1047 exp inf -7.0 -> inf -inf -exp1048 exp -inf -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -exp1049 exp inf -inf -> inf nan invalid ignore-real-sign -exp1050 exp nan -0.0 -> nan -0.0 -exp1051 exp nan -2.3 -> nan nan -exp1052 exp nan -inf -> nan nan - - ------------------------------ --- cosh: Hyperbolic Cosine -- ------------------------------ - --- zeros -cosh0000 cosh 0.0 0.0 -> 1.0 0.0 -cosh0001 cosh 0.0 -0.0 -> 1.0 -0.0 -cosh0002 cosh -0.0 0.0 -> 1.0 -0.0 -cosh0003 cosh -0.0 -0.0 -> 1.0 0.0 - --- random inputs -cosh0004 cosh -0.85395264297414253 -8.8553756148671958 -> -1.1684340348021185 0.51842195359787435 -cosh0005 cosh -19.584904237211223 -0.066582627994906177 -> 159816812.23336992 10656776.050406246 -cosh0006 cosh -0.11072618401130772 -1.484820215073247 -> 0.086397164744949503 0.11054275637717284 -cosh0007 cosh -3.4764840250681752 -0.48440348288275276 -> 14.325931955190844 7.5242053548737955 -cosh0008 cosh -0.52047063604524602 -0.3603805382775585 -> 1.0653940354683802 0.19193293606252473 -cosh0009 cosh -1.39518962975995 0.0074738604700702906 -> 2.1417031027235969 -0.01415518712296308 -cosh0010 cosh -0.37107064757653541 0.14728085307856609 -> 1.0580601496776991 -0.055712531964568587 -cosh0011 cosh -5.8470200958739653 4.0021722388336292 -> -112.86220667618285 131.24734033545013 -cosh0012 cosh -0.1700261444851883 0.97167540135354513 -> 0.57208748253577946 -0.1410904820240203 -cosh0013 cosh -0.44042397902648783 1.0904791964139742 -> 0.50760322393058133 -0.40333966652010816 -cosh0014 cosh 0.052267552491867299 -3.8889011430644174 -> -0.73452303414639297 0.035540704833537134 -cosh0015 cosh 0.98000764177127453 -1.2548829247784097 -> 0.47220747341416142 -1.0879421432180316 -cosh0016 cosh 0.083594701222644008 -0.88847899930181284 -> 0.63279782419312613 -0.064954566816002285 -cosh0017 cosh 1.38173531783776 -0.43185040816732229 -> 1.9221663374671647 -0.78073830858849347 -cosh0018 cosh 0.57315681120148465 -0.22255760951027942 -> 1.1399733125173004 -0.1335512343605956 -cosh0019 cosh 1.8882512333062347 4.5024932182383797 -> -0.7041602065362691 -3.1573822131964615 -cosh0020 cosh 0.5618219206858317 0.92620452129575348 -> 0.69822380405378381 0.47309067471054522 -cosh0021 cosh 0.54361442847062591 0.64176483583018462 -> 0.92234462074193491 0.34167906495845501 -cosh0022 cosh 0.0014777403107920331 1.3682028122677661 -> 0.2012106963899549 0.001447518137863219 -cosh0023 cosh 2.218885944363501 2.0015727395883687 -> -1.94294321081968 4.1290269176083196 - --- large real part -cosh0030 cosh 710.5 2.3519999999999999 -> -1.2967465239355998e+308 1.3076707908857333e+308 -cosh0031 cosh -710.5 0.69999999999999996 -> 1.4085466381392499e+308 -1.1864024666450239e+308 - --- special values -cosh1000 cosh 0.0 0.0 -> 1.0 0.0 -cosh1001 cosh 0.0 inf -> nan 0.0 invalid ignore-imag-sign -cosh1002 cosh 0.0 nan -> nan 0.0 ignore-imag-sign -cosh1003 cosh 2.3 inf -> nan nan invalid -cosh1004 cosh 2.3 nan -> nan nan -cosh1005 cosh inf 0.0 -> inf 0.0 -cosh1006 cosh inf 1.4 -> inf inf -cosh1007 cosh inf 2.8 -> -inf inf -cosh1008 cosh inf 4.2 -> -inf -inf -cosh1009 cosh inf 5.6 -> inf -inf -cosh1010 cosh inf 7.0 -> inf inf -cosh1011 cosh inf inf -> inf nan invalid ignore-real-sign -cosh1012 cosh inf nan -> inf nan -cosh1013 cosh nan 0.0 -> nan 0.0 ignore-imag-sign -cosh1014 cosh nan 2.3 -> nan nan -cosh1015 cosh nan inf -> nan nan -cosh1016 cosh nan nan -> nan nan -cosh1017 cosh 0.0 -0.0 -> 1.0 -0.0 -cosh1018 cosh 0.0 -inf -> nan 0.0 invalid ignore-imag-sign -cosh1019 cosh 2.3 -inf -> nan nan invalid -cosh1020 cosh inf -0.0 -> inf -0.0 -cosh1021 cosh inf -1.4 -> inf -inf -cosh1022 cosh inf -2.8 -> -inf -inf -cosh1023 cosh inf -4.2 -> -inf inf -cosh1024 cosh inf -5.6 -> inf inf -cosh1025 cosh inf -7.0 -> inf -inf -cosh1026 cosh inf -inf -> inf nan invalid ignore-real-sign -cosh1027 cosh nan -0.0 -> nan 0.0 ignore-imag-sign -cosh1028 cosh nan -2.3 -> nan nan -cosh1029 cosh nan -inf -> nan nan -cosh1030 cosh -0.0 -0.0 -> 1.0 0.0 -cosh1031 cosh -0.0 -inf -> nan 0.0 invalid ignore-imag-sign -cosh1032 cosh -0.0 nan -> nan 0.0 ignore-imag-sign -cosh1033 cosh -2.3 -inf -> nan nan invalid -cosh1034 cosh -2.3 nan -> nan nan -cosh1035 cosh -inf -0.0 -> inf 0.0 -cosh1036 cosh -inf -1.4 -> inf inf -cosh1037 cosh -inf -2.8 -> -inf inf -cosh1038 cosh -inf -4.2 -> -inf -inf -cosh1039 cosh -inf -5.6 -> inf -inf -cosh1040 cosh -inf -7.0 -> inf inf -cosh1041 cosh -inf -inf -> inf nan invalid ignore-real-sign -cosh1042 cosh -inf nan -> inf nan -cosh1043 cosh -0.0 0.0 -> 1.0 -0.0 -cosh1044 cosh -0.0 inf -> nan 0.0 invalid ignore-imag-sign -cosh1045 cosh -2.3 inf -> nan nan invalid -cosh1046 cosh -inf 0.0 -> inf -0.0 -cosh1047 cosh -inf 1.4 -> inf -inf -cosh1048 cosh -inf 2.8 -> -inf -inf -cosh1049 cosh -inf 4.2 -> -inf inf -cosh1050 cosh -inf 5.6 -> inf inf -cosh1051 cosh -inf 7.0 -> inf -inf -cosh1052 cosh -inf inf -> inf nan invalid ignore-real-sign - - ---------------------------- --- sinh: Hyperbolic Sine -- ---------------------------- - --- zeros -sinh0000 sinh 0.0 0.0 -> 0.0 0.0 -sinh0001 sinh 0.0 -0.0 -> 0.0 -0.0 -sinh0002 sinh -0.0 0.0 -> -0.0 0.0 -sinh0003 sinh -0.0 -0.0 -> -0.0 -0.0 - --- random inputs -sinh0004 sinh -17.282588091462742 -0.38187948694103546 -> -14867386.857248396 -5970648.6553516639 -sinh0005 sinh -343.91971203143208 -5.0172868877771525e-22 -> -1.1518691776521735e+149 -5.7792581214689021e+127 -sinh0006 sinh -14.178122253300922 -1.9387157579351293 -> 258440.37909034826 -670452.58500946441 -sinh0007 sinh -1.0343810581686239 -1.0970235266369905 -> -0.56070858278092739 -1.4098883258046697 -sinh0008 sinh -0.066126561416368204 -0.070461584169961872 -> -0.066010558700938124 -0.070557276738637542 -sinh0009 sinh -0.37630149150308484 3.3621734692162173 -> 0.37591118119332617 -0.23447115926369383 -sinh0010 sinh -0.049941960978670055 0.40323767020414625 -> -0.045955482136329009 0.3928878494430646 -sinh0011 sinh -16.647852603903715 0.0026852219129082098 -> -8492566.5739382561 22804.480671133562 -sinh0012 sinh -1.476625314303694 0.89473773116683386 -> -1.2982943334382224 1.7966593367791204 -sinh0013 sinh -422.36429577556913 0.10366634502307912 -> -1.3400321008920044e+183 1.3941600948045599e+182 -sinh0014 sinh 0.09108340745641981 -0.40408227416070353 -> 0.083863724802237902 -0.39480716553935602 -sinh0015 sinh 2.036064132067386 -2.6831729961386239 -> -3.37621124363175 -1.723868330002817 -sinh0016 sinh 2.5616717223063317 -0.0078978498622717767 -> 6.4399415853815869 -0.051472264400722133 -sinh0017 sinh 0.336804011985188 -6.5654622971649337 -> 0.32962499307574578 -0.29449170159995197 -sinh0018 sinh 0.23774603755649693 -0.92467195799232049 -> 0.14449839490603389 -0.82109449053556793 -sinh0019 sinh 0.0011388273541465494 1.9676196882949855 -> -0.00044014605389634999 0.92229398407098806 -sinh0020 sinh 3.2443870105663759 0.8054287559616895 -> 8.8702890778527426 9.2610748597042196 -sinh0021 sinh 0.040628908857054738 0.098206391190944958 -> 0.04044426841671233 0.098129544739707392 -sinh0022 sinh 4.7252283918217696e-30 9.1198155642656697 -> -4.5071980561644404e-30 0.30025730701661713 -sinh0023 sinh 0.043713693678420068 0.22512549887532657 -> 0.042624198673416713 0.22344201231217961 - --- large real part -sinh0030 sinh 710.5 -2.3999999999999999 -> -1.3579970564885919e+308 -1.24394470907798e+308 -sinh0031 sinh -710.5 0.80000000000000004 -> -1.2830671601735164e+308 1.3210954193997678e+308 - --- special values -sinh1000 sinh 0.0 0.0 -> 0.0 0.0 -sinh1001 sinh 0.0 inf -> 0.0 nan invalid ignore-real-sign -sinh1002 sinh 0.0 nan -> 0.0 nan ignore-real-sign -sinh1003 sinh 2.3 inf -> nan nan invalid -sinh1004 sinh 2.3 nan -> nan nan -sinh1005 sinh inf 0.0 -> inf 0.0 -sinh1006 sinh inf 1.4 -> inf inf -sinh1007 sinh inf 2.8 -> -inf inf -sinh1008 sinh inf 4.2 -> -inf -inf -sinh1009 sinh inf 5.6 -> inf -inf -sinh1010 sinh inf 7.0 -> inf inf -sinh1011 sinh inf inf -> inf nan invalid ignore-real-sign -sinh1012 sinh inf nan -> inf nan ignore-real-sign -sinh1013 sinh nan 0.0 -> nan 0.0 -sinh1014 sinh nan 2.3 -> nan nan -sinh1015 sinh nan inf -> nan nan -sinh1016 sinh nan nan -> nan nan -sinh1017 sinh 0.0 -0.0 -> 0.0 -0.0 -sinh1018 sinh 0.0 -inf -> 0.0 nan invalid ignore-real-sign -sinh1019 sinh 2.3 -inf -> nan nan invalid -sinh1020 sinh inf -0.0 -> inf -0.0 -sinh1021 sinh inf -1.4 -> inf -inf -sinh1022 sinh inf -2.8 -> -inf -inf -sinh1023 sinh inf -4.2 -> -inf inf -sinh1024 sinh inf -5.6 -> inf inf -sinh1025 sinh inf -7.0 -> inf -inf -sinh1026 sinh inf -inf -> inf nan invalid ignore-real-sign -sinh1027 sinh nan -0.0 -> nan -0.0 -sinh1028 sinh nan -2.3 -> nan nan -sinh1029 sinh nan -inf -> nan nan -sinh1030 sinh -0.0 -0.0 -> -0.0 -0.0 -sinh1031 sinh -0.0 -inf -> 0.0 nan invalid ignore-real-sign -sinh1032 sinh -0.0 nan -> 0.0 nan ignore-real-sign -sinh1033 sinh -2.3 -inf -> nan nan invalid -sinh1034 sinh -2.3 nan -> nan nan -sinh1035 sinh -inf -0.0 -> -inf -0.0 -sinh1036 sinh -inf -1.4 -> -inf -inf -sinh1037 sinh -inf -2.8 -> inf -inf -sinh1038 sinh -inf -4.2 -> inf inf -sinh1039 sinh -inf -5.6 -> -inf inf -sinh1040 sinh -inf -7.0 -> -inf -inf -sinh1041 sinh -inf -inf -> inf nan invalid ignore-real-sign -sinh1042 sinh -inf nan -> inf nan ignore-real-sign -sinh1043 sinh -0.0 0.0 -> -0.0 0.0 -sinh1044 sinh -0.0 inf -> 0.0 nan invalid ignore-real-sign -sinh1045 sinh -2.3 inf -> nan nan invalid -sinh1046 sinh -inf 0.0 -> -inf 0.0 -sinh1047 sinh -inf 1.4 -> -inf inf -sinh1048 sinh -inf 2.8 -> inf inf -sinh1049 sinh -inf 4.2 -> inf -inf -sinh1050 sinh -inf 5.6 -> -inf -inf -sinh1051 sinh -inf 7.0 -> -inf inf -sinh1052 sinh -inf inf -> inf nan invalid ignore-real-sign - - ------------------------------- --- tanh: Hyperbolic Tangent -- ------------------------------- - --- zeros -tanh0000 tanh 0.0 0.0 -> 0.0 0.0 -tanh0001 tanh 0.0 -0.0 -> 0.0 -0.0 -tanh0002 tanh -0.0 0.0 -> -0.0 0.0 -tanh0003 tanh -0.0 -0.0 -> -0.0 -0.0 - --- random inputs -tanh0004 tanh -21.200500450664993 -1.6970729480342996 -> -1.0 1.9241352344849399e-19 -tanh0005 tanh -0.34158771504251928 -8.0848504951747131 -> -2.123711225855613 1.2827526782026006 -tanh0006 tanh -15.454144725193689 -0.23619582288265617 -> -0.99999999999993283 -3.4336684248260036e-14 -tanh0007 tanh -7.6103163119661952 -0.7802748320307008 -> -0.99999999497219438 -4.9064845343755437e-07 -tanh0008 tanh -0.15374717235792129 -0.6351086327306138 -> -0.23246081703561869 -0.71083467433910219 -tanh0009 tanh -0.49101115474392465 0.09723001264886301 -> -0.45844445715492133 0.077191158541805888 -tanh0010 tanh -0.10690612157664491 2.861612800856395 -> -0.11519761626257358 -0.28400488355647507 -tanh0011 tanh -0.91505774192066702 1.5431174597727007 -> -1.381109893068114 0.025160819663709356 -tanh0012 tanh -0.057433367093792223 0.35491159541246459 -> -0.065220499046696953 0.36921788332369498 -tanh0013 tanh -1.3540418621233514 0.18969415642242535 -> -0.88235642861151387 0.043764069984411721 -tanh0014 tanh 0.94864783961003529 -0.11333689578867717 -> 0.74348401861861368 -0.051271042543855221 -tanh0015 tanh 1.9591698133845488 -0.0029654444904578339 -> 0.9610270776968135 -0.00022664240049212933 -tanh0016 tanh 1.0949715796669197 -0.24706642853984456 -> 0.81636574501369386 -0.087767436914149954 -tanh0017 tanh 5770428.2113731047 -3.7160580339833165 -> 1.0 -0.0 -tanh0018 tanh 1.5576782321399629 -1.0357943787966468 -> 1.0403002384895388 -0.081126347894671463 -tanh0019 tanh 0.62378536230552961 2.3471393579560216 -> 0.85582499238960363 -0.53569473646842869 -tanh0020 tanh 17.400628602508025 9.3987059533841979 -> 0.99999999999999845 -8.0175867720530832e-17 -tanh0021 tanh 0.15026177509871896 0.50630349159505472 -> 0.19367536571827768 0.53849847858853661 -tanh0022 tanh 0.57433977530711167 1.0071604546265627 -> 1.0857848159262844 0.69139213955872214 -tanh0023 tanh 0.16291181500449456 0.006972810241567544 -> 0.16149335907551157 0.0067910772903467817 - --- large real part -tanh0030 tanh 710 0.13 -> 1.0 0.0 -tanh0031 tanh -711 7.4000000000000004 -> -1.0 0.0 -tanh0032 tanh 1000 -2.3199999999999998 -> 1.0 0.0 -tanh0033 tanh -1.0000000000000001e+300 -9.6699999999999999 -> -1.0 -0.0 - ---special values -tanh1000 tanh 0.0 0.0 -> 0.0 0.0 -tanh1001 tanh 0.0 inf -> nan nan invalid -tanh1002 tanh 2.3 inf -> nan nan invalid -tanh1003 tanh 0.0 nan -> nan nan -tanh1004 tanh 2.3 nan -> nan nan -tanh1005 tanh inf 0.0 -> 1.0 0.0 -tanh1006 tanh inf 0.7 -> 1.0 0.0 -tanh1007 tanh inf 1.4 -> 1.0 0.0 -tanh1008 tanh inf 2.1 -> 1.0 -0.0 -tanh1009 tanh inf 2.8 -> 1.0 -0.0 -tanh1010 tanh inf 3.5 -> 1.0 0.0 -tanh1011 tanh inf inf -> 1.0 0.0 ignore-imag-sign -tanh1012 tanh inf nan -> 1.0 0.0 ignore-imag-sign -tanh1013 tanh nan 0.0 -> nan 0.0 -tanh1014 tanh nan 2.3 -> nan nan -tanh1015 tanh nan inf -> nan nan -tanh1016 tanh nan nan -> nan nan -tanh1017 tanh 0.0 -0.0 -> 0.0 -0.0 -tanh1018 tanh 0.0 -inf -> nan nan invalid -tanh1019 tanh 2.3 -inf -> nan nan invalid -tanh1020 tanh inf -0.0 -> 1.0 -0.0 -tanh1021 tanh inf -0.7 -> 1.0 -0.0 -tanh1022 tanh inf -1.4 -> 1.0 -0.0 -tanh1023 tanh inf -2.1 -> 1.0 0.0 -tanh1024 tanh inf -2.8 -> 1.0 0.0 -tanh1025 tanh inf -3.5 -> 1.0 -0.0 -tanh1026 tanh inf -inf -> 1.0 0.0 ignore-imag-sign -tanh1027 tanh nan -0.0 -> nan -0.0 -tanh1028 tanh nan -2.3 -> nan nan -tanh1029 tanh nan -inf -> nan nan -tanh1030 tanh -0.0 -0.0 -> -0.0 -0.0 -tanh1031 tanh -0.0 -inf -> nan nan invalid -tanh1032 tanh -2.3 -inf -> nan nan invalid -tanh1033 tanh -0.0 nan -> nan nan -tanh1034 tanh -2.3 nan -> nan nan -tanh1035 tanh -inf -0.0 -> -1.0 -0.0 -tanh1036 tanh -inf -0.7 -> -1.0 -0.0 -tanh1037 tanh -inf -1.4 -> -1.0 -0.0 -tanh1038 tanh -inf -2.1 -> -1.0 0.0 -tanh1039 tanh -inf -2.8 -> -1.0 0.0 -tanh1040 tanh -inf -3.5 -> -1.0 -0.0 -tanh1041 tanh -inf -inf -> -1.0 0.0 ignore-imag-sign -tanh1042 tanh -inf nan -> -1.0 0.0 ignore-imag-sign -tanh1043 tanh -0.0 0.0 -> -0.0 0.0 -tanh1044 tanh -0.0 inf -> nan nan invalid -tanh1045 tanh -2.3 inf -> nan nan invalid -tanh1046 tanh -inf 0.0 -> -1.0 0.0 -tanh1047 tanh -inf 0.7 -> -1.0 0.0 -tanh1048 tanh -inf 1.4 -> -1.0 0.0 -tanh1049 tanh -inf 2.1 -> -1.0 -0.0 -tanh1050 tanh -inf 2.8 -> -1.0 -0.0 -tanh1051 tanh -inf 3.5 -> -1.0 0.0 -tanh1052 tanh -inf inf -> -1.0 0.0 ignore-imag-sign - - ------------------ --- cos: Cosine -- ------------------ - --- zeros -cos0000 cos 0.0 0.0 -> 1.0 -0.0 -cos0001 cos 0.0 -0.0 -> 1.0 0.0 -cos0002 cos -0.0 0.0 -> 1.0 0.0 -cos0003 cos -0.0 -0.0 -> 1.0 -0.0 - --- random inputs -cos0004 cos -2.0689194692073034 -0.0016802181751734313 -> -0.47777827208561469 -0.0014760401501695971 -cos0005 cos -0.4209627318177977 -1.8238516774258027 -> 2.9010402201444108 -1.2329207042329617 -cos0006 cos -1.9402181630694557 -2.9751857392891217 -> -3.5465459297970985 -9.1119163586282248 -cos0007 cos -3.3118320290191616 -0.87871302909286142 -> -1.3911528636565498 0.16878141517391701 -cos0008 cos -4.9540404623376872 -0.57949232239026827 -> 0.28062445586552065 0.59467861308508008 -cos0009 cos -0.45374584316245026 1.3950283448373935 -> 1.9247665574290578 0.83004572204761107 -cos0010 cos -0.42578172040176843 1.2715881615413049 -> 1.7517161459489148 0.67863902697363332 -cos0011 cos -0.13862985354300136 0.43587635877670328 -> 1.0859880290361912 0.062157548146672272 -cos0012 cos -0.11073221308966584 9.9384082307326475e-15 -> 0.99387545040722947 1.0982543264065479e-15 -cos0013 cos -1.5027633662054623e-07 0.0069668060249955498 -> 1.0000242682912412 1.0469545565660995e-09 -cos0014 cos 4.9728645490503052 -0.00027479808860952822 -> 0.25754011731975501 -0.00026552849549083186 -cos0015 cos 7.81969303486719 -0.79621523445878783 -> 0.045734882501585063 0.88253139933082991 -cos0016 cos 0.13272421880766716 -0.74668445308718201 -> 1.2806012244432847 0.10825373267437005 -cos0017 cos 4.2396521985973274 -2.2178848380884881 -> -2.1165117057056855 -4.0416492444641401 -cos0018 cos 1.1622206624927296 -0.50400115461197081 -> 0.44884072613370379 0.4823469915034318 -cos0019 cos 1.628772864620884e-08 0.58205705428979282 -> 1.1742319995791435 -1.0024839481956604e-08 -cos0020 cos 2.6385212606111241 2.9886107100937296 -> -8.7209475927161417 -4.7748352107199796 -cos0021 cos 4.8048375263775256 0.0062248852898515658 -> 0.092318702015846243 0.0061983430422306142 -cos0022 cos 7.9914515433858515 0.71659966615501436 -> -0.17375439906936566 -0.77217043527294582 -cos0023 cos 0.45124351152540226 1.6992693993812158 -> 2.543477948972237 -1.1528193694875477 - - ---------------- --- sin: Sine -- ---------------- - --- zeros -sin0000 sin 0.0 0.0 -> 0.0 0.0 -sin0001 sin 0.0 -0.0 -> 0.0 -0.0 -sin0002 sin -0.0 0.0 -> -0.0 0.0 -sin0003 sin -0.0 -0.0 -> -0.0 -0.0 - --- random inputs -sin0004 sin -0.18691829163163759 -0.74388741985507034 -> -0.2396636733773444 -0.80023231101856751 -sin0005 sin -0.45127453702459158 -461.81339920716164 -> -7.9722299331077877e+199 -1.6450205811004628e+200 -sin0006 sin -0.47669228345768921 -2.7369936564987514 -> -3.557238022267124 -6.8308030771226615 -sin0007 sin -0.31024285525950857 -1.4869219939188296 -> -0.70972676047175209 -1.9985029635426839 -sin0008 sin -4.4194573407025608 -1.405999210989288 -> 2.0702480800802685 0.55362250792180601 -sin0009 sin -1.7810832046434898e-05 0.0016439555384379083 -> -1.7810856113185261e-05 0.0016439562786668375 -sin0010 sin -0.8200017874897666 0.61724876887771929 -> -0.8749078195948865 0.44835295550987758 -sin0011 sin -1.4536502806107114 0.63998575534150415 -> -1.2035709929437679 0.080012187489163708 -sin0012 sin -2.2653412155506079 0.13172760685583729 -> -0.77502093809190431 -0.084554426868229532 -sin0013 sin -0.02613983069491858 0.18404766597776073 -> -0.026580778863127943 0.18502525396735642 -sin0014 sin 1.5743065001054617 -0.53125574272642029 -> 1.1444596332092725 0.0019537598099352077 -sin0015 sin 7.3833101791283289e-20 -0.16453221324236217 -> 7.4834720674379429e-20 -0.16527555646466915 -sin0016 sin 0.34763834641254038 -2.8377416421089565 -> 2.918883541504663 -8.0002718053250224 -sin0017 sin 0.077105785180421563 -0.090056027316200674 -> 0.077341973814471304 -0.089909869380524587 -sin0018 sin 3.9063227798142329e-17 -0.05954098654295524 -> 3.9132490348956512e-17 -0.059576172859837351 -sin0019 sin 0.57333917932544598 8.7785221430594696e-06 -> 0.54244029338302935 7.3747869125301368e-06 -sin0020 sin 0.024861722816513169 0.33044620756118515 -> 0.026228801369651 0.3363889671570689 -sin0021 sin 1.4342727387492671 0.81361889790284347 -> 1.3370960060947923 0.12336137961387163 -sin0022 sin 1.1518087354403725 4.8597235966150558 -> 58.919141989603041 26.237003403758852 -sin0023 sin 0.00087773078406649192 34.792379211312095 -> 565548145569.38245 644329685822700.62 - - ------------------- --- tan: Tangent -- ------------------- - --- zeros -tan0000 tan 0.0 0.0 -> 0.0 0.0 -tan0001 tan 0.0 -0.0 -> 0.0 -0.0 -tan0002 tan -0.0 0.0 -> -0.0 0.0 -tan0003 tan -0.0 -0.0 -> -0.0 -0.0 - --- random inputs -tan0004 tan -0.56378561833861074 -1.7110276237187664e+73 -> -0.0 -1.0 -tan0005 tan -3.5451633993471915e-12 -2.855471863564059 -> -4.6622441304889575e-14 -0.99340273843093951 -tan0006 tan -2.502442719638696 -0.26742234390504221 -> 0.66735215252994995 -0.39078997935420956 -tan0007 tan -0.87639597720371365 -55.586225523280206 -> -1.0285264565948176e-48 -1.0 -tan0008 tan -0.015783869596427243 -520.05944436039272 -> -0.0 -1.0 -tan0009 tan -0.84643549990725164 2.0749097935396343 -> -0.031412661676959573 1.0033548479526764 -tan0010 tan -0.43613792248559646 8.1082741629458059 -> -1.3879848444644593e-07 0.99999988344224011 -tan0011 tan -1.0820906367833114 0.28571868992480248 -> -1.3622485737936536 0.99089269377971245 -tan0012 tan -1.1477859580220084 1.9021637002708041 -> -0.034348450042071196 1.0293954097901687 -tan0013 tan -0.12465543176953409 3.0606851016344815e-05 -> -0.12530514290387343 3.1087420769945479e-05 -tan0014 tan 3.7582848717525343 -692787020.44038939 -> 0.0 -1.0 -tan0015 tan 2.2321967655142176e-06 -10.090069423008169 -> 1.5369846120622643e-14 -0.99999999655723759 -tan0016 tan 0.88371172390245012 -1.1635053630132823 -> 0.19705017118625889 -1.0196452280843129 -tan0017 tan 2.1347414231849267 -1.9311339960416831 -> -0.038663576915982524 -1.0174399993980778 -tan0018 tan 5.9027945255899974 -2.1574195684607135e-183 -> -0.39986591539281496 -2.5023753167976915e-183 -tan0019 tan 0.44811489490805362 683216075670.07556 -> 0.0 1.0 -tan0020 tan 4.1459766396068325 12.523017205605756 -> 2.4022514758988068e-11 1.0000000000112499 -tan0021 tan 1.7809617968443272 1.5052381702853379 -> -0.044066222118946903 1.0932684517702778 -tan0022 tan 1.1615313900880577 1.7956298728647107 -> 0.041793186826390362 1.0375339546034792 -tan0023 tan 0.067014779477908945 5.8517361577457097 -> 2.2088639754800034e-06 0.9999836182420061 - ------------------------------------------------------------------------- --- rect: Conversion from polar coordinates to rectangular coordinates -- ------------------------------------------------------------------------- --- --- For cmath.rect, we can use the same testcase syntax as for the --- complex -> complex functions above, but here the input arguments --- should be interpreted as a pair of floating-point numbers rather --- than the real and imaginary parts of a complex number. --- --- Here are the 'spirit of C99' rules for rect. First, the short --- version: --- --- rect(x, t) = exp(log(x)+it) for positive-signed x --- rect(x, t) = -exp(log(-x)+it) for negative-signed x --- rect(nan, t) = exp(nan + it), except that in rect(nan, +-0) the --- sign of the imaginary part is unspecified. --- --- and now the long version: --- --- rect(x, -t) = conj(rect(x, t)) for all x and t --- rect(-x, t) = -rect(x, t) for all x and t --- rect(+0, +0) returns +0 + i0 --- rect(+0, inf) returns +- 0 +- i0, where the signs of the real and --- imaginary parts are unspecified. --- rect(x, inf) returns NaN + i NaN and raises the "invalid" --- floating-point exception, for finite nonzero x. --- rect(inf, inf) returns +-inf + i NaN and raises the "invalid" --- floating-point exception (where the sign of the real part of the --- result is unspecified). --- rect(inf, +0) returns inf+i0 --- rect(inf, x) returns inf*cis(x), for finite nonzero x --- rect(inf, NaN) returns +-inf+i NaN, where the sign of the real part --- of the result is unspecified. --- rect(NaN, x) returns NaN + i NaN for all nonzero numbers (including --- infinities) x --- rect(NaN, 0) returns NaN +- i0, where the sign of the imaginary --- part is unspecified --- rect(NaN, NaN) returns NaN + i NaN --- rect(x, NaN) returns NaN + i NaN for finite nonzero x --- rect(+0, NaN) return +-0 +- i0, where the signs of the real and --- imaginary parts are unspecified. - --- special values -rect1000 rect 0.0 0.0 -> 0.0 0.0 -rect1001 rect 0.0 inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1002 rect 2.3 inf -> nan nan invalid -rect1003 rect inf inf -> inf nan invalid ignore-real-sign -rect1004 rect inf 0.0 -> inf 0.0 -rect1005 rect inf 1.4 -> inf inf -rect1006 rect inf 2.8 -> -inf inf -rect1007 rect inf 4.2 -> -inf -inf -rect1008 rect inf 5.6 -> inf -inf -rect1009 rect inf 7.0 -> inf inf -rect1010 rect nan 0.0 -> nan 0.0 ignore-imag-sign -rect1011 rect nan 2.3 -> nan nan -rect1012 rect nan inf -> nan nan -rect1013 rect nan nan -> nan nan -rect1014 rect inf nan -> inf nan ignore-real-sign -rect1015 rect 2.3 nan -> nan nan -rect1016 rect 0.0 nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1017 rect 0.0 -0.0 -> 0.0 -0.0 -rect1018 rect 0.0 -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1019 rect 2.3 -inf -> nan nan invalid -rect1020 rect inf -inf -> inf nan invalid ignore-real-sign -rect1021 rect inf -0.0 -> inf -0.0 -rect1022 rect inf -1.4 -> inf -inf -rect1023 rect inf -2.8 -> -inf -inf -rect1024 rect inf -4.2 -> -inf inf -rect1025 rect inf -5.6 -> inf inf -rect1026 rect inf -7.0 -> inf -inf -rect1027 rect nan -0.0 -> nan 0.0 ignore-imag-sign -rect1028 rect nan -2.3 -> nan nan -rect1029 rect nan -inf -> nan nan -rect1030 rect -0.0 0.0 -> -0.0 -0.0 -rect1031 rect -0.0 inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1032 rect -2.3 inf -> nan nan invalid -rect1033 rect -inf inf -> -inf nan invalid ignore-real-sign -rect1034 rect -inf 0.0 -> -inf -0.0 -rect1035 rect -inf 1.4 -> -inf -inf -rect1036 rect -inf 2.8 -> inf -inf -rect1037 rect -inf 4.2 -> inf inf -rect1038 rect -inf 5.6 -> -inf inf -rect1039 rect -inf 7.0 -> -inf -inf -rect1040 rect -inf nan -> inf nan ignore-real-sign -rect1041 rect -2.3 nan -> nan nan -rect1042 rect -0.0 nan -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1043 rect -0.0 -0.0 -> -0.0 0.0 -rect1044 rect -0.0 -inf -> 0.0 0.0 ignore-real-sign ignore-imag-sign -rect1045 rect -2.3 -inf -> nan nan invalid -rect1046 rect -inf -inf -> -inf nan invalid ignore-real-sign -rect1047 rect -inf -0.0 -> -inf 0.0 -rect1048 rect -inf -1.4 -> -inf inf -rect1049 rect -inf -2.8 -> inf inf -rect1050 rect -inf -4.2 -> inf -inf -rect1051 rect -inf -5.6 -> -inf -inf -rect1052 rect -inf -7.0 -> -inf inf - -------------------------------------------------------------------------- --- polar: Conversion from rectangular coordinates to polar coordinates -- -------------------------------------------------------------------------- --- --- For cmath.polar, we can use the same testcase syntax as for the --- complex -> complex functions above, but here the output arguments --- should be interpreted as a pair of floating-point numbers rather --- than the real and imaginary parts of a complex number. --- --- Annex G of the C99 standard describes fully both the real and --- imaginary parts of polar (as cabs and carg, respectively, which in turn --- are defined in terms of the functions hypot and atan2). - --- overflow -polar0100 polar 1.4e308 1.4e308 -> inf 0.78539816339744828 overflow - --- special values -polar1000 polar 0.0 0.0 -> 0.0 0.0 -polar1001 polar 0.0 -0.0 -> 0.0 -0.0 -polar1002 polar -0.0 0.0 -> 0.0 3.1415926535897931 -polar1003 polar -0.0 -0.0 -> 0.0 -3.1415926535897931 -polar1004 polar inf 0.0 -> inf 0.0 -polar1005 polar inf 2.3 -> inf 0.0 -polar1006 polar inf inf -> inf 0.78539816339744828 -polar1007 polar 2.3 inf -> inf 1.5707963267948966 -polar1008 polar 0.0 inf -> inf 1.5707963267948966 -polar1009 polar -0.0 inf -> inf 1.5707963267948966 -polar1010 polar -2.3 inf -> inf 1.5707963267948966 -polar1011 polar -inf inf -> inf 2.3561944901923448 -polar1012 polar -inf 2.3 -> inf 3.1415926535897931 -polar1013 polar -inf 0.0 -> inf 3.1415926535897931 -polar1014 polar -inf -0.0 -> inf -3.1415926535897931 -polar1015 polar -inf -2.3 -> inf -3.1415926535897931 -polar1016 polar -inf -inf -> inf -2.3561944901923448 -polar1017 polar -2.3 -inf -> inf -1.5707963267948966 -polar1018 polar -0.0 -inf -> inf -1.5707963267948966 -polar1019 polar 0.0 -inf -> inf -1.5707963267948966 -polar1020 polar 2.3 -inf -> inf -1.5707963267948966 -polar1021 polar inf -inf -> inf -0.78539816339744828 -polar1022 polar inf -2.3 -> inf -0.0 -polar1023 polar inf -0.0 -> inf -0.0 -polar1024 polar nan -inf -> inf nan -polar1025 polar nan -2.3 -> nan nan -polar1026 polar nan -0.0 -> nan nan -polar1027 polar nan 0.0 -> nan nan -polar1028 polar nan 2.3 -> nan nan -polar1029 polar nan inf -> inf nan -polar1030 polar nan nan -> nan nan -polar1031 polar inf nan -> inf nan -polar1032 polar 2.3 nan -> nan nan -polar1033 polar 0.0 nan -> nan nan -polar1034 polar -0.0 nan -> nan nan -polar1035 polar -2.3 nan -> nan nan -polar1036 polar -inf nan -> inf nan Modified: python/branches/trunk-math/Lib/test/test_math.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_math.py (original) +++ python/branches/trunk-math/Lib/test/test_math.py Tue Feb 19 05:38:32 2008 @@ -18,7 +18,7 @@ else: file = __file__ test_dir = os.path.dirname(file) or os.curdir -test_file = os.path.join(test_dir, 'cmath.ctest') +test_file = os.path.join(test_dir, 'cmath_testcases.txt') def parse_testfile(fname): """Parse a file with test values From buildbot at python.org Tue Feb 19 08:04:49 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 19 Feb 2008 07:04:49 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080219070450.23B7B1E4003@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/89 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From nnorwitz at gmail.com Tue Feb 19 10:08:27 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 19 Feb 2008 04:08:27 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080219090827.GA3424@python.psfb.org> 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [558104 refs] From nnorwitz at gmail.com Tue Feb 19 10:15:24 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 19 Feb 2008 04:15:24 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080219091524.GA5439@python.psfb.org> 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [9888 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 305 tests OK. 1 test failed: test_unicode 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [557701 refs] From nnorwitz at gmail.com Tue Feb 19 11:41:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 19 Feb 2008 05:41:03 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080219104103.GA23704@python.psfb.org> 316 tests OK. 1 test failed: test_unicode 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Exception in thread reader 2: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 4: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 1: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 0: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Exception in thread reader 3: Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/threading.py", line 486, in __bootstrap_inner self.run() File "/tmp/python-test/local/lib/python2.6/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/tmp/python-test/local/lib/python2.6/bsddb/test/test_thread.py", line 284, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/tmp/python-test/local/lib/python2.6/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test test_unicode failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_unicode.py", line 1095, in test_format self.assertEqual("foo{0}".format(u'bar'), 'foobar') AssertionError: 'foo\x00\x00\x00' != 'foobar' test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 1 test failed: test_unicode 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [569746 refs] From python-checkins at python.org Tue Feb 19 13:27:59 2008 From: python-checkins at python.org (eric.smith) Date: Tue, 19 Feb 2008 13:27:59 +0100 (CET) Subject: [Python-checkins] r60899 - python/trunk/Makefile.pre.in Message-ID: <20080219122759.B19911E4009@bag.python.org> Author: eric.smith Date: Tue Feb 19 13:27:59 2008 New Revision: 60899 Modified: python/trunk/Makefile.pre.in Log: Added dependencies for stringobject.o. This should fix failing tests in test_unicode.py. Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Tue Feb 19 13:27:59 2008 @@ -525,6 +525,14 @@ $(srcdir)/Objects/stringlib/find.h \ $(srcdir)/Objects/stringlib/partition.h +Objects/stringobject.o: $(srcdir)/Objects/stringobject.c \ + $(srcdir)/Objects/stringlib/string_format.h \ + $(srcdir)/Objects/stringlib/stringdefs.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/partition.h + Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \ $(srcdir)/Objects/stringlib/formatter.h From python-checkins at python.org Tue Feb 19 14:21:57 2008 From: python-checkins at python.org (eric.smith) Date: Tue, 19 Feb 2008 14:21:57 +0100 (CET) Subject: [Python-checkins] r60901 - python/trunk/Misc/NEWS Message-ID: <20080219132157.12C2F1E4009@bag.python.org> Author: eric.smith Date: Tue Feb 19 14:21:56 2008 New Revision: 60901 Modified: python/trunk/Misc/NEWS Log: Added PEP 3101. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Feb 19 14:21:56 2008 @@ -12,6 +12,12 @@ Core and builtins ----------------- +- Implemented PEP 3101, Advanced String Formatting. This adds a new + builtin format(); a format() method for str and unicode; a + __format__() method to object, str, unicode, int, long, float, and + datetime; the class string.Formatter; and the C API + PyObject_Format(). + - Fixed several potential crashes, all caused by specially crafted __del__ methods exploiting objects in temporarily inconsistent state. From buildbot at python.org Tue Feb 19 15:19:45 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 19 Feb 2008 14:19:45 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080219141945.C5A921E4009@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/615 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=76409 and list=[76419] 1 test failed: test_socketserver ====================================================================== ERROR: test_TCPServers (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 211, in test_TCPServers MyStreamHandler, self.stream_examine) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 179, in run_servers testfunc(proto, addr) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 186, in stream_examine s.connect(addr) File "", line 1, in connect error: [Errno 61] Connection refused sincerely, -The Buildbot From buildbot at python.org Tue Feb 19 16:02:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 19 Feb 2008 15:02:04 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080219150204.8060B1E4013@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/644 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Tue Feb 19 16:29:41 2008 From: python-checkins at python.org (ronald.oussoren) Date: Tue, 19 Feb 2008 16:29:41 +0100 (CET) Subject: [Python-checkins] r60903 - python/branches/release25-maint/Mac/BuildScript/build-installer.py Message-ID: <20080219152941.102A31E4028@bag.python.org> Author: ronald.oussoren Date: Tue Feb 19 16:29:40 2008 New Revision: 60903 Modified: python/branches/release25-maint/Mac/BuildScript/build-installer.py Log: A quick fix that removes a spurious unittest failure when users upgrade their python2.5 install and then run Python's test suite. This is needed because one of the test files for the decimal module changed it name (see issue 2114) and OSX doesn't feature a full package manager. Modified: python/branches/release25-maint/Mac/BuildScript/build-installer.py ============================================================================== --- python/branches/release25-maint/Mac/BuildScript/build-installer.py (original) +++ python/branches/release25-maint/Mac/BuildScript/build-installer.py Tue Feb 19 16:29:40 2008 @@ -733,6 +733,16 @@ os.symlink(os.path.join(to_framework, fn), os.path.join(usr_local_bin, fn)) + # A quick fix that removes a spurious unittest failure when users + # upgrade their python2.5 install and then run Python's test suite. + # This is needed because one of the test files for the decimal module + # changed it name (see issue 2114). + test_dir = os.path.join(rootDir, 'Library', 'Frameworks', + 'Python.framework', 'Versions', version, 'lib', + 'python%s'%(version,), 'test', 'decimaltestdata') + data = open(os.path.join(test_dir, 'reduce.decTest'), 'r').read() + open(os.path.join(test_dir, 'normalize.decTest'), 'w').write(data) + os.chdir(curdir) From buildbot at python.org Tue Feb 19 16:57:15 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 19 Feb 2008 15:57:15 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 2.5 Message-ID: <20080219155715.AD8BA1E400A@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%202.5/builds/541 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling,ronald.oussoren BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Feb 19 17:47:44 2008 From: python-checkins at python.org (christian.heimes) Date: Tue, 19 Feb 2008 17:47:44 +0100 (CET) Subject: [Python-checkins] r60904 - python/branches/trunk-math/Modules/cmathmodule.c Message-ID: <20080219164744.6F4131E401D@bag.python.org> Author: christian.heimes Date: Tue Feb 19 17:47:44 2008 New Revision: 60904 Modified: python/branches/trunk-math/Modules/cmathmodule.c Log: On Windows atan2 returns the wrong values for inf and nan Modified: python/branches/trunk-math/Modules/cmathmodule.c ============================================================================== --- python/branches/trunk-math/Modules/cmathmodule.c (original) +++ python/branches/trunk-math/Modules/cmathmodule.c Tue Feb 19 17:47:44 2008 @@ -276,6 +276,27 @@ return r; } +/* Windows screws up atan2 for inf and nan */ +static double +c_atan2(Py_complex z) +{ + if (Py_IS_NAN(z.real) || Py_IS_NAN(z.imag)) + return Py_NAN; + if (Py_IS_INFINITY(z.imag)) { + if (Py_IS_INFINITY(z.real)) { + if (copysign(1., z.real) == 1.) + /* atan2(+-inf, +inf) == +-pi/4 */ + return copysign(0.25*Py_MATH_PI, z.imag); + else + /* atan2(+-inf, -inf) == +-pi*3/4 */ + return copysign(0.75*Py_MATH_PI, z.imag); + } + /* atan2(+-inf, x) == +-pi/2 for finite x */ + return copysign(0.5*Py_MATH_PI, z.imag); + } + return atan2(z.imag, z.real); +} + PyDoc_STRVAR(c_atan_doc, "atan(x)\n" "\n" @@ -958,7 +979,7 @@ return NULL; errno = 0; PyFPE_START_PROTECT("arg function", return 0) - phi = atan2(z.imag, z.real); + phi = c_atan2(z); PyFPE_END_PROTECT(r) if (errno != 0) return math_error(); @@ -978,7 +999,7 @@ if (!PyArg_ParseTuple(args, "D:polar", &z)) return NULL; PyFPE_START_PROTECT("polar function", return 0) - phi = atan2(z.imag, z.real); /* should not cause any exception */ + phi = c_atan2(z); /* should not cause any exception */ r = c_abs(z); /* sets errno to ERANGE on overflow; otherwise 0 */ PyFPE_END_PROTECT(r) if (errno != 0) From python-checkins at python.org Tue Feb 19 18:14:59 2008 From: python-checkins at python.org (travis.oliphant) Date: Tue, 19 Feb 2008 18:14:59 +0100 (CET) Subject: [Python-checkins] r60905 - peps/trunk/pep-3118.txt Message-ID: <20080219171459.672841E4004@bag.python.org> Author: travis.oliphant Date: Tue Feb 19 18:14:59 2008 New Revision: 60905 Modified: peps/trunk/pep-3118.txt Log: Add explanation about 2-d C-arrays and multi-dimensional elements in example of struct syntax. Modified: peps/trunk/pep-3118.txt ============================================================================== --- peps/trunk/pep-3118.txt (original) +++ peps/trunk/pep-3118.txt Tue Feb 19 18:14:59 2008 @@ -68,7 +68,7 @@ There are two widely used libraries that use the concept of discontiguous memory: PIL and NumPy. Their view of discontiguous arrays is different, though. The proposed buffer interface allows - sharing of either memory model. Exporters will use only one + sharing of either memory model. Exporters will typically use only one approach and consumers may choose to support discontiguous arrays of each type however they choose. @@ -228,7 +228,7 @@ checking for what 'kind' of data is actually stored. An exporter should always be able to provide this information if requested. If format is not explicitly requested then the format must be returned - as ``NULL`` (which means "B") + as ``NULL`` (which means "B", or unsigned bytes) ``PyBUF_ND`` @@ -322,8 +322,8 @@ void *internal; } Py_buffer; -Before calling this function, the bufferinfo structure can be filled -with whatever. Upon return from getbufferproc, the bufferinfo +Before calling the bf_getbuffer function, the bufferinfo structure can be +filled with whatever. Upon return from bf_getbuffer, the bufferinfo structure is filled in with relevant information about the buffer. This same bufferinfo structure must be passed to bf_releasebuffer (if available) when the consumer is done with the memory. The caller is @@ -453,10 +453,10 @@ Both of these routines are optional for a type object - If the releasebuffer function is not provided then it does not ever - need to be called. + If the bf_releasebuffer function is not provided (i.e. it is NULL), + then it does not ever need to be called. -Exporters will need to define a releasebuffer function if they can +Exporters will need to define a bf_releasebuffer function if they can re-allocate their memory, strides, shape, suboffsets, or format variables which they might share through the struct bufferinfo. Several mechanisms could be used to keep track of how many getbuffer @@ -520,7 +520,7 @@ Thus, this memory view object holds on to the memory of base until it is deleted. -The getbuffer and releasebuffer for this object increments and +The bf_getbuffer and bf_releasebuffer for this object increments and decrements the lock on base, but passes on the contents of view to the caller. @@ -772,6 +772,24 @@ (16,4)d:data: """ +Note, that in the last example, the C-structure compared against is +intentionally a 1-d array and not a 2-d array data[16][4]. The reason +for this is to avoid the confusions between static multi-dimensional +arrays in C (which are layed out contiguously) and dynamic +multi-dimensional arrays which use the same syntax to access elements, +data[0][1], but whose memory is not necessarily contiguous. The +struct-syntax *always* uses contiguous memory and the +multi-dimensional character is information about the memory to be +communicated by the exporter. + +In other words, the struct-syntax description does not have to match +the C-syntax exactly as long as it describes the same memory layout. +The fact that a C-compiler would think of the memory as a 1-d array of +doubles is irrelevant to the fact that the exporter wanted to +communicate to the consumer that this field of the memory should be +thought of as a 2-d array where a new dimension is considered after +every 4 elements. + Code to be affected =================== @@ -813,7 +831,7 @@ libraries. Also, with this approach it should be possible to write generic code -that works with both kinds of memory. +that works with both kinds of memory without copying. Memory management of the format string, the shape array, the strides array, and the suboffsets array in the bufferinfo structure is always From guido at python.org Tue Feb 19 18:30:44 2008 From: guido at python.org (Guido van Rossum) Date: Tue, 19 Feb 2008 09:30:44 -0800 Subject: [Python-checkins] r60892 - in python/branches/release25-maint: Lib/test/test_struct.py Misc/NEWS In-Reply-To: <20080218174627.920EE1E4012@bag.python.org> References: <20080218174627.920EE1E4012@bag.python.org> Message-ID: Hm. I would have been happier with just disabling the test if sys.maxsize > some value. Having a regression test for this crasher has some value, even if the crasher is 32-bit specific. On Feb 18, 2008 9:46 AM, martin.v.loewis wrote: > Author: martin.v.loewis > Date: Mon Feb 18 18:46:27 2008 > New Revision: 60892 > > Modified: > python/branches/release25-maint/Lib/test/test_struct.py > python/branches/release25-maint/Misc/NEWS > Log: > Bug #2137: Remove test_struct.test_crasher, which was meaningful > only on 32-bit systems. > > > Modified: python/branches/release25-maint/Lib/test/test_struct.py > ============================================================================== > --- python/branches/release25-maint/Lib/test/test_struct.py (original) > +++ python/branches/release25-maint/Lib/test/test_struct.py Mon Feb 18 18:46:27 2008 > @@ -618,12 +618,8 @@ > value, = struct.unpack('>I', data) > vereq(value, 0x12345678) > > -def test_crasher(): > - assertRaises(MemoryError, struct.pack, "357913941c", "a") > - > # Test methods to pack and unpack from buffers rather than strings. > test_unpack_from() > test_pack_into() > test_pack_into_fn() > test_unpack_with_buffer() > -test_crasher() > > Modified: python/branches/release25-maint/Misc/NEWS > ============================================================================== > --- python/branches/release25-maint/Misc/NEWS (original) > +++ python/branches/release25-maint/Misc/NEWS Mon Feb 18 18:46:27 2008 > @@ -15,6 +15,9 @@ > - Fix deallocation of array objects when allocation ran out of memory. > Remove array test case that was incorrect on 64-bit systems. > > +- Bug #2137: Remove test_struct.test_crasher, which was meaningful > + only on 32-bit systems. > + > > What's New in Python 2.5.2c1? > ============================= > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) From martin at v.loewis.de Tue Feb 19 23:01:55 2008 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Tue, 19 Feb 2008 23:01:55 +0100 Subject: [Python-checkins] r60892 - in python/branches/release25-maint: Lib/test/test_struct.py Misc/NEWS In-Reply-To: References: <20080218174627.920EE1E4012@bag.python.org> Message-ID: <47BB51D3.1000901@v.loewis.de> > Hm. I would have been happier with just disabling the test if > sys.maxsize > some value. Having a regression test for this crasher > has some value, even if the crasher is 32-bit specific. I'm fine with adding it to the trunk. For a bug fix release, new tests don't add that much value, IMO, in particular if they don't get well-tested themselves before the release. IOW, if they are clearly wrong as-committed (as the ones I removed), they are out. FWIW, neither the 2.5 branch nor the trunk have sys.maxsize, so using that as a predicate would not have worked. Using sys.maxint (as someone proposed in the tracker) is bogus, as it would make the test run incorrectly on Win64. Regards, Martin From nnorwitz at gmail.com Tue Feb 19 23:40:41 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 19 Feb 2008 17:40:41 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080219224041.GA22984@python.psfb.org> 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [569744 refs] From nnorwitz at gmail.com Wed Feb 20 11:39:27 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 20 Feb 2008 05:39:27 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080220103927.GA25183@python.psfb.org> 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [569744 refs] From python-checkins at python.org Wed Feb 20 20:12:36 2008 From: python-checkins at python.org (georg.brandl) Date: Wed, 20 Feb 2008 20:12:36 +0100 (CET) Subject: [Python-checkins] r60907 - python/trunk/Doc/whatsnew/2.6.rst Message-ID: <20080220191236.B260D1E400A@bag.python.org> Author: georg.brandl Date: Wed Feb 20 20:12:36 2008 New Revision: 60907 Modified: python/trunk/Doc/whatsnew/2.6.rst Log: Fixes contributed by Ori Avtalion. Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Wed Feb 20 20:12:36 2008 @@ -707,8 +707,10 @@ Other functions in the :mod:`math` module, :func:`isinf` and :func:`isnan`, return true if their floating-point argument is - infinite or Not A Number. + infinite or Not A Number. + .. Patch 1640 + The ``math.copysign(x, y)`` function copies the sign bit of an IEEE 754 number, returning the absolute value of *x* combined with the sign bit of *y*. For example, @@ -1078,7 +1080,7 @@ * Integrating signal handling with GUI handling event loops like those used by Tkinter or GTk+ has long been a problem; most - software ends up polling, waking up every fraction of a second. Thi + software ends up polling, waking up every fraction of a second. The :mod:`signal` module can now make this more efficient. Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor to be used; when a signal is received, a byte is written to that @@ -1293,7 +1295,8 @@ z.extractall() (Contributed by Alan McIntyre.) - .. % Patch 467924 + + .. Patch 467924 .. ====================================================================== .. whole new modules get described in subsections here From python-checkins at python.org Wed Feb 20 20:43:14 2008 From: python-checkins at python.org (georg.brandl) Date: Wed, 20 Feb 2008 20:43:14 +0100 (CET) Subject: [Python-checkins] r60908 - doctools/trunk/sphinx/htmlhelp.py Message-ID: <20080220194314.75E471E400A@bag.python.org> Author: georg.brandl Date: Wed Feb 20 20:43:14 2008 New Revision: 60908 Modified: doctools/trunk/sphinx/htmlhelp.py Log: Fix the HTML help builder. Modified: doctools/trunk/sphinx/htmlhelp.py ============================================================================== --- doctools/trunk/sphinx/htmlhelp.py (original) +++ doctools/trunk/sphinx/htmlhelp.py Wed Feb 20 20:43:14 2008 @@ -117,7 +117,7 @@ def build_hhx(builder, outdir, outname): - builder.msg('dumping stopword list...') + builder.info('dumping stopword list...') f = open(path.join(outdir, outname+'.stp'), 'w') try: for word in sorted(stopwords): @@ -125,7 +125,7 @@ finally: f.close() - builder.msg('writing project file...') + builder.info('writing project file...') f = open(path.join(outdir, outname+'.hhp'), 'w') try: f.write(project_template % {'outname': outname, @@ -141,7 +141,7 @@ finally: f.close() - builder.msg('writing TOC file...') + builder.info('writing TOC file...') f = open(path.join(outdir, outname+'.hhc'), 'w') try: f.write(contents_header) @@ -177,7 +177,7 @@ finally: f.close() - builder.msg('writing index file...') + builder.info('writing index file...') f = open(path.join(outdir, outname+'.hhk'), 'w') try: f.write('
      \n') From nnorwitz at gmail.com Wed Feb 20 23:40:57 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 20 Feb 2008 17:40:57 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080220224057.GA28226@python.psfb.org> 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [7829 refs] [7829 refs] [7829 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8206 refs] [8206 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [7824 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7825 refs] [9749 refs] [8042 refs] [7825 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] [7824 refs] . [7824 refs] [7824 refs] this bit of output is from a test of stdout in a different process ... [7824 refs] [7824 refs] [8042 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [7824 refs] [7824 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [7829 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [10960 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 1 test failed: test_bsddb3 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [569744 refs] From python-checkins at python.org Thu Feb 21 00:34:22 2008 From: python-checkins at python.org (eric.smith) Date: Thu, 21 Feb 2008 00:34:22 +0100 (CET) Subject: [Python-checkins] r60909 - in python/trunk: Lib/test/test_types.py Misc/NEWS Python/pystrtod.c Message-ID: <20080220233422.A178E1E400C@bag.python.org> Author: eric.smith Date: Thu Feb 21 00:34:22 2008 New Revision: 60909 Modified: python/trunk/Lib/test/test_types.py python/trunk/Misc/NEWS python/trunk/Python/pystrtod.c Log: Trim leading zeros from a floating point exponent, per C99. See issue 1600. As far as I know, this only affects Windows. Add float type 'n' to PyOS_ascii_formatd (see PEP 3101 for 'n' description). Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Thu Feb 21 00:34:22 2008 @@ -89,6 +89,29 @@ if float(1) == 1.0 and float(-1) == -1.0 and float(0) == 0.0: pass else: self.fail('float() does not work properly') + def test_float_to_string(self): + def test(f, result): + self.assertEqual(f.__format__('e'), result) + self.assertEqual('%e' % f, result) + + # test all 2 digit exponents, both with __format__ and with + # '%' formatting + for i in range(-99, 100): + test(float('1.5e'+str(i)), '1.500000e{0:+03d}'.format(i)) + + # test some 3 digit exponents + self.assertEqual(1.5e100.__format__('e'), '1.500000e+100') + self.assertEqual('%e' % 1.5e100, '1.500000e+100') + + self.assertEqual(1.5e101.__format__('e'), '1.500000e+101') + self.assertEqual('%e' % 1.5e101, '1.500000e+101') + + self.assertEqual(1.5e-100.__format__('e'), '1.500000e-100') + self.assertEqual('%e' % 1.5e-100, '1.500000e-100') + + self.assertEqual(1.5e-101.__format__('e'), '1.500000e-101') + self.assertEqual('%e' % 1.5e-101, '1.500000e-101') + def test_normal_integers(self): # Ensure the first 256 integers are shared a = 256 @@ -486,16 +509,17 @@ test(-1.0, ' f', '-1.000000') test( 1.0, '+f', '+1.000000') test(-1.0, '+f', '-1.000000') + test(1.1234e90, 'f', '1.1234e+90') + test(1.1234e90, 'F', '1.1234e+90') test(1.1234e200, 'f', '1.1234e+200') test(1.1234e200, 'F', '1.1234e+200') - # temporarily removed. see issue 1600 - # test( 1.0, 'e', '1.000000e+00') - # test(-1.0, 'e', '-1.000000e+00') - # test( 1.0, 'E', '1.000000E+00') - # test(-1.0, 'E', '-1.000000E+00') - # test(1.1234e20, 'e', '1.123400e+20') - # test(1.1234e20, 'E', '1.123400E+20') + test( 1.0, 'e', '1.000000e+00') + test(-1.0, 'e', '-1.000000e+00') + test( 1.0, 'E', '1.000000E+00') + test(-1.0, 'E', '-1.000000E+00') + test(1.1234e20, 'e', '1.123400e+20') + test(1.1234e20, 'E', '1.123400E+20') # % formatting test(-1.0, '%', '-100.000000%') Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 21 00:34:22 2008 @@ -12,6 +12,13 @@ Core and builtins ----------------- +- Issue #1600: Modifed PyOS_ascii_formatd to use at most 2 digit + exponents for exponents with absolute value < 100. Follows C99 + standard. This is a change on Windows, which would use 3 digits. + Also, added 'n' to the formats that PyOS_ascii_formatd understands, + so that any alterations it does to the resulting string will be + available in stringlib/formatter.h (for float.__format__). + - Implemented PEP 3101, Advanced String Formatting. This adds a new builtin format(); a format() method for str and unicode; a __format__() method to object, str, unicode, int, long, float, and Modified: python/trunk/Python/pystrtod.c ============================================================================== --- python/trunk/Python/pystrtod.c (original) +++ python/trunk/Python/pystrtod.c Thu Feb 21 00:34:22 2008 @@ -186,6 +186,15 @@ } +/* From the C99 standard, section 7.19.6: +The exponent always contains at least two digits, and only as many more digits +as necessary to represent the exponent. +*/ +#define MIN_EXPONENT_DIGITS 2 + +/* see FORMATBUFLEN in unicodeobject.c */ +#define FLOAT_FORMATBUFLEN 120 + /** * PyOS_ascii_formatd: * @buffer: A buffer to place the resulting string in @@ -197,8 +206,10 @@ * Converts a #gdouble to a string, using the '.' as * decimal point. To format the number you pass in * a printf()-style format string. Allowed conversion - * specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'. + * specifiers are 'e', 'E', 'f', 'F', 'g', 'G', and 'n'. * + * 'n' is the same as 'g', except it uses the current locale. + * * Return value: The pointer to the buffer with the converted string. **/ char * @@ -207,17 +218,23 @@ const char *format, double d) { - struct lconv *locale_data; - const char *decimal_point; - size_t decimal_point_len, rest_len; char *p; char format_char; + size_t format_len = strlen(format); + + /* For type 'n', we need to make a copy of the format string, because + we're going to modify 'n' -> 'g', and format is const char*, so we + can't modify it directly. FLOAT_FORMATBUFLEN should be longer than + we ever need this to be. There's an upcoming check to ensure it's + big enough. */ + char tmp_format[FLOAT_FORMATBUFLEN]; /* g_return_val_if_fail (buffer != NULL, NULL); */ /* g_return_val_if_fail (format[0] == '%', NULL); */ /* g_return_val_if_fail (strpbrk (format + 1, "'l%") == NULL, NULL); */ - format_char = format[strlen(format) - 1]; + /* The last character in the format string must be the format char */ + format_char = format[format_len - 1]; /* g_return_val_if_fail (format_char == 'e' || format_char == 'E' || */ /* format_char == 'f' || format_char == 'F' || */ @@ -227,43 +244,126 @@ if (format[0] != '%') return NULL; + /* I'm not sure why this test is here. It's ensuring that the format + string after the first character doesn't have a single quote, a + lowercase l, or a percent. This is the reverse of the commented-out + test about 10 lines ago. */ if (strpbrk(format + 1, "'l%")) return NULL; if (!(format_char == 'e' || format_char == 'E' || format_char == 'f' || format_char == 'F' || - format_char == 'g' || format_char == 'G')) + format_char == 'g' || format_char == 'G' || + format_char == 'n')) return NULL; + /* Map 'n' format_char to 'g', by copying the format string and + replacing the final 'n' with a 'g' */ + if (format_char == 'n') { + if (format_len + 1 >= sizeof(tmp_format)) { + /* The format won't fit in our copy. Error out. In + practice, this will never happen and will be detected + by returning NULL */ + return NULL; + } + strcpy(tmp_format, format); + tmp_format[format_len - 1] = 'g'; + format = tmp_format; + } + /* Have PyOS_snprintf do the hard work */ PyOS_snprintf(buffer, buf_len, format, d); - locale_data = localeconv(); - decimal_point = locale_data->decimal_point; - decimal_point_len = strlen(decimal_point); - - assert(decimal_point_len != 0); - - if (decimal_point[0] != '.' || - decimal_point[1] != 0) - { - p = buffer; - - if (*p == '+' || *p == '-') - p++; - - while (isdigit((unsigned char)*p)) - p++; - - if (strncmp(p, decimal_point, decimal_point_len) == 0) - { - *p = '.'; - p++; - if (decimal_point_len > 1) { - rest_len = strlen(p + (decimal_point_len - 1)); - memmove(p, p + (decimal_point_len - 1), - rest_len); - p[rest_len] = 0; + /* Get the current local, and find the decimal point character (or + string?). Convert that string back to a dot. Do not do this if + using the 'n' (number) format code. */ + if (format_char != 'n') { + struct lconv *locale_data = localeconv(); + const char *decimal_point = locale_data->decimal_point; + size_t decimal_point_len = strlen(decimal_point); + size_t rest_len; + + assert(decimal_point_len != 0); + + if (decimal_point[0] != '.' || decimal_point[1] != 0) { + p = buffer; + + if (*p == '+' || *p == '-') + p++; + + while (isdigit(Py_CHARMASK(*p))) + p++; + + if (strncmp(p, decimal_point, decimal_point_len) == 0) { + *p = '.'; + p++; + if (decimal_point_len > 1) { + rest_len = strlen(p + + (decimal_point_len - 1)); + memmove(p, p + (decimal_point_len - 1), + rest_len); + p[rest_len] = 0; + } + } + } + } + + /* If an exponent exists, ensure that the exponent is at least + MIN_EXPONENT_DIGITS digits, providing the buffer is large enough + for the extra zeros. Also, if there are more than + MIN_EXPONENT_DIGITS, remove as many zeros as possible until we get + back to MIN_EXPONENT_DIGITS */ + p = strpbrk(buffer, "eE"); + if (p && (*(p + 1) == '-' || *(p + 1) == '+')) { + char *start = p + 2; + int exponent_digit_cnt = 0; + int leading_zero_cnt = 0; + int in_leading_zeros = 1; + int significant_digit_cnt; + + p += 2; + while (*p && isdigit(Py_CHARMASK(*p))) { + if (in_leading_zeros && *p == '0') + ++leading_zero_cnt; + if (*p != '0') + in_leading_zeros = 0; + ++p; + ++exponent_digit_cnt; + } + + significant_digit_cnt = exponent_digit_cnt - leading_zero_cnt; + if (exponent_digit_cnt == MIN_EXPONENT_DIGITS) { + /* If there are 2 exactly digits, we're done, + regardless of what they contain */ + } + else if (exponent_digit_cnt > MIN_EXPONENT_DIGITS) { + int extra_zeros_cnt; + + /* There are more than 2 digits in the exponent. See + if we can delete some of the leading zeros */ + if (significant_digit_cnt < MIN_EXPONENT_DIGITS) + significant_digit_cnt = MIN_EXPONENT_DIGITS; + extra_zeros_cnt = exponent_digit_cnt - significant_digit_cnt; + + /* Delete extra_zeros_cnt worth of characters from the + front of the exponent */ + assert(extra_zeros_cnt >= 0); + + /* Add one to significant_digit_cnt to copy the + trailing 0 byte, thus setting the length */ + memmove(start, + start + extra_zeros_cnt, + significant_digit_cnt + 1); + } + else { + /* If there are fewer than 2 digits, add zeros + until there are 2, if there's enough room */ + int zeros = MIN_EXPONENT_DIGITS - exponent_digit_cnt; + if (start + zeros + exponent_digit_cnt + 1 + < buffer + buf_len) { + memmove(start + zeros, start, + exponent_digit_cnt + 1); + memset(start, '0', zeros); } } } From python-checkins at python.org Thu Feb 21 00:39:29 2008 From: python-checkins at python.org (eric.smith) Date: Thu, 21 Feb 2008 00:39:29 +0100 (CET) Subject: [Python-checkins] r60910 - python/trunk/Objects/stringlib/formatter.h Message-ID: <20080220233929.22E3E1E400C@bag.python.org> Author: eric.smith Date: Thu Feb 21 00:39:28 2008 New Revision: 60910 Modified: python/trunk/Objects/stringlib/formatter.h Log: Now that PyOS_ascii_formatd supports the 'n' format, simplify the float formatting code to just call it. Modified: python/trunk/Objects/stringlib/formatter.h ============================================================================== --- python/trunk/Objects/stringlib/formatter.h (original) +++ python/trunk/Objects/stringlib/formatter.h Thu Feb 21 00:39:28 2008 @@ -130,16 +130,16 @@ } else if (end-ptr >= 1 && is_alignment_token(ptr[0])) { format->align = ptr[0]; - ptr++; + ++ptr; } /* Parse the various sign options */ if (end-ptr >= 1 && is_sign_element(ptr[0])) { format->sign = ptr[0]; - ptr++; + ++ptr; #if ALLOW_PARENS_FOR_SIGN if (end-ptr >= 1 && ptr[0] == ')') { - ptr++; + ++ptr; } #endif } @@ -150,7 +150,7 @@ if (format->align == '\0') { format->align = '='; } - ptr++; + ++ptr; } /* XXX add error checking */ @@ -165,7 +165,7 @@ /* Parse field precision */ if (end-ptr && ptr[0] == '.') { - ptr++; + ++ptr; /* XXX add error checking */ specified_width = get_integer(&ptr, end, &format->precision); @@ -189,7 +189,7 @@ if (end-ptr == 1) { format->type = ptr[0]; - ptr++; + ++ptr; } return 1; @@ -570,7 +570,7 @@ /* if X, convert to uppercase */ if (format->type == 'X') { Py_ssize_t t; - for (t = 0; t < n_digits; t++) + for (t = 0; t < n_digits; ++t) p[t + n_leading_chars] = STRINGLIB_TOUPPER(p[t + n_leading_chars]); } @@ -596,37 +596,20 @@ { register Py_ssize_t i; Py_ssize_t len = strlen(charbuffer); - for (i = len - 1; i >= 0; i--) + for (i = len - 1; i >= 0; --i) buffer[i] = (Py_UNICODE) charbuffer[i]; return len; } #endif -/* the callback function to call to do the actual float formatting. - it matches the definition of PyOS_ascii_formatd */ -typedef char* -(*DoubleSnprintfFunction)(char *buffer, size_t buf_len, - const char *format, double d); - -/* just a wrapper to make PyOS_snprintf look like DoubleSnprintfFunction */ -static char* -snprintf_double(char *buffer, size_t buf_len, const char *format, double d) -{ - PyOS_snprintf(buffer, buf_len, format, d); - return NULL; -} - /* see FORMATBUFLEN in unicodeobject.c */ #define FLOAT_FORMATBUFLEN 120 /* much of this is taken from unicodeobject.c */ -/* use type instead of format->type, so that it can be overridden by - format_number() */ static PyObject * -_format_float(STRINGLIB_CHAR type, PyObject *value, - const InternalFormatSpec *format, - DoubleSnprintfFunction snprintf) +format_float_internal(PyObject *value, + const InternalFormatSpec *format) { /* fmt = '%.' + `prec` + `type` + '%%' worst case length = 2 + 10 (len of INT_MAX) + 1 + 2 = 15 (use 20)*/ @@ -658,6 +641,7 @@ char* trailing = ""; STRINGLIB_CHAR *p; NumberFieldWidths spec; + STRINGLIB_CHAR type = format->type; #if STRINGLIB_IS_UNICODE Py_UNICODE unicodebuf[FLOAT_FORMATBUFLEN]; @@ -692,8 +676,8 @@ PyOS_snprintf(fmt, sizeof(fmt), "%%.%" PY_FORMAT_SIZE_T "d%c", precision, (char)type); - /* call the passed in function to do the actual formatting */ - snprintf(charbuf, sizeof(charbuf), fmt, x); + /* do the actual formatting */ + PyOS_ascii_formatd(charbuf, sizeof(charbuf), fmt, x); /* adding trailing to fmt with PyOS_snprintf doesn't work, not sure why. we'll just concatentate it here, no harm done. we @@ -719,8 +703,8 @@ and skip it */ sign = p[0]; if (sign == '-') { - p++; - n_digits--; + ++p; + --n_digits; } calc_number_widths(&spec, sign, n_digits, format); @@ -743,15 +727,6 @@ done: return result; } - -static PyObject * -format_float_internal(PyObject *value, const InternalFormatSpec *format) -{ - if (format->type == 'n') - return _format_float('f', value, format, snprintf_double); - else - return _format_float(format->type, value, format, PyOS_ascii_formatd); -} #endif /* FORMAT_FLOAT */ /************************************************************************/ From python at rcn.com Thu Feb 21 00:57:27 2008 From: python at rcn.com (Raymond Hettinger) Date: Wed, 20 Feb 2008 18:57:27 -0500 (EST) Subject: [Python-checkins] r60910 - python/trunk/Objects/stringlib/formatter.h Message-ID: <20080220185727.AHH59321@ms19.lnh.mail.rcn.net> I'm curious. Why were all the post-increments changed to pre-increments? Raymond -------------------------------- Modified: python/trunk/Objects/stringlib/formatter.h Log: Now that PyOS_ascii_formatd supports the 'n' format, simplify the float formatting code to just call it. Modified: python/trunk/Objects/stringlib/formatter.h ============================================================================== --- python/trunk/Objects/stringlib/formatter.h (original) +++ python/trunk/Objects/stringlib/formatter.h Thu Feb 21 00:39:28 2008 @@ -130,16 +130,16 @@ } else if (end-ptr >= 1 && is_alignment_token(ptr[0])) { format->align = ptr[0]; - ptr++; + ++ptr; } From buildbot at python.org Thu Feb 21 01:28:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 00:28:20 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080221002820.F0A3B1E400C@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2875 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith,georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From eric at trueblade.com Thu Feb 21 01:47:44 2008 From: eric at trueblade.com (Eric Smith) Date: Wed, 20 Feb 2008 19:47:44 -0500 Subject: [Python-checkins] r60910 - python/trunk/Objects/stringlib/formatter.h In-Reply-To: <20080220185727.AHH59321@ms19.lnh.mail.rcn.net> References: <20080220185727.AHH59321@ms19.lnh.mail.rcn.net> Message-ID: <47BCCA30.5050003@trueblade.com> It was a coding style I saw used more often than post-increments. No particular reason, just consistency. I should have mentioned it in the comments. Eric. Raymond Hettinger wrote: > I'm curious. Why were all the post-increments changed to pre-increments? > > Raymond > > > -------------------------------- > > Modified: > python/trunk/Objects/stringlib/formatter.h > Log: > Now that PyOS_ascii_formatd supports the 'n' format, simplify the float formatting code to just call it. > > Modified: python/trunk/Objects/stringlib/formatter.h > ============================================================================== > --- python/trunk/Objects/stringlib/formatter.h (original) > +++ python/trunk/Objects/stringlib/formatter.h Thu Feb 21 00:39:28 2008 > @@ -130,16 +130,16 @@ > } > else if (end-ptr >= 1 && is_alignment_token(ptr[0])) { > format->align = ptr[0]; > - ptr++; > + ++ptr; > } > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From fdrake at acm.org Thu Feb 21 02:02:50 2008 From: fdrake at acm.org (Fred Drake) Date: Wed, 20 Feb 2008 20:02:50 -0500 Subject: [Python-checkins] r60910 - python/trunk/Objects/stringlib/formatter.h In-Reply-To: <47BCCA30.5050003@trueblade.com> References: <20080220185727.AHH59321@ms19.lnh.mail.rcn.net> <47BCCA30.5050003@trueblade.com> Message-ID: <73E36FB5-89D4-4F3F-95BD-22F9C4F7D5D1@acm.org> On Feb 20, 2008, at 7:47 PM, Eric Smith wrote: > It was a coding style I saw used more often than post-increments. No > particular reason, just consistency. I should have mentioned it in > the > comments. I like the pre-increment better because I find it more noticeable when reading code; improved readability is good enough for me. -Fred -- Fred Drake From eric+python-dev at trueblade.com Thu Feb 21 02:05:47 2008 From: eric+python-dev at trueblade.com (Eric Smith) Date: Wed, 20 Feb 2008 20:05:47 -0500 Subject: [Python-checkins] r60910 - python/trunk/Objects/stringlib/formatter.h In-Reply-To: <73E36FB5-89D4-4F3F-95BD-22F9C4F7D5D1@acm.org> References: <20080220185727.AHH59321@ms19.lnh.mail.rcn.net> <47BCCA30.5050003@trueblade.com> <73E36FB5-89D4-4F3F-95BD-22F9C4F7D5D1@acm.org> Message-ID: <47BCCE6B.8030807@trueblade.com> Fred Drake wrote: > On Feb 20, 2008, at 7:47 PM, Eric Smith wrote: >> It was a coding style I saw used more often than post-increments. No >> particular reason, just consistency. I should have mentioned it in the >> comments. > > I like the pre-increment better because I find it more noticeable when > reading code; improved readability is good enough for me. It's also a style I tried to get in to back when I did C++. It was often more efficient there with user-defined types, but that argument doesn't hold here. Still, it's the one style I've tried to stick to. And since this code is brand new, I figured it didn't really matter much if I went through and made a gratuitous change. From buildbot at python.org Thu Feb 21 02:23:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 01:23:02 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080221012302.A9B7C1E4013@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/690 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Thu Feb 21 03:30:07 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 02:30:07 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080221023008.C9B4D1E4008@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/617 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_smtplib sincerely, -The Buildbot From buildbot at python.org Thu Feb 21 04:35:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 03:35:16 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080221033517.13F831E4008@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/91 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=17544 and list=[17556] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Feb 21 08:03:56 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 07:03:56 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080221070356.C5D201E4018@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/92 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 11:04:55 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 11:04:55 +0100 (CET) Subject: [Python-checkins] r60911 - in python/branches/release25-maint: Doc/commontex/boilerplate.tex Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS Message-ID: <20080221100455.F28011E400D@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 11:04:55 2008 New Revision: 60911 Modified: python/branches/release25-maint/Doc/commontex/boilerplate.tex python/branches/release25-maint/Include/patchlevel.h python/branches/release25-maint/Lib/idlelib/NEWS.txt python/branches/release25-maint/Lib/idlelib/idlever.py python/branches/release25-maint/Misc/NEWS Log: Prepare for 2.5.2. Modified: python/branches/release25-maint/Doc/commontex/boilerplate.tex ============================================================================== --- python/branches/release25-maint/Doc/commontex/boilerplate.tex (original) +++ python/branches/release25-maint/Doc/commontex/boilerplate.tex Thu Feb 21 11:04:55 2008 @@ -5,5 +5,5 @@ Email: \email{docs at python.org} } -\date{14th February, 2008} % XXX update before final release! +\date{21th February, 2008} % XXX update before final release! \input{patchlevel} % include Python version information Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Thu Feb 21 11:04:55 2008 @@ -22,11 +22,11 @@ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 5 #define PY_MICRO_VERSION 2 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "2.5.2c1" +#define PY_VERSION "2.5.2" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" Modified: python/branches/release25-maint/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/release25-maint/Lib/idlelib/NEWS.txt (original) +++ python/branches/release25-maint/Lib/idlelib/NEWS.txt Thu Feb 21 11:04:55 2008 @@ -1,3 +1,8 @@ +What's New in IDLE 1.2.2? +========================= + +*Release date: 21-FEB-2008* + What's New in IDLE 1.2.2c1? ========================= Modified: python/branches/release25-maint/Lib/idlelib/idlever.py ============================================================================== --- python/branches/release25-maint/Lib/idlelib/idlever.py (original) +++ python/branches/release25-maint/Lib/idlelib/idlever.py Thu Feb 21 11:04:55 2008 @@ -1 +1 @@ -IDLE_VERSION = "1.2.2c1" +IDLE_VERSION = "1.2.2" Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Thu Feb 21 11:04:55 2008 @@ -7,7 +7,7 @@ What's New in Python 2.5.2? ============================= -*Release date: XX-Feb-2008* +*Release date: 21-Feb-2008* Extension Modules ----------------- From python-checkins at python.org Thu Feb 21 11:07:08 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 11:07:08 +0100 (CET) Subject: [Python-checkins] r60912 - python/tags/r252 Message-ID: <20080221100708.BF4EF1E400D@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 11:07:08 2008 New Revision: 60912 Added: python/tags/r252/ - copied from r60911, python/branches/release25-maint/ Log: Tagging for release of Python 2.5.2 From ncoghlan at gmail.com Thu Feb 21 11:23:59 2008 From: ncoghlan at gmail.com (Nick Coghlan) Date: Thu, 21 Feb 2008 20:23:59 +1000 Subject: [Python-checkins] r60911 - in python/branches/release25-maint: Doc/commontex/boilerplate.tex Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS In-Reply-To: <20080221100455.F28011E400D@bag.python.org> References: <20080221100455.F28011E400D@bag.python.org> Message-ID: <47BD513F.403@gmail.com> martin.v.loewis wrote: > Author: martin.v.loewis > Date: Thu Feb 21 11:04:55 2008 > New Revision: 60911 > > Modified: > python/branches/release25-maint/Doc/commontex/boilerplate.tex > python/branches/release25-maint/Include/patchlevel.h > python/branches/release25-maint/Lib/idlelib/NEWS.txt > python/branches/release25-maint/Lib/idlelib/idlever.py > python/branches/release25-maint/Misc/NEWS > Log: > Prepare for 2.5.2. > > > Modified: python/branches/release25-maint/Doc/commontex/boilerplate.tex > ============================================================================== > --- python/branches/release25-maint/Doc/commontex/boilerplate.tex (original) > +++ python/branches/release25-maint/Doc/commontex/boilerplate.tex Thu Feb 21 11:04:55 2008 > @@ -5,5 +5,5 @@ > Email: \email{docs at python.org} > } > > -\date{14th February, 2008} % XXX update before final release! > +\date{21th February, 2008} % XXX update before final release! > \input{patchlevel} % include Python version information 21st? Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org From nnorwitz at gmail.com Thu Feb 21 12:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 06:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221112003.GA9021@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Thu Feb 21 12:05:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 11:05:39 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 2.5 Message-ID: <20080221110539.888B41E4014@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%202.5/builds/151 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 21 13:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 07:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221122002.GA9249@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 12:53:40 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 12:53:40 +0100 (CET) Subject: [Python-checkins] r60913 - in python/branches/release25-maint: Doc/README Doc/commontex/copyright.tex Doc/commontex/license.tex LICENSE PC/python_nt.rc Python/getcopyright.c README Message-ID: <20080221115340.DFC551E4013@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 12:53:40 2008 New Revision: 60913 Modified: python/branches/release25-maint/Doc/README python/branches/release25-maint/Doc/commontex/copyright.tex python/branches/release25-maint/Doc/commontex/license.tex python/branches/release25-maint/LICENSE python/branches/release25-maint/PC/python_nt.rc python/branches/release25-maint/Python/getcopyright.c python/branches/release25-maint/README Log: Update copyright years to 2008. Update README to 2.5.2. Modified: python/branches/release25-maint/Doc/README ============================================================================== --- python/branches/release25-maint/Doc/README (original) +++ python/branches/release25-maint/Doc/README Thu Feb 21 12:53:40 2008 @@ -229,7 +229,7 @@ as long as you don't change or remove the copyright notice: ---------------------------------------------------------------------- -Copyright (c) 2000-2007 Python Software Foundation. +Copyright (c) 2000-2008 Python Software Foundation. All rights reserved. Copyright (c) 2000 BeOpen.com. Modified: python/branches/release25-maint/Doc/commontex/copyright.tex ============================================================================== --- python/branches/release25-maint/Doc/commontex/copyright.tex (original) +++ python/branches/release25-maint/Doc/commontex/copyright.tex Thu Feb 21 12:53:40 2008 @@ -1,4 +1,4 @@ -Copyright \copyright{} 2001-2007 Python Software Foundation. +Copyright \copyright{} 2001-2008 Python Software Foundation. All rights reserved. Copyright \copyright{} 2000 BeOpen.com. Modified: python/branches/release25-maint/Doc/commontex/license.tex ============================================================================== --- python/branches/release25-maint/Doc/commontex/license.tex (original) +++ python/branches/release25-maint/Doc/commontex/license.tex Thu Feb 21 12:53:40 2008 @@ -84,7 +84,7 @@ prepare derivative works, distribute, and otherwise use Python \version{} alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., -``Copyright \copyright{} 2001-2007 Python Software Foundation; All +``Copyright \copyright{} 2001-2008 Python Software Foundation; All Rights Reserved'' are retained in Python \version{} alone or in any derivative version prepared by Licensee. Modified: python/branches/release25-maint/LICENSE ============================================================================== --- python/branches/release25-maint/LICENSE (original) +++ python/branches/release25-maint/LICENSE Thu Feb 21 12:53:40 2008 @@ -55,7 +55,7 @@ 2.4.4 2.4.3 2006 PSF yes 2.5 2.4 2006 PSF yes 2.5.1 2.5 2007 PSF yes - 2.5.2 2.5.2 2007 PSF yes + 2.5.2 2.5.2 2008 PSF yes Footnotes: @@ -91,7 +91,7 @@ prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) -2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. Modified: python/branches/release25-maint/PC/python_nt.rc ============================================================================== --- python/branches/release25-maint/PC/python_nt.rc (original) +++ python/branches/release25-maint/PC/python_nt.rc Thu Feb 21 12:53:40 2008 @@ -61,7 +61,7 @@ VALUE "FileDescription", "Python Core\0" VALUE "FileVersion", PYTHON_VERSION VALUE "InternalName", "Python DLL\0" - VALUE "LegalCopyright", "Copyright ? 2001-2007 Python Software Foundation. Copyright ? 2000 BeOpen.com. Copyright ? 1995-2001 CNRI. Copyright ? 1991-1995 SMC.\0" + VALUE "LegalCopyright", "Copyright ? 2001-2008 Python Software Foundation. Copyright ? 2000 BeOpen.com. Copyright ? 1995-2001 CNRI. Copyright ? 1991-1995 SMC.\0" VALUE "OriginalFilename", PYTHON_DLL_NAME "\0" VALUE "ProductName", "Python\0" VALUE "ProductVersion", PYTHON_VERSION Modified: python/branches/release25-maint/Python/getcopyright.c ============================================================================== --- python/branches/release25-maint/Python/getcopyright.c (original) +++ python/branches/release25-maint/Python/getcopyright.c Thu Feb 21 12:53:40 2008 @@ -4,7 +4,7 @@ static char cprt[] = "\ -Copyright (c) 2001-2007 Python Software Foundation.\n\ +Copyright (c) 2001-2008 Python Software Foundation.\n\ All Rights Reserved.\n\ \n\ Copyright (c) 2000 BeOpen.com.\n\ Modified: python/branches/release25-maint/README ============================================================================== --- python/branches/release25-maint/README (original) +++ python/branches/release25-maint/README Thu Feb 21 12:53:40 2008 @@ -1,7 +1,7 @@ -This is Python version 2.5.1 +This is Python version 2.5.2 ============================ -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Python Software Foundation. All rights reserved. From python-checkins at python.org Thu Feb 21 12:54:20 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 12:54:20 +0100 (CET) Subject: [Python-checkins] r60914 - python/tags/r252 Message-ID: <20080221115420.D55511E4013@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 12:54:20 2008 New Revision: 60914 Removed: python/tags/r252/ Log: Redo tag. From python-checkins at python.org Thu Feb 21 12:55:26 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 12:55:26 +0100 (CET) Subject: [Python-checkins] r60915 - python/tags/r252 Message-ID: <20080221115526.582E51E4013@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 12:55:26 2008 New Revision: 60915 Added: python/tags/r252/ - copied from r60914, python/branches/release25-maint/ Log: Tagging for release of Python 2.5.2 From python-checkins at python.org Thu Feb 21 13:00:38 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Feb 2008 13:00:38 +0100 (CET) Subject: [Python-checkins] r60916 - peps/trunk/pep-0101.txt Message-ID: <20080221120038.C03F81E4013@bag.python.org> Author: martin.v.loewis Date: Thu Feb 21 13:00:38 2008 New Revision: 60916 Modified: peps/trunk/pep-0101.txt Log: Document welease. Modified: peps/trunk/pep-0101.txt ============================================================================== --- peps/trunk/pep-0101.txt (original) +++ peps/trunk/pep-0101.txt Thu Feb 21 13:00:38 2008 @@ -57,6 +57,15 @@ streamlined procedures used to release Python 2.6 (including the alphas and betas). + We recommend that you use the welease tool, from + + http://svn.python.org/projects/sandbox/trunk/welease/ + + It helps verifying that certain (not yet all) mechanic editing + has not been forgotten, and invokes svn and tar commands + automatically. This guide will indicate which steps are supported + by welease. + ___ Impose a check-in freeze. Send a message to python-dev at python.org telling people not to make any check-ins on the tree until further notice. @@ -104,14 +113,14 @@ Lib/idlelib/NEWS.txt has been similarly updated. ___ Make sure the release date is fully spelled out in - Doc/commontex/boilerplate.tex. + Doc/commontex/boilerplate.tex (welease). - ___ Tag and/or branch the tree for release X.YaZ + ___ Tag and/or branch the tree for release X.YaZ (welease does tagging) If you're releasing an alpha/beta/release candidate, you will - just tag the tree. If you are releasing a final release, you - will both tag the trunk and create the long-lived maintenance - branch. + just tag the tree, AFTER you made the edits below. If you are + releasing a final release, you will both tag the trunk and + create the long-lived maintenance branch. All Python development happens on the trunk. While it's sometimes challenging to keep people from checking things in @@ -148,12 +157,13 @@ reflect the new version number you've just created. You'll want to change the PY_VERSION macro, and one or several of the version subpart macros just above PY_VERSION, as appropriate. + (checked by welease) ___ IDLE maintains its own versioning and NEWS file (Lib/idlelib/NEWS.txt). There should be a number of entries reflecting new development, under a temporary header. Update that header to reflect IDLE's new version and release date. Then update Lib/idlelib/idlever.py to show a matching - version. + version. (checked by welease) ___ distutils also maintains its own versioning file (Lib/distutils/__init__.py). Update this file with the Python version. @@ -365,12 +375,14 @@ ___ Time to build the source tarball. If you created a branch, be sure to cd to your working directory for the branch. E.g. % cd .../python-26a3 + (supported by welease) ___ Do a "svn update ; svn status" in this directory. You should not see any files. I.e. you better not have any uncommitted changes in your working directory, but you may pick up some of the expert's last minute changes. + (checked by welease) ___ If you've seen updates to existing files, update the svn tag: @@ -387,6 +399,7 @@ svn+ssh://pythondev at svn.python.org/python/tags/r26 This is the tag you will use below. + (supported by welease) ___ Change to a neutral directory, i.e. one in which you can do a fresh, virgin, svn export of the branch. You will be creating a @@ -395,6 +408,7 @@ % cd ~ % svn export -rr26c2 -d Python-2.6c2 python + (supported by welease) ___ Generate the tarballs. Note that we're not using the `z' option on the tar command because 1) that's only supported by GNU tar @@ -403,6 +417,7 @@ % tar cf - Python-2.6c2 | gzip -9 > Python-2.6c2.tgz % tar cf - Python-2.6c2 | bzip2 -9 > Python-2.6c2.tar.bz2 + (supported by welease) ___ Calculate the MD5 checksums of the files you just created From nnorwitz at gmail.com Thu Feb 21 14:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 08:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221132003.GA22855@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 13:57:32 2008 From: python-checkins at python.org (fred.drake) Date: Thu, 21 Feb 2008 13:57:32 +0100 (CET) Subject: [Python-checkins] r60917 - python/tags/r252/Doc/Makefile Message-ID: <20080221125732.623EC1E4018@bag.python.org> Author: fred.drake Date: Thu Feb 21 13:57:32 2008 New Revision: 60917 Modified: python/tags/r252/Doc/Makefile Log: as for r252c1, add the tag information so the source package is right Modified: python/tags/r252/Doc/Makefile ============================================================================== --- python/tags/r252/Doc/Makefile (original) +++ python/tags/r252/Doc/Makefile Thu Feb 21 13:57:32 2008 @@ -564,14 +564,14 @@ | bzip2 -9 >../$@ latex-$(RELEASE).tgz: - $(PYTHON) $(TOOLSDIR)/mksourcepkg --gzip $(RELEASE) + $(PYTHON) $(TOOLSDIR)/mksourcepkg --gzip $(RELEASE) tags/r252 latex-$(RELEASE).tar.bz2: - $(PYTHON) $(TOOLSDIR)/mksourcepkg --bzip2 $(RELEASE) + $(PYTHON) $(TOOLSDIR)/mksourcepkg --bzip2 $(RELEASE) tags/r252 latex-$(RELEASE).zip: rm -f $@ - $(PYTHON) $(TOOLSDIR)/mksourcepkg --zip $(RELEASE) + $(PYTHON) $(TOOLSDIR)/mksourcepkg --zip $(RELEASE) tags/r252 pdf-$(PAPER)-$(RELEASE).tar: $(PDFFILES) rm -f $@ @@ -700,7 +700,7 @@ $(TOOLSDIR)/mkpkglist >pkglist.html distfiles: paperdist edist - $(TOOLSDIR)/mksourcepkg --bzip2 --zip $(RELEASE) + $(TOOLSDIR)/mksourcepkg --bzip2 --zip $(RELEASE) tags/r252 $(TOOLSDIR)/mkpkglist >pkglist.html From nnorwitz at gmail.com Thu Feb 21 15:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 09:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221142002.GA23146@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 15:23:39 2008 From: python-checkins at python.org (andrew.kuchling) Date: Thu, 21 Feb 2008 15:23:39 +0100 (CET) Subject: [Python-checkins] r60918 - python/trunk/Lib/distutils/command/sdist.py Message-ID: <20080221142339.1B65D1E4014@bag.python.org> Author: andrew.kuchling Date: Thu Feb 21 15:23:38 2008 New Revision: 60918 Modified: python/trunk/Lib/distutils/command/sdist.py Log: Close manifest file. This change doesn't make any difference to CPython, but is a necessary fix for Jython. Modified: python/trunk/Lib/distutils/command/sdist.py ============================================================================== --- python/trunk/Lib/distutils/command/sdist.py (original) +++ python/trunk/Lib/distutils/command/sdist.py Thu Feb 21 15:23:38 2008 @@ -383,6 +383,7 @@ if line[-1] == '\n': line = line[0:-1] self.filelist.append(line) + manifest.close() # read_manifest () From nnorwitz at gmail.com Thu Feb 21 16:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 10:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221152003.GA23384@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Thu Feb 21 15:56:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 14:56:16 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080221145616.301771E402B@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/944 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_urllibnet sincerely, -The Buildbot From buildbot at python.org Thu Feb 21 16:35:22 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 15:35:22 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080221153523.30EE21E4014@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2565 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_smtplib test_socket sincerely, -The Buildbot From nnorwitz at gmail.com Thu Feb 21 17:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 11:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221162003.GA23674@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 17:21:15 2008 From: python-checkins at python.org (skip.montanaro) Date: Thu, 21 Feb 2008 17:21:15 +0100 (CET) Subject: [Python-checkins] r60919 - peps/trunk/pep-0008.txt Message-ID: <20080221162115.C59541E4021@bag.python.org> Author: skip.montanaro Date: Thu Feb 21 17:21:15 2008 New Revision: 60919 Modified: peps/trunk/pep-0008.txt Log: Replace "looks ugly" with a hopefully more concrete explanation of why line wrapping is bad - it disrupts the visual structure of the code. Modified: peps/trunk/pep-0008.txt ============================================================================== --- peps/trunk/pep-0008.txt (original) +++ peps/trunk/pep-0008.txt Thu Feb 21 17:21:15 2008 @@ -77,10 +77,11 @@ There are still many devices around that are limited to 80 character lines; plus, limiting windows to 80 characters makes it possible to have - several windows side-by-side. The default wrapping on such devices looks - ugly. Therefore, please limit all lines to a maximum of 79 characters. - For flowing long blocks of text (docstrings or comments), limiting the - length to 72 characters is recommended. + several windows side-by-side. The default wrapping on such devices + disrupts the visual structure of the code, making it more difficult to + understand. Therefore, please limit all lines to a maximum of 79 + characters. For flowing long blocks of text (docstrings or comments), + limiting the length to 72 characters is recommended. The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. If necessary, you From python-checkins at python.org Thu Feb 21 17:50:43 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 17:50:43 +0100 (CET) Subject: [Python-checkins] r60920 - python/branches/libffi3-branch Message-ID: <20080221165043.EFFE21E4015@bag.python.org> Author: thomas.heller Date: Thu Feb 21 17:50:43 2008 New Revision: 60920 Added: python/branches/libffi3-branch/ - copied from r60919, python/trunk/ Log: Branch for ctypes libffi3 sync From nnorwitz at gmail.com Thu Feb 21 18:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 12:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221172002.GA23957@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 18:46:16 2008 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 21 Feb 2008 18:46:16 +0100 (CET) Subject: [Python-checkins] r60921 - python/trunk/Misc/NEWS Message-ID: <20080221174616.A02E41E4032@bag.python.org> Author: guido.van.rossum Date: Thu Feb 21 18:46:16 2008 New Revision: 60921 Modified: python/trunk/Misc/NEWS Log: Remove news about float repr() -- issue 1580 is still in limbo. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 21 18:46:16 2008 @@ -139,10 +139,6 @@ - Issue #1620: New property decorator syntax was modifying the decorator in place instead of creating a new decorator object. -- Issue #1580: New free format floating point representation based on - "Floating-Point Printer Sample Code", by Robert G. Burger. For example - repr(11./5) now returns '2.2' instead of '2.2000000000000002'. - - Issue #1538: Avoid copying string in split/rsplit if the split char is not found. From python-checkins at python.org Thu Feb 21 18:53:35 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 18:53:35 +0100 (CET) Subject: [Python-checkins] r60922 - python/branches/libffi3-branch Message-ID: <20080221175335.E34BC1E4018@bag.python.org> Author: thomas.heller Date: Thu Feb 21 18:53:35 2008 New Revision: 60922 Modified: python/branches/libffi3-branch/ (props changed) Log: Initialized merge tracking via "svnmerge" with revisions "1-60919" from svn+ssh://pythondev at svn.python.org/python/trunk From nnorwitz at gmail.com Thu Feb 21 19:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 13:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221182003.GA24158@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Thu Feb 21 19:18:38 2008 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 21 Feb 2008 19:18:38 +0100 (CET) Subject: [Python-checkins] r60923 - in python/trunk: Lib/UserDict.py Lib/copy_reg.py Lib/distutils/archive_util.py Lib/distutils/ccompiler.py Lib/distutils/command/build_ext.py Lib/distutils/command/install.py Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/core.py Lib/distutils/dir_util.py Lib/distutils/dist.py Lib/distutils/fancy_getopt.py Lib/distutils/msvccompiler.py Lib/distutils/sysconfig.py Lib/distutils/text_file.py Lib/distutils/util.py Misc/NEWS Message-ID: <20080221181838.7DCD11E4010@bag.python.org> Author: guido.van.rossum Date: Thu Feb 21 19:18:37 2008 New Revision: 60923 Modified: python/trunk/Lib/UserDict.py python/trunk/Lib/copy_reg.py python/trunk/Lib/distutils/archive_util.py python/trunk/Lib/distutils/ccompiler.py python/trunk/Lib/distutils/command/build_ext.py python/trunk/Lib/distutils/command/install.py python/trunk/Lib/distutils/command/register.py python/trunk/Lib/distutils/command/upload.py python/trunk/Lib/distutils/core.py python/trunk/Lib/distutils/dir_util.py python/trunk/Lib/distutils/dist.py python/trunk/Lib/distutils/fancy_getopt.py python/trunk/Lib/distutils/msvccompiler.py python/trunk/Lib/distutils/sysconfig.py python/trunk/Lib/distutils/text_file.py python/trunk/Lib/distutils/util.py python/trunk/Misc/NEWS Log: Removed uses of dict.has_key() from distutils, and uses of callable() from copy_reg.py, so the interpreter now starts up without warnings when '-3' is given. More work like this needs to be done in the rest of the stdlib. Modified: python/trunk/Lib/UserDict.py ============================================================================== --- python/trunk/Lib/UserDict.py (original) +++ python/trunk/Lib/UserDict.py Thu Feb 21 19:18:37 2008 @@ -55,7 +55,7 @@ if len(kwargs): self.data.update(kwargs) def get(self, key, failobj=None): - if not self.has_key(key): + if key not in self: return failobj return self[key] def setdefault(self, key, failobj=None): Modified: python/trunk/Lib/copy_reg.py ============================================================================== --- python/trunk/Lib/copy_reg.py (original) +++ python/trunk/Lib/copy_reg.py Thu Feb 21 19:18:37 2008 @@ -15,7 +15,7 @@ if type(ob_type) is _ClassType: raise TypeError("copy_reg is not intended for use with classes") - if not callable(pickle_function): + if not hasattr(pickle_function, '__call__'): raise TypeError("reduction functions must be callable") dispatch_table[ob_type] = pickle_function @@ -25,7 +25,7 @@ constructor(constructor_ob) def constructor(object): - if not callable(object): + if not hasattr(object, '__call__'): raise TypeError("constructors must be callable") # Example: provide pickling support for complex numbers. Modified: python/trunk/Lib/distutils/archive_util.py ============================================================================== --- python/trunk/Lib/distutils/archive_util.py (original) +++ python/trunk/Lib/distutils/archive_util.py Thu Feb 21 19:18:37 2008 @@ -124,7 +124,7 @@ def check_archive_formats (formats): for format in formats: - if not ARCHIVE_FORMATS.has_key(format): + if format not in ARCHIVE_FORMATS: return format else: return None Modified: python/trunk/Lib/distutils/ccompiler.py ============================================================================== --- python/trunk/Lib/distutils/ccompiler.py (original) +++ python/trunk/Lib/distutils/ccompiler.py Thu Feb 21 19:18:37 2008 @@ -159,7 +159,7 @@ # basically the same things with Unix C compilers. for key in args.keys(): - if not self.executables.has_key(key): + if key not in self.executables: raise ValueError, \ "unknown executable '%s' for class %s" % \ (key, self.__class__.__name__) Modified: python/trunk/Lib/distutils/command/build_ext.py ============================================================================== --- python/trunk/Lib/distutils/command/build_ext.py (original) +++ python/trunk/Lib/distutils/command/build_ext.py Thu Feb 21 19:18:37 2008 @@ -362,7 +362,7 @@ # Medium-easy stuff: same syntax/semantics, different names. ext.runtime_library_dirs = build_info.get('rpath') - if build_info.has_key('def_file'): + if 'def_file' in build_info: log.warn("'def_file' element of build info dict " "no longer supported") Modified: python/trunk/Lib/distutils/command/install.py ============================================================================== --- python/trunk/Lib/distutils/command/install.py (original) +++ python/trunk/Lib/distutils/command/install.py Thu Feb 21 19:18:37 2008 @@ -352,7 +352,7 @@ opt_name = opt[0] if opt_name[-1] == "=": opt_name = opt_name[0:-1] - if self.negative_opt.has_key(opt_name): + if opt_name in self.negative_opt: opt_name = string.translate(self.negative_opt[opt_name], longopt_xlate) val = not getattr(self, opt_name) Modified: python/trunk/Lib/distutils/command/register.py ============================================================================== --- python/trunk/Lib/distutils/command/register.py (original) +++ python/trunk/Lib/distutils/command/register.py Thu Feb 21 19:18:37 2008 @@ -120,7 +120,7 @@ # see if we can short-cut and get the username/password from the # config config = None - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): print 'Using PyPI login from %s'%rc @@ -163,7 +163,7 @@ print 'Server response (%s): %s'%(code, result) # possibly save the login - if os.environ.has_key('HOME') and config is None and code == 200: + if 'HOME' in os.environ and config is None and code == 200: rc = os.path.join(os.environ['HOME'], '.pypirc') print 'I can store your PyPI login so future submissions will be faster.' print '(the login will be stored in %s)'%rc Modified: python/trunk/Lib/distutils/command/upload.py ============================================================================== --- python/trunk/Lib/distutils/command/upload.py (original) +++ python/trunk/Lib/distutils/command/upload.py Thu Feb 21 19:18:37 2008 @@ -46,7 +46,7 @@ raise DistutilsOptionError( "Must use --sign for --identity to have meaning" ) - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): self.announce('Using PyPI login from %s' % rc) Modified: python/trunk/Lib/distutils/core.py ============================================================================== --- python/trunk/Lib/distutils/core.py (original) +++ python/trunk/Lib/distutils/core.py Thu Feb 21 19:18:37 2008 @@ -101,9 +101,9 @@ else: klass = Distribution - if not attrs.has_key('script_name'): + if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) - if not attrs.has_key('script_args'): + if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments @@ -111,7 +111,7 @@ try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError, msg: - if attrs.has_key('name'): + if 'name' in attrs: raise SystemExit, "error in %s setup command: %s" % \ (attrs['name'], msg) else: Modified: python/trunk/Lib/distutils/dir_util.py ============================================================================== --- python/trunk/Lib/distutils/dir_util.py (original) +++ python/trunk/Lib/distutils/dir_util.py Thu Feb 21 19:18:37 2008 @@ -207,7 +207,7 @@ apply(cmd[0], (cmd[1],)) # remove dir from cache if it's already there abspath = os.path.abspath(cmd[1]) - if _path_created.has_key(abspath): + if abspath in _path_created: del _path_created[abspath] except (IOError, OSError), exc: log.warn(grok_environment_error( Modified: python/trunk/Lib/distutils/dist.py ============================================================================== --- python/trunk/Lib/distutils/dist.py (original) +++ python/trunk/Lib/distutils/dist.py Thu Feb 21 19:18:37 2008 @@ -239,7 +239,7 @@ for (opt, val) in cmd_options.items(): opt_dict[opt] = ("setup script", val) - if attrs.has_key('licence'): + if 'licence' in attrs: attrs['license'] = attrs['licence'] del attrs['licence'] msg = "'licence' distribution option is deprecated; use 'license'" @@ -343,7 +343,7 @@ user_filename = "pydistutils.cfg" # And look for the user config file - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: user_file = os.path.join(os.environ.get('HOME'), user_filename) if os.path.isfile(user_file): files.append(user_file) @@ -388,7 +388,7 @@ # If there was a "global" section in the config file, use it # to set Distribution options. - if self.command_options.has_key('global'): + if 'global' in self.command_options: for (opt, (src, val)) in self.command_options['global'].items(): alias = self.negative_opt.get(opt) try: @@ -907,7 +907,7 @@ try: is_string = type(value) is StringType - if neg_opt.has_key(option) and is_string: + if option in neg_opt and is_string: setattr(command_obj, neg_opt[option], not strtobool(value)) elif option in bool_opts and is_string: setattr(command_obj, option, strtobool(value)) Modified: python/trunk/Lib/distutils/fancy_getopt.py ============================================================================== --- python/trunk/Lib/distutils/fancy_getopt.py (original) +++ python/trunk/Lib/distutils/fancy_getopt.py Thu Feb 21 19:18:37 2008 @@ -97,7 +97,7 @@ self._build_index() def add_option (self, long_option, short_option=None, help_string=None): - if self.option_index.has_key(long_option): + if long_option in self.option_index: raise DistutilsGetoptError, \ "option conflict: already an option '%s'" % long_option else: @@ -109,7 +109,7 @@ def has_option (self, long_option): """Return true if the option table for this parser has an option with long name 'long_option'.""" - return self.option_index.has_key(long_option) + return long_option in self.option_index def get_attr_name (self, long_option): """Translate long option name 'long_option' to the form it @@ -121,11 +121,11 @@ def _check_alias_dict (self, aliases, what): assert type(aliases) is DictionaryType for (alias, opt) in aliases.items(): - if not self.option_index.has_key(alias): + if alias not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "option '%s' not defined") % (what, alias, alias) - if not self.option_index.has_key(opt): + if opt not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "aliased option '%s' not defined") % (what, alias, opt) Modified: python/trunk/Lib/distutils/msvccompiler.py ============================================================================== --- python/trunk/Lib/distutils/msvccompiler.py (original) +++ python/trunk/Lib/distutils/msvccompiler.py Thu Feb 21 19:18:37 2008 @@ -252,7 +252,7 @@ def initialize(self): self.__paths = [] - if os.environ.has_key("DISTUTILS_USE_SDK") and os.environ.has_key("MSSdk") and self.find_exe("cl.exe"): + if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" Modified: python/trunk/Lib/distutils/sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/sysconfig.py (original) +++ python/trunk/Lib/distutils/sysconfig.py Thu Feb 21 19:18:37 2008 @@ -161,22 +161,22 @@ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO') - if os.environ.has_key('CC'): + if 'CC' in os.environ: cc = os.environ['CC'] - if os.environ.has_key('CXX'): + if 'CXX' in os.environ: cxx = os.environ['CXX'] - if os.environ.has_key('LDSHARED'): + if 'LDSHARED' in os.environ: ldshared = os.environ['LDSHARED'] - if os.environ.has_key('CPP'): + if 'CPP' in os.environ: cpp = os.environ['CPP'] else: cpp = cc + " -E" # not always - if os.environ.has_key('LDFLAGS'): + if 'LDFLAGS' in os.environ: ldshared = ldshared + ' ' + os.environ['LDFLAGS'] - if os.environ.has_key('CFLAGS'): + if 'CFLAGS' in os.environ: cflags = opt + ' ' + os.environ['CFLAGS'] ldshared = ldshared + ' ' + os.environ['CFLAGS'] - if os.environ.has_key('CPPFLAGS'): + if 'CPPFLAGS' in os.environ: cpp = cpp + ' ' + os.environ['CPPFLAGS'] cflags = cflags + ' ' + os.environ['CPPFLAGS'] ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] @@ -291,12 +291,12 @@ if m: n = m.group(1) found = True - if done.has_key(n): + if n in done: item = str(done[n]) - elif notdone.has_key(n): + elif n in notdone: # get it on a subsequent round found = False - elif os.environ.has_key(n): + elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] else: @@ -380,7 +380,7 @@ # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so # it needs to be compatible. # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and g.has_key('MACOSX_DEPLOYMENT_TARGET'): + if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g: cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') if cur_target == '': Modified: python/trunk/Lib/distutils/text_file.py ============================================================================== --- python/trunk/Lib/distutils/text_file.py (original) +++ python/trunk/Lib/distutils/text_file.py Thu Feb 21 19:18:37 2008 @@ -89,7 +89,7 @@ # set values for all options -- either from client option hash # or fallback to default_options for opt in self.default_options.keys(): - if options.has_key (opt): + if opt in options: setattr (self, opt, options[opt]) else: @@ -97,7 +97,7 @@ # sanity check client option hash for opt in options.keys(): - if not self.default_options.has_key (opt): + if opt not in self.default_options: raise KeyError, "invalid TextFile option '%s'" % opt if file is None: Modified: python/trunk/Lib/distutils/util.py ============================================================================== --- python/trunk/Lib/distutils/util.py (original) +++ python/trunk/Lib/distutils/util.py Thu Feb 21 19:18:37 2008 @@ -219,11 +219,11 @@ if _environ_checked: return - if os.name == 'posix' and not os.environ.has_key('HOME'): + if os.name == 'posix' and 'HOME' not in os.environ: import pwd os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] - if not os.environ.has_key('PLAT'): + if 'PLAT' not in os.environ: os.environ['PLAT'] = get_platform() _environ_checked = 1 @@ -241,7 +241,7 @@ check_environ() def _subst (match, local_vars=local_vars): var_name = match.group(1) - if local_vars.has_key(var_name): + if var_name in local_vars: return str(local_vars[var_name]) else: return os.environ[var_name] Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 21 19:18:37 2008 @@ -423,6 +423,11 @@ Library ------- +- Removed uses of dict.has_key() from distutils, and uses of + callable() from copy_reg.py, so the interpreter now starts up + without warnings when '-3' is given. More work like this needs to + be done in the rest of the stdlib. + - Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. - #1224: Fixed bad url parsing when path begins with double slash. From python-checkins at python.org Thu Feb 21 19:28:50 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 19:28:50 +0100 (CET) Subject: [Python-checkins] r60924 - python/trunk/Modules/_ctypes/libffi/configure python/trunk/Modules/_ctypes/libffi/configure.ac python/trunk/Modules/_ctypes/libffi/fficonfig.h.in Message-ID: <20080221182850.3B5B51E4020@bag.python.org> Author: thomas.heller Date: Thu Feb 21 19:28:48 2008 New Revision: 60924 Modified: python/trunk/Modules/_ctypes/libffi/configure python/trunk/Modules/_ctypes/libffi/configure.ac python/trunk/Modules/_ctypes/libffi/fficonfig.h.in Log: configure.ac: Remove the configure check for _Bool, it is already done in the top-level Python configure script. configure, fficonfig.h.in: regenerated. Modified: python/trunk/Modules/_ctypes/libffi/configure ============================================================================== --- python/trunk/Modules/_ctypes/libffi/configure (original) +++ python/trunk/Modules/_ctypes/libffi/configure Thu Feb 21 19:28:48 2008 @@ -1,27 +1,56 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for libffi 2.1. +# Generated by GNU Autoconf 2.61 for libffi 2.1. # # Report bugs to . # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -31,8 +60,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -46,18 +110,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -65,157 +130,388 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf at gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -224,7 +520,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -233,39 +550,27 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' @@ -276,42 +581,112 @@ # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC ac_ct_CC EXEEXT OBJEXT CFLAGS CPP CPPFLAGS EGREP ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR MKTARGET LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CPP +GREP +EGREP +ALLOCA +HAVE_LONG_DOUBLE +TARGET +TARGETDIR +MKTARGET +LIBOBJS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CPP +CPPFLAGS' + # Initialize some variables set by options. ac_init_help= @@ -338,34 +713,48 @@ # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -387,33 +776,45 @@ --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -440,6 +841,12 @@ -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -464,13 +871,16 @@ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -535,6 +945,16 @@ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -587,24 +1007,20 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -635,8 +1051,7 @@ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -656,27 +1071,19 @@ { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -703,64 +1110,78 @@ test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS - -# + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# # Report the --help message. # if test "$ac_init_help" = "long"; then @@ -787,9 +1208,6 @@ -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -807,15 +1225,22 @@ --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libffi] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -838,8 +1263,9 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -847,120 +1273,86 @@ Report bugs to . _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libffi configure 2.1 -generated by GNU Autoconf 2.59 +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -979,7 +1371,7 @@ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -993,6 +1385,7 @@ test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1014,7 +1407,6 @@ ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1025,7 +1417,7 @@ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1047,9 +1439,7 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1060,8 +1450,8 @@ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1074,20 +1464,34 @@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1098,22 +1502,28 @@ echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1125,26 +1535,24 @@ ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1175,14 +1583,17 @@ # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1198,8 +1609,8 @@ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1211,12 +1622,11 @@ # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1241,8 +1651,7 @@ # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1259,12 +1668,6 @@ { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - @@ -1289,110 +1692,165 @@ +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_headers="$ac_config_headers fficonfig.h" +ac_config_headers="$ac_config_headers fficonfig.h" ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -1413,8 +1871,8 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1427,32 +1885,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1465,36 +1925,51 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1507,74 +1982,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1588,7 +2023,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -1599,6 +2034,7 @@ fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -1616,22 +2052,23 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1644,36 +2081,38 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1686,29 +2125,45 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi @@ -1721,21 +2176,35 @@ { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1760,47 +2229,77 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -1812,19 +2311,21 @@ fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1843,22 +2344,27 @@ fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1869,9 +2375,8 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1885,14 +2390,14 @@ fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1912,14 +2417,20 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -1937,12 +2448,12 @@ rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1965,49 +2476,49 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2023,37 +2534,118 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2069,12 +2661,12 @@ CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2108,12 +2700,17 @@ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2128,201 +2725,57 @@ return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2339,8 +2792,8 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2374,24 +2827,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2400,9 +2851,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2412,24 +2864,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2440,6 +2890,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2457,8 +2908,8 @@ else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -2481,24 +2932,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2507,9 +2956,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2519,24 +2969,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2547,6 +2995,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2569,23 +3018,170 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2609,34 +3205,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -2692,6 +3285,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -2711,18 +3305,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2735,12 +3338,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -2763,9 +3368,9 @@ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -2779,37 +3384,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -2824,18 +3427,19 @@ for ac_header in sys/mman.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2846,40 +3450,37 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2888,24 +3489,22 @@ /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -2913,9 +3512,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -2939,25 +3539,24 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -2973,9 +3572,9 @@ for ac_func in mmap do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3001,67 +3600,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3072,17 +3664,17 @@ if test "${ac_cv_header_sys_mman_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 -echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 +echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3093,40 +3685,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 -echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 +echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3135,24 +3724,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -3160,9 +3747,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -3186,25 +3774,23 @@ echo "$as_me: WARNING: sys/mman.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_mman_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } fi if test $ac_cv_header_sys_mman_h = yes; then @@ -3214,8 +3800,8 @@ fi -echo "$as_me:$LINENO: checking for mmap" >&5 -echo $ECHO_N "checking for mmap... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for mmap" >&5 +echo $ECHO_N "checking for mmap... $ECHO_C" >&6; } if test "${ac_cv_func_mmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3242,67 +3828,59 @@ #undef mmap -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char mmap (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_mmap) || defined (__stub___mmap) +#if defined __stub_mmap || defined __stub___mmap choke me -#else -char (*f) () = mmap; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != mmap; +return mmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_mmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_mmap=no + ac_cv_func_mmap=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 -echo "${ECHO_T}$ac_cv_func_mmap" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 +echo "${ECHO_T}$ac_cv_func_mmap" >&6; } if test $ac_cv_func_mmap = yes; then libffi_func_mmap=yes else @@ -3315,8 +3893,8 @@ ac_cv_func_mmap_dev_zero=no ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 -echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 +echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_file+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3332,10 +3910,10 @@ ac_cv_func_mmap_file=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_file" >&6 - echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 -echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_file" >&6; } + { echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 +echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_dev_zero+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3356,12 +3934,12 @@ ac_cv_func_mmap_dev_zero=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6; } # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 -echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 +echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6; } if test "${ac_cv_decl_map_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3388,43 +3966,40 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_decl_map_anon=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_decl_map_anon=no + ac_cv_decl_map_anon=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 -echo "${ECHO_T}$ac_cv_decl_map_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 +echo "${ECHO_T}$ac_cv_decl_map_anon" >&6; } if test $ac_cv_decl_map_anon = no; then ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 -echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 +echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3440,8 +4015,8 @@ ac_cv_func_mmap_anon=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6; } fi fi @@ -3536,8 +4111,8 @@ *) ;; esac -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3561,34 +4136,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3644,6 +4216,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -3663,18 +4236,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3687,12 +4269,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -3705,9 +4289,9 @@ for ac_func in memcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3733,67 +4317,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3804,8 +4381,8 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3820,43 +4397,42 @@ main () { char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no + ac_cv_working_alloca_h=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -3865,8 +4441,8 @@ fi -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3883,7 +4459,7 @@ # include # define alloca _alloca # else -# if HAVE_ALLOCA_H +# ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -3901,43 +4477,42 @@ main () { char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no + ac_cv_func_alloca_works=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then @@ -3951,15 +4526,15 @@ # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. -ALLOCA=alloca.$ac_objext +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3969,7 +4544,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined(CRAY) && ! defined(CRAY2) +#if defined CRAY && ! defined CRAY2 webecray #else wenotbecray @@ -3985,14 +4560,14 @@ rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4018,67 +4593,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -4091,8 +4659,8 @@ done fi -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4105,6 +4673,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +$ac_includes_default int find_stack_direction () { @@ -4122,17 +4691,26 @@ int main () { - exit (find_stack_direction () < 0); + return find_stack_direction () < 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4145,11 +4723,13 @@ ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction @@ -4159,8 +4739,8 @@ fi -echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6; } if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4171,60 +4751,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef double ac__type_new_; int main () { -if ((double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_double=no + ac_cv_type_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6; } -echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4234,10 +4811,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4245,26 +4823,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4274,10 +4848,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4285,55 +4860,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4341,26 +4914,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4370,10 +4939,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4381,49 +4951,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4434,10 +5003,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4445,49 +5015,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +'') if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4495,8 +5061,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (double)); } -unsigned long ulongval () { return (long) (sizeof (double)); } + typedef double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4505,35 +5072,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4544,29 +5120,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -echo "$as_me:$LINENO: checking for long double" >&5 -echo $ECHO_N "checking for long double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6; } if test "${ac_cv_type_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4577,60 +5156,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef long double ac__type_new_; int main () { -if ((long double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (long double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_long_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_long_double=no + ac_cv_type_long_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 -echo "${ECHO_T}$ac_cv_type_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6; } -echo "$as_me:$LINENO: checking size of long double" >&5 -echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_long_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4640,10 +5216,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4651,26 +5228,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4680,10 +5253,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4691,55 +5265,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4747,26 +5319,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4776,10 +5344,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4787,49 +5356,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4840,10 +5408,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4851,49 +5420,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +'') if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4901,8 +5466,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (long double)); } -unsigned long ulongval () { return (long) (sizeof (long double)); } + typedef long double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4911,35 +5477,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (long double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4950,22 +5525,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF @@ -4986,171 +5564,163 @@ fi -echo "$as_me:$LINENO: checking for _Bool support" >&5 -echo $ECHO_N "checking for _Bool support... $ECHO_C" >&6 -have_c99_bool=no +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +#include +#include int main () { -_Bool x; x = (_Bool)0; +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) + bogus endian macros +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_C99_BOOL 1 -_ACEOF - - have_c99_bool=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_c99_bool" >&5 -echo "${ECHO_T}$have_c99_bool" >&6 -if test "$have_c99_bool" = yes ; then -echo "$as_me:$LINENO: checking for _Bool" >&5 -echo $ECHO_N "checking for _Bool... $ECHO_C" >&6 -if test "${ac_cv_type__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +#include +#include + int main () { -if ((_Bool *) 0) - return 0; -if (sizeof (_Bool)) - return 0; +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type__Bool=yes + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type__Bool=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_bigendian=no fi -echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 -echo "${ECHO_T}$ac_cv_type__Bool" >&6 -echo "$as_me:$LINENO: checking size of _Bool" >&5 -echo $ECHO_N "checking size of _Bool... $ECHO_C" >&6 -if test "${ac_cv_sizeof__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - if test "$ac_cv_type__Bool" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= 0)]; -test_array [0] = 0 - + _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5160,652 +5730,200 @@ int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_hi=$ac_mid; break + ac_cv_c_bigendian=no else - echo "$as_me: failed program was:" >&5 + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` +( exit $ac_status ) +ac_cv_c_bigendian=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + + + + +if test x$TARGET = xSPARC; then + { echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 +echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6; } +if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" + CFLAGS="$CFLAGS -fpic" + LDFLAGS="$LDFLAGS -shared" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) < 0)]; -test_array [0] = 0 ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + libffi_cv_as_sparc_ua_pcrel=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + libffi_cv_as_sparc_ua_pcrel=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + LDFLAGS="$save_LDFLAGS" +fi +{ echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 +echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6; } + if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_AS_SPARC_UA_PCREL 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 +echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6; } +if test "${libffi_cv_as_register_pseudo_op+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + libffi_cv_as_register_pseudo_op=unknown + # Check if we have .register + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".register %g2, #scratch"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= $ac_mid)]; -test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + libffi_cv_as_register_pseudo_op=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + libffi_cv_as_register_pseudo_op=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof__Bool=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (_Bool)); } -unsigned long ulongval () { return (long) (sizeof (_Bool)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (_Bool))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof__Bool=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof__Bool=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof__Bool" >&5 -echo "${ECHO_T}$ac_cv_sizeof__Bool" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF__BOOL $ac_cv_sizeof__Bool -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_bigendian=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) - -cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac - - - - - -if test x$TARGET = xSPARC; then - echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 -echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6 -if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_sparc_ua_pcrel=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_sparc_ua_pcrel=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 -echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6 - if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_AS_SPARC_UA_PCREL 1 -_ACEOF - - fi - - echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 -echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6 -if test "${libffi_cv_as_register_pseudo_op+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - libffi_cv_as_register_pseudo_op=unknown - # Check if we have .register - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".register %g2, #scratch"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_register_pseudo_op=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_register_pseudo_op=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 -echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 +echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6; } if test "x$libffi_cv_as_register_pseudo_op" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5815,8 +5933,8 @@ fi fi -echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 -echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 +echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6; } if test "${libffi_cv_ro_eh_frame+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5834,8 +5952,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 -echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 +echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6; } if test "x$libffi_cv_ro_eh_frame" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5855,8 +5973,8 @@ fi -echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 -echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 +echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6; } if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5876,8 +5994,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 -echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 +echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6; } if test $libffi_cv_hidden_visibility_attribute = yes; then cat >>confdefs.h <<\_ACEOF @@ -5901,9 +6019,9 @@ _ACEOF - ac_config_commands="$ac_config_commands include" +ac_config_commands="$ac_config_commands include" - ac_config_commands="$ac_config_commands src" +ac_config_commands="$ac_config_commands src" TARGETINCDIR=$TARGETDIR @@ -5914,12 +6032,12 @@ esac - ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" +ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" - ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" +ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" - ac_config_files="$ac_config_files include/ffi.h fficonfig.py" +ac_config_files="$ac_config_files include/ffi.h fficonfig.py" cat >confcache <<\_ACEOF @@ -5940,39 +6058,58 @@ # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -5981,32 +6118,18 @@ # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -6037,17 +6160,45 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -6057,8 +6208,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -6072,18 +6258,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -6091,159 +6278,120 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi +# CDPATH. +$as_unset CDPATH - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -6252,7 +6400,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -6261,31 +6430,14 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6293,30 +6445,21 @@ CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -6324,7 +6467,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -6346,18 +6489,20 @@ $config_commands Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libffi config.status 2.1 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir + +ac_pwd='$ac_pwd' +srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -6368,39 +6513,24 @@ do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -6410,18 +6540,24 @@ $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -6437,41 +6573,53 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS section. +# INIT-COMMANDS # - TARGETDIR="$TARGETDIR" _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "include/ffi.h" ) CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "fficonfig.py" ) CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; - "include/ffitarget.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; - "include/ffi_common.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; - "include" ) CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; - "src" ) CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "fficonfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + case $ac_config_target in + "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; + "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; + "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; + "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; + "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; + "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -6484,308 +6632,376 @@ fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s, at SHELL@,$SHELL,;t t -s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t -s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t -s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s, at exec_prefix@,$exec_prefix,;t t -s, at prefix@,$prefix,;t t -s, at program_transform_name@,$program_transform_name,;t t -s, at bindir@,$bindir,;t t -s, at sbindir@,$sbindir,;t t -s, at libexecdir@,$libexecdir,;t t -s, at datadir@,$datadir,;t t -s, at sysconfdir@,$sysconfdir,;t t -s, at sharedstatedir@,$sharedstatedir,;t t -s, at localstatedir@,$localstatedir,;t t -s, at libdir@,$libdir,;t t -s, at includedir@,$includedir,;t t -s, at oldincludedir@,$oldincludedir,;t t -s, at infodir@,$infodir,;t t -s, at mandir@,$mandir,;t t -s, at build_alias@,$build_alias,;t t -s, at host_alias@,$host_alias,;t t -s, at target_alias@,$target_alias,;t t -s, at DEFS@,$DEFS,;t t -s, at ECHO_C@,$ECHO_C,;t t -s, at ECHO_N@,$ECHO_N,;t t -s, at ECHO_T@,$ECHO_T,;t t -s, at LIBS@,$LIBS,;t t -s, at build@,$build,;t t -s, at build_cpu@,$build_cpu,;t t -s, at build_vendor@,$build_vendor,;t t -s, at build_os@,$build_os,;t t -s, at host@,$host,;t t -s, at host_cpu@,$host_cpu,;t t -s, at host_vendor@,$host_vendor,;t t -s, at host_os@,$host_os,;t t -s, at target@,$target,;t t -s, at target_cpu@,$target_cpu,;t t -s, at target_vendor@,$target_vendor,;t t -s, at target_os@,$target_os,;t t -s, at CC@,$CC,;t t -s, at ac_ct_CC@,$ac_ct_CC,;t t -s, at EXEEXT@,$EXEEXT,;t t -s, at OBJEXT@,$OBJEXT,;t t -s, at CFLAGS@,$CFLAGS,;t t -s, at CPP@,$CPP,;t t -s, at CPPFLAGS@,$CPPFLAGS,;t t -s, at EGREP@,$EGREP,;t t -s, at ALLOCA@,$ALLOCA,;t t -s, at HAVE_LONG_DOUBLE@,$HAVE_LONG_DOUBLE,;t t -s, at TARGET@,$TARGET,;t t -s, at TARGETDIR@,$TARGETDIR,;t t -s, at MKTARGET@,$MKTARGET,;t t -s, at LIBOBJS@,$LIBOBJS,;t t -s, at LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +target!$target$ac_delim +target_cpu!$target_cpu$ac_delim +target_vendor!$target_vendor$ac_delim +target_os!$target_os$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +ALLOCA!$ALLOCA$ac_delim +HAVE_LONG_DOUBLE!$HAVE_LONG_DOUBLE$ac_delim +TARGET!$TARGET$ac_delim +TARGETDIR!$TARGETDIR$ac_delim +MKTARGET!$MKTARGET$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -fi # test -n "$CONFIG_FILES" +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # 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. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + case $ac_mode in + :F) + # + # CONFIG_FILE + # - # 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. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +_ACEOF - 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 +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -6793,511 +7009,173 @@ cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s, at configure_input@,$configure_input,;t t -s, at srcdir@,$ac_srcdir,;t t -s, at abs_srcdir@,$ac_abs_srcdir,;t t -s, at top_srcdir@,$ac_top_srcdir,;t t -s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s, at builddir@,$ac_builddir,;t t -s, at abs_builddir@,$ac_abs_builddir,;t t -s, at top_builddir@,$ac_top_builddir,;t t -s, at abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines -# This sed command replaces #undef with comments. This is necessary, for +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null +while : do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs +rm -f conftest.defines conftest.tail +echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF - # 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. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - rm -f $ac_file - mv $tmp/config.h $ac_file + mv "$tmp/config.h" $ac_file fi else - cat $tmp/config.h - rm -f $tmp/config.h + echo "/* $configure_input */" + cat "$ac_result" fi -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_LINKS section. -# - -for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + rm -f "$tmp/out12" + ;; + :L) + # + # CONFIG_LINK + # - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_file" >&6;} - if test ! -r $srcdir/$ac_source; then + if test ! -r "$srcdir/$ac_source"; then { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} { (exit 1); exit 1; }; } fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dest_dir";; -*) - case "$ac_dest_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dest_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dest_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - + rm -f "$ac_file" + # Try a relative symlink, then a hard link, then a copy. case $srcdir in [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$srcdir/$ac_source ;; esac - - # Try a symlink, then a hard link, then a copy. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest 2>/dev/null || - cp -p $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&2;} + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$srcdir/$ac_source" "$ac_file" 2>/dev/null || + cp -p "$srcdir/$ac_source" "$ac_file" || + { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&2;} { (exit 1); exit 1; }; } -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + ;; + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - include ) test -d include || mkdir include ;; - src ) + case $ac_file$ac_mode in + "include":C) test -d include || mkdir include ;; + "src":C) test -d src || mkdir src test -d src/$TARGETDIR || mkdir src/$TARGETDIR ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF Modified: python/trunk/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/trunk/Modules/_ctypes/libffi/configure.ac (original) +++ python/trunk/Modules/_ctypes/libffi/configure.ac Thu Feb 21 19:28:48 2008 @@ -106,17 +106,6 @@ fi AC_SUBST(HAVE_LONG_DOUBLE) -AC_MSG_CHECKING(for _Bool support) -have_c99_bool=no -AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [ - AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.]) - have_c99_bool=yes -]) -AC_MSG_RESULT($have_c99_bool) -if test "$have_c99_bool" = yes ; then -AC_CHECK_SIZEOF(_Bool, 1) -fi - AC_C_BIGENDIAN AH_VERBATIM([WORDS_BIGENDIAN], [ Modified: python/trunk/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/trunk/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/trunk/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 21 19:28:48 2008 @@ -28,9 +28,6 @@ */ #undef HAVE_AS_SPARC_UA_PCREL -/* Define this if you have the type _Bool. */ -#undef HAVE_C99_BOOL - /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -100,18 +97,15 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* The size of a `double', as computed by sizeof. */ +/* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE -/* The size of a `long double', as computed by sizeof. */ +/* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE -/* The size of a `_Bool', as computed by sizeof. */ -#undef SIZEOF__BOOL - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. + automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ From python-checkins at python.org Thu Feb 21 19:52:20 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 19:52:20 +0100 (CET) Subject: [Python-checkins] r60925 - in python/trunk/Lib/ctypes: __init__.py macholib/dyld.py test/test_cfuncs.py test/test_macholib.py test/test_random_things.py Message-ID: <20080221185220.CB2791E4010@bag.python.org> Author: thomas.heller Date: Thu Feb 21 19:52:20 2008 New Revision: 60925 Modified: python/trunk/Lib/ctypes/__init__.py python/trunk/Lib/ctypes/macholib/dyld.py python/trunk/Lib/ctypes/test/test_cfuncs.py python/trunk/Lib/ctypes/test/test_macholib.py python/trunk/Lib/ctypes/test/test_random_things.py Log: Replace 'has_key()' with 'in'. Replace 'raise Error, stuff' with 'raise Error(stuff)'. Modified: python/trunk/Lib/ctypes/__init__.py ============================================================================== --- python/trunk/Lib/ctypes/__init__.py (original) +++ python/trunk/Lib/ctypes/__init__.py Thu Feb 21 19:52:20 2008 @@ -17,7 +17,7 @@ from struct import calcsize as _calcsize if __version__ != _ctypes_version: - raise Exception, ("Version number mismatch", __version__, _ctypes_version) + raise Exception("Version number mismatch", __version__, _ctypes_version) if _os.name in ("nt", "ce"): from _ctypes import FormatError @@ -63,7 +63,7 @@ buftype = c_char * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) def c_buffer(init, size=None): ## "deprecated, use create_string_buffer instead" @@ -298,18 +298,16 @@ buftype = c_wchar * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) POINTER(c_char).from_param = c_char_p.from_param #_SimpleCData.c_char_p_from_param # XXX Deprecated def SetPointerType(pointer, cls): if _pointer_type_cache.get(cls, None) is not None: - raise RuntimeError, \ - "This type already exists in the cache" - if not _pointer_type_cache.has_key(id(pointer)): - raise RuntimeError, \ - "What's this???" + raise RuntimeError("This type already exists in the cache") + if id(pointer) not in _pointer_type_cache: + raise RuntimeError("What's this???") pointer.set_type(cls) _pointer_type_cache[cls] = pointer del _pointer_type_cache[id(pointer)] @@ -358,7 +356,7 @@ def __getattr__(self, name): if name.startswith('__') and name.endswith('__'): - raise AttributeError, name + raise AttributeError(name) func = self.__getitem__(name) setattr(self, name, func) return func Modified: python/trunk/Lib/ctypes/macholib/dyld.py ============================================================================== --- python/trunk/Lib/ctypes/macholib/dyld.py (original) +++ python/trunk/Lib/ctypes/macholib/dyld.py Thu Feb 21 19:52:20 2008 @@ -135,7 +135,7 @@ ), env): if os.path.isfile(path): return path - raise ValueError, "dylib %s could not be found" % (name,) + raise ValueError("dylib %s could not be found" % (name,)) def framework_find(fn, executable_path=None, env=None): """ Modified: python/trunk/Lib/ctypes/test/test_cfuncs.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_cfuncs.py (original) +++ python/trunk/Lib/ctypes/test/test_cfuncs.py Thu Feb 21 19:52:20 2008 @@ -198,7 +198,7 @@ class stdcall_dll(WinDLL): def __getattr__(self, name): if name[:2] == '__' and name[-2:] == '__': - raise AttributeError, name + raise AttributeError(name) func = self._FuncPtr(("s_" + name, self)) setattr(self, name, func) return func Modified: python/trunk/Lib/ctypes/test/test_macholib.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_macholib.py (original) +++ python/trunk/Lib/ctypes/test/test_macholib.py Thu Feb 21 19:52:20 2008 @@ -42,7 +42,7 @@ return os.path.realpath(dyld_find(dylib)) except ValueError: pass - raise ValueError, "%s not found" % (name,) + raise ValueError("%s not found" % (name,)) class MachOTest(unittest.TestCase): if sys.platform == "darwin": Modified: python/trunk/Lib/ctypes/test/test_random_things.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_random_things.py (original) +++ python/trunk/Lib/ctypes/test/test_random_things.py Thu Feb 21 19:52:20 2008 @@ -3,7 +3,7 @@ def callback_func(arg): 42 / arg - raise ValueError, arg + raise ValueError(arg) if sys.platform == "win32": From nnorwitz at gmail.com Thu Feb 21 20:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Feb 2008 14:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080221192003.GA24426@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Thu Feb 21 20:03:15 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 19:03:15 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080221190315.4C44D1E4010@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/357 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: guido.van.rossum BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 20:22:15 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 20:22:15 +0100 (CET) Subject: [Python-checkins] r60926 - in python/branches/libffi3-branch: Lib/UserDict.py Lib/copy_reg.py Lib/ctypes/__init__.py Lib/ctypes/macholib/dyld.py Lib/ctypes/test/test_cfuncs.py Lib/ctypes/test/test_macholib.py Lib/ctypes/test/test_random_things.py Lib/distutils/archive_util.py Lib/distutils/ccompiler.py Lib/distutils/command/build_ext.py Lib/distutils/command/install.py Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/core.py Lib/distutils/dir_util.py Lib/distutils/dist.py Lib/distutils/fancy_getopt.py Lib/distutils/msvccompiler.py Lib/distutils/sysconfig.py Lib/distutils/text_file.py Lib/distutils/util.py Misc/NEWS Modules/_ctypes/libffi/configure Modules/_ctypes/libffi/configure.ac Modules/_ctypes/libffi/fficonfig.h.in Message-ID: <20080221192215.60EDB1E4010@bag.python.org> Author: thomas.heller Date: Thu Feb 21 20:22:13 2008 New Revision: 60926 Modified: python/branches/libffi3-branch/ (props changed) python/branches/libffi3-branch/Lib/UserDict.py python/branches/libffi3-branch/Lib/copy_reg.py python/branches/libffi3-branch/Lib/ctypes/__init__.py python/branches/libffi3-branch/Lib/ctypes/macholib/dyld.py python/branches/libffi3-branch/Lib/ctypes/test/test_cfuncs.py python/branches/libffi3-branch/Lib/ctypes/test/test_macholib.py python/branches/libffi3-branch/Lib/ctypes/test/test_random_things.py python/branches/libffi3-branch/Lib/distutils/archive_util.py python/branches/libffi3-branch/Lib/distutils/ccompiler.py python/branches/libffi3-branch/Lib/distutils/command/build_ext.py python/branches/libffi3-branch/Lib/distutils/command/install.py python/branches/libffi3-branch/Lib/distutils/command/register.py python/branches/libffi3-branch/Lib/distutils/command/upload.py python/branches/libffi3-branch/Lib/distutils/core.py python/branches/libffi3-branch/Lib/distutils/dir_util.py python/branches/libffi3-branch/Lib/distutils/dist.py python/branches/libffi3-branch/Lib/distutils/fancy_getopt.py python/branches/libffi3-branch/Lib/distutils/msvccompiler.py python/branches/libffi3-branch/Lib/distutils/sysconfig.py python/branches/libffi3-branch/Lib/distutils/text_file.py python/branches/libffi3-branch/Lib/distutils/util.py python/branches/libffi3-branch/Misc/NEWS python/branches/libffi3-branch/Modules/_ctypes/libffi/configure python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Log: Merged revisions 60921,60923-60925 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r60921 | guido.van.rossum | 2008-02-21 18:46:16 +0100 (Do, 21 Feb 2008) | 2 lines Remove news about float repr() -- issue 1580 is still in limbo. ........ r60923 | guido.van.rossum | 2008-02-21 19:18:37 +0100 (Do, 21 Feb 2008) | 5 lines Removed uses of dict.has_key() from distutils, and uses of callable() from copy_reg.py, so the interpreter now starts up without warnings when '-3' is given. More work like this needs to be done in the rest of the stdlib. ........ r60924 | thomas.heller | 2008-02-21 19:28:48 +0100 (Do, 21 Feb 2008) | 4 lines configure.ac: Remove the configure check for _Bool, it is already done in the top-level Python configure script. configure, fficonfig.h.in: regenerated. ........ r60925 | thomas.heller | 2008-02-21 19:52:20 +0100 (Do, 21 Feb 2008) | 3 lines Replace 'has_key()' with 'in'. Replace 'raise Error, stuff' with 'raise Error(stuff)'. ........ Modified: python/branches/libffi3-branch/Lib/UserDict.py ============================================================================== --- python/branches/libffi3-branch/Lib/UserDict.py (original) +++ python/branches/libffi3-branch/Lib/UserDict.py Thu Feb 21 20:22:13 2008 @@ -55,7 +55,7 @@ if len(kwargs): self.data.update(kwargs) def get(self, key, failobj=None): - if not self.has_key(key): + if key not in self: return failobj return self[key] def setdefault(self, key, failobj=None): Modified: python/branches/libffi3-branch/Lib/copy_reg.py ============================================================================== --- python/branches/libffi3-branch/Lib/copy_reg.py (original) +++ python/branches/libffi3-branch/Lib/copy_reg.py Thu Feb 21 20:22:13 2008 @@ -15,7 +15,7 @@ if type(ob_type) is _ClassType: raise TypeError("copy_reg is not intended for use with classes") - if not callable(pickle_function): + if not hasattr(pickle_function, '__call__'): raise TypeError("reduction functions must be callable") dispatch_table[ob_type] = pickle_function @@ -25,7 +25,7 @@ constructor(constructor_ob) def constructor(object): - if not callable(object): + if not hasattr(object, '__call__'): raise TypeError("constructors must be callable") # Example: provide pickling support for complex numbers. Modified: python/branches/libffi3-branch/Lib/ctypes/__init__.py ============================================================================== --- python/branches/libffi3-branch/Lib/ctypes/__init__.py (original) +++ python/branches/libffi3-branch/Lib/ctypes/__init__.py Thu Feb 21 20:22:13 2008 @@ -17,7 +17,7 @@ from struct import calcsize as _calcsize if __version__ != _ctypes_version: - raise Exception, ("Version number mismatch", __version__, _ctypes_version) + raise Exception("Version number mismatch", __version__, _ctypes_version) if _os.name in ("nt", "ce"): from _ctypes import FormatError @@ -63,7 +63,7 @@ buftype = c_char * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) def c_buffer(init, size=None): ## "deprecated, use create_string_buffer instead" @@ -298,18 +298,16 @@ buftype = c_wchar * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) POINTER(c_char).from_param = c_char_p.from_param #_SimpleCData.c_char_p_from_param # XXX Deprecated def SetPointerType(pointer, cls): if _pointer_type_cache.get(cls, None) is not None: - raise RuntimeError, \ - "This type already exists in the cache" - if not _pointer_type_cache.has_key(id(pointer)): - raise RuntimeError, \ - "What's this???" + raise RuntimeError("This type already exists in the cache") + if id(pointer) not in _pointer_type_cache: + raise RuntimeError("What's this???") pointer.set_type(cls) _pointer_type_cache[cls] = pointer del _pointer_type_cache[id(pointer)] @@ -358,7 +356,7 @@ def __getattr__(self, name): if name.startswith('__') and name.endswith('__'): - raise AttributeError, name + raise AttributeError(name) func = self.__getitem__(name) setattr(self, name, func) return func Modified: python/branches/libffi3-branch/Lib/ctypes/macholib/dyld.py ============================================================================== --- python/branches/libffi3-branch/Lib/ctypes/macholib/dyld.py (original) +++ python/branches/libffi3-branch/Lib/ctypes/macholib/dyld.py Thu Feb 21 20:22:13 2008 @@ -135,7 +135,7 @@ ), env): if os.path.isfile(path): return path - raise ValueError, "dylib %s could not be found" % (name,) + raise ValueError("dylib %s could not be found" % (name,)) def framework_find(fn, executable_path=None, env=None): """ Modified: python/branches/libffi3-branch/Lib/ctypes/test/test_cfuncs.py ============================================================================== --- python/branches/libffi3-branch/Lib/ctypes/test/test_cfuncs.py (original) +++ python/branches/libffi3-branch/Lib/ctypes/test/test_cfuncs.py Thu Feb 21 20:22:13 2008 @@ -198,7 +198,7 @@ class stdcall_dll(WinDLL): def __getattr__(self, name): if name[:2] == '__' and name[-2:] == '__': - raise AttributeError, name + raise AttributeError(name) func = self._FuncPtr(("s_" + name, self)) setattr(self, name, func) return func Modified: python/branches/libffi3-branch/Lib/ctypes/test/test_macholib.py ============================================================================== --- python/branches/libffi3-branch/Lib/ctypes/test/test_macholib.py (original) +++ python/branches/libffi3-branch/Lib/ctypes/test/test_macholib.py Thu Feb 21 20:22:13 2008 @@ -42,7 +42,7 @@ return os.path.realpath(dyld_find(dylib)) except ValueError: pass - raise ValueError, "%s not found" % (name,) + raise ValueError("%s not found" % (name,)) class MachOTest(unittest.TestCase): if sys.platform == "darwin": Modified: python/branches/libffi3-branch/Lib/ctypes/test/test_random_things.py ============================================================================== --- python/branches/libffi3-branch/Lib/ctypes/test/test_random_things.py (original) +++ python/branches/libffi3-branch/Lib/ctypes/test/test_random_things.py Thu Feb 21 20:22:13 2008 @@ -3,7 +3,7 @@ def callback_func(arg): 42 / arg - raise ValueError, arg + raise ValueError(arg) if sys.platform == "win32": Modified: python/branches/libffi3-branch/Lib/distutils/archive_util.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/archive_util.py (original) +++ python/branches/libffi3-branch/Lib/distutils/archive_util.py Thu Feb 21 20:22:13 2008 @@ -124,7 +124,7 @@ def check_archive_formats (formats): for format in formats: - if not ARCHIVE_FORMATS.has_key(format): + if format not in ARCHIVE_FORMATS: return format else: return None Modified: python/branches/libffi3-branch/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/ccompiler.py (original) +++ python/branches/libffi3-branch/Lib/distutils/ccompiler.py Thu Feb 21 20:22:13 2008 @@ -159,7 +159,7 @@ # basically the same things with Unix C compilers. for key in args.keys(): - if not self.executables.has_key(key): + if key not in self.executables: raise ValueError, \ "unknown executable '%s' for class %s" % \ (key, self.__class__.__name__) Modified: python/branches/libffi3-branch/Lib/distutils/command/build_ext.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/command/build_ext.py (original) +++ python/branches/libffi3-branch/Lib/distutils/command/build_ext.py Thu Feb 21 20:22:13 2008 @@ -362,7 +362,7 @@ # Medium-easy stuff: same syntax/semantics, different names. ext.runtime_library_dirs = build_info.get('rpath') - if build_info.has_key('def_file'): + if 'def_file' in build_info: log.warn("'def_file' element of build info dict " "no longer supported") Modified: python/branches/libffi3-branch/Lib/distutils/command/install.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/command/install.py (original) +++ python/branches/libffi3-branch/Lib/distutils/command/install.py Thu Feb 21 20:22:13 2008 @@ -352,7 +352,7 @@ opt_name = opt[0] if opt_name[-1] == "=": opt_name = opt_name[0:-1] - if self.negative_opt.has_key(opt_name): + if opt_name in self.negative_opt: opt_name = string.translate(self.negative_opt[opt_name], longopt_xlate) val = not getattr(self, opt_name) Modified: python/branches/libffi3-branch/Lib/distutils/command/register.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/command/register.py (original) +++ python/branches/libffi3-branch/Lib/distutils/command/register.py Thu Feb 21 20:22:13 2008 @@ -120,7 +120,7 @@ # see if we can short-cut and get the username/password from the # config config = None - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): print 'Using PyPI login from %s'%rc @@ -163,7 +163,7 @@ print 'Server response (%s): %s'%(code, result) # possibly save the login - if os.environ.has_key('HOME') and config is None and code == 200: + if 'HOME' in os.environ and config is None and code == 200: rc = os.path.join(os.environ['HOME'], '.pypirc') print 'I can store your PyPI login so future submissions will be faster.' print '(the login will be stored in %s)'%rc Modified: python/branches/libffi3-branch/Lib/distutils/command/upload.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/command/upload.py (original) +++ python/branches/libffi3-branch/Lib/distutils/command/upload.py Thu Feb 21 20:22:13 2008 @@ -46,7 +46,7 @@ raise DistutilsOptionError( "Must use --sign for --identity to have meaning" ) - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): self.announce('Using PyPI login from %s' % rc) Modified: python/branches/libffi3-branch/Lib/distutils/core.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/core.py (original) +++ python/branches/libffi3-branch/Lib/distutils/core.py Thu Feb 21 20:22:13 2008 @@ -101,9 +101,9 @@ else: klass = Distribution - if not attrs.has_key('script_name'): + if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) - if not attrs.has_key('script_args'): + if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments @@ -111,7 +111,7 @@ try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError, msg: - if attrs.has_key('name'): + if 'name' in attrs: raise SystemExit, "error in %s setup command: %s" % \ (attrs['name'], msg) else: Modified: python/branches/libffi3-branch/Lib/distutils/dir_util.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/dir_util.py (original) +++ python/branches/libffi3-branch/Lib/distutils/dir_util.py Thu Feb 21 20:22:13 2008 @@ -207,7 +207,7 @@ apply(cmd[0], (cmd[1],)) # remove dir from cache if it's already there abspath = os.path.abspath(cmd[1]) - if _path_created.has_key(abspath): + if abspath in _path_created: del _path_created[abspath] except (IOError, OSError), exc: log.warn(grok_environment_error( Modified: python/branches/libffi3-branch/Lib/distutils/dist.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/dist.py (original) +++ python/branches/libffi3-branch/Lib/distutils/dist.py Thu Feb 21 20:22:13 2008 @@ -239,7 +239,7 @@ for (opt, val) in cmd_options.items(): opt_dict[opt] = ("setup script", val) - if attrs.has_key('licence'): + if 'licence' in attrs: attrs['license'] = attrs['licence'] del attrs['licence'] msg = "'licence' distribution option is deprecated; use 'license'" @@ -343,7 +343,7 @@ user_filename = "pydistutils.cfg" # And look for the user config file - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: user_file = os.path.join(os.environ.get('HOME'), user_filename) if os.path.isfile(user_file): files.append(user_file) @@ -388,7 +388,7 @@ # If there was a "global" section in the config file, use it # to set Distribution options. - if self.command_options.has_key('global'): + if 'global' in self.command_options: for (opt, (src, val)) in self.command_options['global'].items(): alias = self.negative_opt.get(opt) try: @@ -907,7 +907,7 @@ try: is_string = type(value) is StringType - if neg_opt.has_key(option) and is_string: + if option in neg_opt and is_string: setattr(command_obj, neg_opt[option], not strtobool(value)) elif option in bool_opts and is_string: setattr(command_obj, option, strtobool(value)) Modified: python/branches/libffi3-branch/Lib/distutils/fancy_getopt.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/fancy_getopt.py (original) +++ python/branches/libffi3-branch/Lib/distutils/fancy_getopt.py Thu Feb 21 20:22:13 2008 @@ -97,7 +97,7 @@ self._build_index() def add_option (self, long_option, short_option=None, help_string=None): - if self.option_index.has_key(long_option): + if long_option in self.option_index: raise DistutilsGetoptError, \ "option conflict: already an option '%s'" % long_option else: @@ -109,7 +109,7 @@ def has_option (self, long_option): """Return true if the option table for this parser has an option with long name 'long_option'.""" - return self.option_index.has_key(long_option) + return long_option in self.option_index def get_attr_name (self, long_option): """Translate long option name 'long_option' to the form it @@ -121,11 +121,11 @@ def _check_alias_dict (self, aliases, what): assert type(aliases) is DictionaryType for (alias, opt) in aliases.items(): - if not self.option_index.has_key(alias): + if alias not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "option '%s' not defined") % (what, alias, alias) - if not self.option_index.has_key(opt): + if opt not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "aliased option '%s' not defined") % (what, alias, opt) Modified: python/branches/libffi3-branch/Lib/distutils/msvccompiler.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/msvccompiler.py (original) +++ python/branches/libffi3-branch/Lib/distutils/msvccompiler.py Thu Feb 21 20:22:13 2008 @@ -252,7 +252,7 @@ def initialize(self): self.__paths = [] - if os.environ.has_key("DISTUTILS_USE_SDK") and os.environ.has_key("MSSdk") and self.find_exe("cl.exe"): + if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" Modified: python/branches/libffi3-branch/Lib/distutils/sysconfig.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/sysconfig.py (original) +++ python/branches/libffi3-branch/Lib/distutils/sysconfig.py Thu Feb 21 20:22:13 2008 @@ -161,22 +161,22 @@ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO') - if os.environ.has_key('CC'): + if 'CC' in os.environ: cc = os.environ['CC'] - if os.environ.has_key('CXX'): + if 'CXX' in os.environ: cxx = os.environ['CXX'] - if os.environ.has_key('LDSHARED'): + if 'LDSHARED' in os.environ: ldshared = os.environ['LDSHARED'] - if os.environ.has_key('CPP'): + if 'CPP' in os.environ: cpp = os.environ['CPP'] else: cpp = cc + " -E" # not always - if os.environ.has_key('LDFLAGS'): + if 'LDFLAGS' in os.environ: ldshared = ldshared + ' ' + os.environ['LDFLAGS'] - if os.environ.has_key('CFLAGS'): + if 'CFLAGS' in os.environ: cflags = opt + ' ' + os.environ['CFLAGS'] ldshared = ldshared + ' ' + os.environ['CFLAGS'] - if os.environ.has_key('CPPFLAGS'): + if 'CPPFLAGS' in os.environ: cpp = cpp + ' ' + os.environ['CPPFLAGS'] cflags = cflags + ' ' + os.environ['CPPFLAGS'] ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] @@ -291,12 +291,12 @@ if m: n = m.group(1) found = True - if done.has_key(n): + if n in done: item = str(done[n]) - elif notdone.has_key(n): + elif n in notdone: # get it on a subsequent round found = False - elif os.environ.has_key(n): + elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] else: @@ -380,7 +380,7 @@ # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so # it needs to be compatible. # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and g.has_key('MACOSX_DEPLOYMENT_TARGET'): + if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g: cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') if cur_target == '': Modified: python/branches/libffi3-branch/Lib/distutils/text_file.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/text_file.py (original) +++ python/branches/libffi3-branch/Lib/distutils/text_file.py Thu Feb 21 20:22:13 2008 @@ -89,7 +89,7 @@ # set values for all options -- either from client option hash # or fallback to default_options for opt in self.default_options.keys(): - if options.has_key (opt): + if opt in options: setattr (self, opt, options[opt]) else: @@ -97,7 +97,7 @@ # sanity check client option hash for opt in options.keys(): - if not self.default_options.has_key (opt): + if opt not in self.default_options: raise KeyError, "invalid TextFile option '%s'" % opt if file is None: Modified: python/branches/libffi3-branch/Lib/distutils/util.py ============================================================================== --- python/branches/libffi3-branch/Lib/distutils/util.py (original) +++ python/branches/libffi3-branch/Lib/distutils/util.py Thu Feb 21 20:22:13 2008 @@ -219,11 +219,11 @@ if _environ_checked: return - if os.name == 'posix' and not os.environ.has_key('HOME'): + if os.name == 'posix' and 'HOME' not in os.environ: import pwd os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] - if not os.environ.has_key('PLAT'): + if 'PLAT' not in os.environ: os.environ['PLAT'] = get_platform() _environ_checked = 1 @@ -241,7 +241,7 @@ check_environ() def _subst (match, local_vars=local_vars): var_name = match.group(1) - if local_vars.has_key(var_name): + if var_name in local_vars: return str(local_vars[var_name]) else: return os.environ[var_name] Modified: python/branches/libffi3-branch/Misc/NEWS ============================================================================== --- python/branches/libffi3-branch/Misc/NEWS (original) +++ python/branches/libffi3-branch/Misc/NEWS Thu Feb 21 20:22:13 2008 @@ -139,10 +139,6 @@ - Issue #1620: New property decorator syntax was modifying the decorator in place instead of creating a new decorator object. -- Issue #1580: New free format floating point representation based on - "Floating-Point Printer Sample Code", by Robert G. Burger. For example - repr(11./5) now returns '2.2' instead of '2.2000000000000002'. - - Issue #1538: Avoid copying string in split/rsplit if the split char is not found. @@ -427,6 +423,11 @@ Library ------- +- Removed uses of dict.has_key() from distutils, and uses of + callable() from copy_reg.py, so the interpreter now starts up + without warnings when '-3' is given. More work like this needs to + be done in the rest of the stdlib. + - Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. - #1224: Fixed bad url parsing when path begins with double slash. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure Thu Feb 21 20:22:13 2008 @@ -1,27 +1,56 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for libffi 2.1. +# Generated by GNU Autoconf 2.61 for libffi 2.1. # # Report bugs to . # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -31,8 +60,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -46,18 +110,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -65,157 +130,388 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf at gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -224,7 +520,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -233,39 +550,27 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' @@ -276,42 +581,112 @@ # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC ac_ct_CC EXEEXT OBJEXT CFLAGS CPP CPPFLAGS EGREP ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR MKTARGET LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CPP +GREP +EGREP +ALLOCA +HAVE_LONG_DOUBLE +TARGET +TARGETDIR +MKTARGET +LIBOBJS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CPP +CPPFLAGS' + # Initialize some variables set by options. ac_init_help= @@ -338,34 +713,48 @@ # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -387,33 +776,45 @@ --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -440,6 +841,12 @@ -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -464,13 +871,16 @@ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -535,6 +945,16 @@ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -587,24 +1007,20 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -635,8 +1051,7 @@ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -656,27 +1071,19 @@ { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -703,64 +1110,78 @@ test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS - -# + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# # Report the --help message. # if test "$ac_init_help" = "long"; then @@ -787,9 +1208,6 @@ -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -807,15 +1225,22 @@ --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libffi] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -838,8 +1263,9 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -847,120 +1273,86 @@ Report bugs to . _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libffi configure 2.1 -generated by GNU Autoconf 2.59 +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -979,7 +1371,7 @@ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -993,6 +1385,7 @@ test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1014,7 +1407,6 @@ ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1025,7 +1417,7 @@ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1047,9 +1439,7 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1060,8 +1450,8 @@ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1074,20 +1464,34 @@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1098,22 +1502,28 @@ echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1125,26 +1535,24 @@ ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1175,14 +1583,17 @@ # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1198,8 +1609,8 @@ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1211,12 +1622,11 @@ # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1241,8 +1651,7 @@ # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1259,12 +1668,6 @@ { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - @@ -1289,110 +1692,165 @@ +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_headers="$ac_config_headers fficonfig.h" +ac_config_headers="$ac_config_headers fficonfig.h" ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -1413,8 +1871,8 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1427,32 +1885,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1465,36 +1925,51 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1507,74 +1982,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1588,7 +2023,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -1599,6 +2034,7 @@ fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -1616,22 +2052,23 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1644,36 +2081,38 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1686,29 +2125,45 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi @@ -1721,21 +2176,35 @@ { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1760,47 +2229,77 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -1812,19 +2311,21 @@ fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1843,22 +2344,27 @@ fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1869,9 +2375,8 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1885,14 +2390,14 @@ fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1912,14 +2417,20 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -1937,12 +2448,12 @@ rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1965,49 +2476,49 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2023,37 +2534,118 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2069,12 +2661,12 @@ CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2108,12 +2700,17 @@ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2128,201 +2725,57 @@ return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2339,8 +2792,8 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2374,24 +2827,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2400,9 +2851,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2412,24 +2864,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2440,6 +2890,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2457,8 +2908,8 @@ else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -2481,24 +2932,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2507,9 +2956,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2519,24 +2969,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2547,6 +2995,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2569,23 +3018,170 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2609,34 +3205,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -2692,6 +3285,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -2711,18 +3305,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2735,12 +3338,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -2763,9 +3368,9 @@ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -2779,37 +3384,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -2824,18 +3427,19 @@ for ac_header in sys/mman.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2846,40 +3450,37 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2888,24 +3489,22 @@ /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -2913,9 +3512,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -2939,25 +3539,24 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -2973,9 +3572,9 @@ for ac_func in mmap do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3001,67 +3600,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3072,17 +3664,17 @@ if test "${ac_cv_header_sys_mman_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 -echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 +echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3093,40 +3685,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 -echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 +echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3135,24 +3724,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -3160,9 +3747,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -3186,25 +3774,23 @@ echo "$as_me: WARNING: sys/mman.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_mman_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } fi if test $ac_cv_header_sys_mman_h = yes; then @@ -3214,8 +3800,8 @@ fi -echo "$as_me:$LINENO: checking for mmap" >&5 -echo $ECHO_N "checking for mmap... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for mmap" >&5 +echo $ECHO_N "checking for mmap... $ECHO_C" >&6; } if test "${ac_cv_func_mmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3242,67 +3828,59 @@ #undef mmap -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char mmap (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_mmap) || defined (__stub___mmap) +#if defined __stub_mmap || defined __stub___mmap choke me -#else -char (*f) () = mmap; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != mmap; +return mmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_mmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_mmap=no + ac_cv_func_mmap=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 -echo "${ECHO_T}$ac_cv_func_mmap" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 +echo "${ECHO_T}$ac_cv_func_mmap" >&6; } if test $ac_cv_func_mmap = yes; then libffi_func_mmap=yes else @@ -3315,8 +3893,8 @@ ac_cv_func_mmap_dev_zero=no ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 -echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 +echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_file+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3332,10 +3910,10 @@ ac_cv_func_mmap_file=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_file" >&6 - echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 -echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_file" >&6; } + { echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 +echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_dev_zero+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3356,12 +3934,12 @@ ac_cv_func_mmap_dev_zero=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6; } # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 -echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 +echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6; } if test "${ac_cv_decl_map_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3388,43 +3966,40 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_decl_map_anon=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_decl_map_anon=no + ac_cv_decl_map_anon=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 -echo "${ECHO_T}$ac_cv_decl_map_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 +echo "${ECHO_T}$ac_cv_decl_map_anon" >&6; } if test $ac_cv_decl_map_anon = no; then ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 -echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 +echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3440,8 +4015,8 @@ ac_cv_func_mmap_anon=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6; } fi fi @@ -3536,8 +4111,8 @@ *) ;; esac -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3561,34 +4136,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3644,6 +4216,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -3663,18 +4236,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3687,12 +4269,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -3705,9 +4289,9 @@ for ac_func in memcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3733,67 +4317,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3804,8 +4381,8 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3820,43 +4397,42 @@ main () { char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no + ac_cv_working_alloca_h=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -3865,8 +4441,8 @@ fi -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3883,7 +4459,7 @@ # include # define alloca _alloca # else -# if HAVE_ALLOCA_H +# ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -3901,43 +4477,42 @@ main () { char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no + ac_cv_func_alloca_works=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then @@ -3951,15 +4526,15 @@ # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. -ALLOCA=alloca.$ac_objext +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3969,7 +4544,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined(CRAY) && ! defined(CRAY2) +#if defined CRAY && ! defined CRAY2 webecray #else wenotbecray @@ -3985,14 +4560,14 @@ rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4018,67 +4593,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -4091,8 +4659,8 @@ done fi -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4105,6 +4673,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +$ac_includes_default int find_stack_direction () { @@ -4122,17 +4691,26 @@ int main () { - exit (find_stack_direction () < 0); + return find_stack_direction () < 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4145,11 +4723,13 @@ ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction @@ -4159,8 +4739,8 @@ fi -echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6; } if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4171,60 +4751,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef double ac__type_new_; int main () { -if ((double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_double=no + ac_cv_type_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6; } -echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4234,10 +4811,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4245,26 +4823,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4274,10 +4848,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4285,55 +4860,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4341,26 +4914,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4370,10 +4939,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4381,49 +4951,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4434,10 +5003,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4445,49 +5015,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +'') if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4495,8 +5061,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (double)); } -unsigned long ulongval () { return (long) (sizeof (double)); } + typedef double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4505,35 +5072,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4544,29 +5120,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -echo "$as_me:$LINENO: checking for long double" >&5 -echo $ECHO_N "checking for long double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6; } if test "${ac_cv_type_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4577,60 +5156,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef long double ac__type_new_; int main () { -if ((long double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (long double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_long_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_long_double=no + ac_cv_type_long_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 -echo "${ECHO_T}$ac_cv_type_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6; } -echo "$as_me:$LINENO: checking size of long double" >&5 -echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_long_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4640,10 +5216,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4651,26 +5228,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4680,10 +5253,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4691,55 +5265,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4747,26 +5319,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4776,10 +5344,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4787,49 +5356,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4840,10 +5408,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4851,49 +5420,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +'') if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4901,8 +5466,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (long double)); } -unsigned long ulongval () { return (long) (sizeof (long double)); } + typedef long double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4911,35 +5477,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (long double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4950,22 +5525,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF @@ -4986,171 +5564,163 @@ fi -echo "$as_me:$LINENO: checking for _Bool support" >&5 -echo $ECHO_N "checking for _Bool support... $ECHO_C" >&6 -have_c99_bool=no +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +#include +#include int main () { -_Bool x; x = (_Bool)0; +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) + bogus endian macros +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_C99_BOOL 1 -_ACEOF - - have_c99_bool=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_c99_bool" >&5 -echo "${ECHO_T}$have_c99_bool" >&6 -if test "$have_c99_bool" = yes ; then -echo "$as_me:$LINENO: checking for _Bool" >&5 -echo $ECHO_N "checking for _Bool... $ECHO_C" >&6 -if test "${ac_cv_type__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +#include +#include + int main () { -if ((_Bool *) 0) - return 0; -if (sizeof (_Bool)) - return 0; +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type__Bool=yes + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type__Bool=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_bigendian=no fi -echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 -echo "${ECHO_T}$ac_cv_type__Bool" >&6 -echo "$as_me:$LINENO: checking size of _Bool" >&5 -echo $ECHO_N "checking size of _Bool... $ECHO_C" >&6 -if test "${ac_cv_sizeof__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - if test "$ac_cv_type__Bool" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= 0)]; -test_array [0] = 0 - + _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5160,652 +5730,200 @@ int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_hi=$ac_mid; break + ac_cv_c_bigendian=no else - echo "$as_me: failed program was:" >&5 + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` +( exit $ac_status ) +ac_cv_c_bigendian=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + + + + +if test x$TARGET = xSPARC; then + { echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 +echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6; } +if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" + CFLAGS="$CFLAGS -fpic" + LDFLAGS="$LDFLAGS -shared" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) < 0)]; -test_array [0] = 0 ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + libffi_cv_as_sparc_ua_pcrel=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + libffi_cv_as_sparc_ua_pcrel=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + LDFLAGS="$save_LDFLAGS" +fi +{ echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 +echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6; } + if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_AS_SPARC_UA_PCREL 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 +echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6; } +if test "${libffi_cv_as_register_pseudo_op+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + libffi_cv_as_register_pseudo_op=unknown + # Check if we have .register + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".register %g2, #scratch"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= $ac_mid)]; -test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + libffi_cv_as_register_pseudo_op=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + libffi_cv_as_register_pseudo_op=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof__Bool=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (_Bool)); } -unsigned long ulongval () { return (long) (sizeof (_Bool)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (_Bool))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof__Bool=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof__Bool=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof__Bool" >&5 -echo "${ECHO_T}$ac_cv_sizeof__Bool" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF__BOOL $ac_cv_sizeof__Bool -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_bigendian=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) - -cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac - - - - - -if test x$TARGET = xSPARC; then - echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 -echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6 -if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_sparc_ua_pcrel=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_sparc_ua_pcrel=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 -echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6 - if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_AS_SPARC_UA_PCREL 1 -_ACEOF - - fi - - echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 -echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6 -if test "${libffi_cv_as_register_pseudo_op+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - libffi_cv_as_register_pseudo_op=unknown - # Check if we have .register - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".register %g2, #scratch"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_register_pseudo_op=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_register_pseudo_op=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 -echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 +echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6; } if test "x$libffi_cv_as_register_pseudo_op" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5815,8 +5933,8 @@ fi fi -echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 -echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 +echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6; } if test "${libffi_cv_ro_eh_frame+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5834,8 +5952,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 -echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 +echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6; } if test "x$libffi_cv_ro_eh_frame" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5855,8 +5973,8 @@ fi -echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 -echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 +echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6; } if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5876,8 +5994,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 -echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 +echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6; } if test $libffi_cv_hidden_visibility_attribute = yes; then cat >>confdefs.h <<\_ACEOF @@ -5901,9 +6019,9 @@ _ACEOF - ac_config_commands="$ac_config_commands include" +ac_config_commands="$ac_config_commands include" - ac_config_commands="$ac_config_commands src" +ac_config_commands="$ac_config_commands src" TARGETINCDIR=$TARGETDIR @@ -5914,12 +6032,12 @@ esac - ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" +ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" - ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" +ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" - ac_config_files="$ac_config_files include/ffi.h fficonfig.py" +ac_config_files="$ac_config_files include/ffi.h fficonfig.py" cat >confcache <<\_ACEOF @@ -5940,39 +6058,58 @@ # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -5981,32 +6118,18 @@ # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -6037,17 +6160,45 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -6057,8 +6208,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -6072,18 +6258,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -6091,159 +6278,120 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi +# CDPATH. +$as_unset CDPATH - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -6252,7 +6400,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -6261,31 +6430,14 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6293,30 +6445,21 @@ CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -6324,7 +6467,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -6346,18 +6489,20 @@ $config_commands Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libffi config.status 2.1 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir + +ac_pwd='$ac_pwd' +srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -6368,39 +6513,24 @@ do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -6410,18 +6540,24 @@ $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -6437,41 +6573,53 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS section. +# INIT-COMMANDS # - TARGETDIR="$TARGETDIR" _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "include/ffi.h" ) CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "fficonfig.py" ) CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; - "include/ffitarget.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; - "include/ffi_common.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; - "include" ) CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; - "src" ) CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "fficonfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + case $ac_config_target in + "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; + "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; + "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; + "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; + "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; + "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -6484,308 +6632,376 @@ fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s, at SHELL@,$SHELL,;t t -s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t -s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t -s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s, at exec_prefix@,$exec_prefix,;t t -s, at prefix@,$prefix,;t t -s, at program_transform_name@,$program_transform_name,;t t -s, at bindir@,$bindir,;t t -s, at sbindir@,$sbindir,;t t -s, at libexecdir@,$libexecdir,;t t -s, at datadir@,$datadir,;t t -s, at sysconfdir@,$sysconfdir,;t t -s, at sharedstatedir@,$sharedstatedir,;t t -s, at localstatedir@,$localstatedir,;t t -s, at libdir@,$libdir,;t t -s, at includedir@,$includedir,;t t -s, at oldincludedir@,$oldincludedir,;t t -s, at infodir@,$infodir,;t t -s, at mandir@,$mandir,;t t -s, at build_alias@,$build_alias,;t t -s, at host_alias@,$host_alias,;t t -s, at target_alias@,$target_alias,;t t -s, at DEFS@,$DEFS,;t t -s, at ECHO_C@,$ECHO_C,;t t -s, at ECHO_N@,$ECHO_N,;t t -s, at ECHO_T@,$ECHO_T,;t t -s, at LIBS@,$LIBS,;t t -s, at build@,$build,;t t -s, at build_cpu@,$build_cpu,;t t -s, at build_vendor@,$build_vendor,;t t -s, at build_os@,$build_os,;t t -s, at host@,$host,;t t -s, at host_cpu@,$host_cpu,;t t -s, at host_vendor@,$host_vendor,;t t -s, at host_os@,$host_os,;t t -s, at target@,$target,;t t -s, at target_cpu@,$target_cpu,;t t -s, at target_vendor@,$target_vendor,;t t -s, at target_os@,$target_os,;t t -s, at CC@,$CC,;t t -s, at ac_ct_CC@,$ac_ct_CC,;t t -s, at EXEEXT@,$EXEEXT,;t t -s, at OBJEXT@,$OBJEXT,;t t -s, at CFLAGS@,$CFLAGS,;t t -s, at CPP@,$CPP,;t t -s, at CPPFLAGS@,$CPPFLAGS,;t t -s, at EGREP@,$EGREP,;t t -s, at ALLOCA@,$ALLOCA,;t t -s, at HAVE_LONG_DOUBLE@,$HAVE_LONG_DOUBLE,;t t -s, at TARGET@,$TARGET,;t t -s, at TARGETDIR@,$TARGETDIR,;t t -s, at MKTARGET@,$MKTARGET,;t t -s, at LIBOBJS@,$LIBOBJS,;t t -s, at LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +target!$target$ac_delim +target_cpu!$target_cpu$ac_delim +target_vendor!$target_vendor$ac_delim +target_os!$target_os$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +ALLOCA!$ALLOCA$ac_delim +HAVE_LONG_DOUBLE!$HAVE_LONG_DOUBLE$ac_delim +TARGET!$TARGET$ac_delim +TARGETDIR!$TARGETDIR$ac_delim +MKTARGET!$MKTARGET$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -fi # test -n "$CONFIG_FILES" +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # 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. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + case $ac_mode in + :F) + # + # CONFIG_FILE + # - # 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. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +_ACEOF - 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 +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -6793,511 +7009,173 @@ cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s, at configure_input@,$configure_input,;t t -s, at srcdir@,$ac_srcdir,;t t -s, at abs_srcdir@,$ac_abs_srcdir,;t t -s, at top_srcdir@,$ac_top_srcdir,;t t -s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s, at builddir@,$ac_builddir,;t t -s, at abs_builddir@,$ac_abs_builddir,;t t -s, at top_builddir@,$ac_top_builddir,;t t -s, at abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines -# This sed command replaces #undef with comments. This is necessary, for +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null +while : do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs +rm -f conftest.defines conftest.tail +echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF - # 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. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - rm -f $ac_file - mv $tmp/config.h $ac_file + mv "$tmp/config.h" $ac_file fi else - cat $tmp/config.h - rm -f $tmp/config.h + echo "/* $configure_input */" + cat "$ac_result" fi -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_LINKS section. -# - -for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + rm -f "$tmp/out12" + ;; + :L) + # + # CONFIG_LINK + # - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_file" >&6;} - if test ! -r $srcdir/$ac_source; then + if test ! -r "$srcdir/$ac_source"; then { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} { (exit 1); exit 1; }; } fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dest_dir";; -*) - case "$ac_dest_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dest_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dest_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - + rm -f "$ac_file" + # Try a relative symlink, then a hard link, then a copy. case $srcdir in [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$srcdir/$ac_source ;; esac - - # Try a symlink, then a hard link, then a copy. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest 2>/dev/null || - cp -p $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&2;} + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$srcdir/$ac_source" "$ac_file" 2>/dev/null || + cp -p "$srcdir/$ac_source" "$ac_file" || + { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&2;} { (exit 1); exit 1; }; } -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + ;; + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - include ) test -d include || mkdir include ;; - src ) + case $ac_file$ac_mode in + "include":C) test -d include || mkdir include ;; + "src":C) test -d src || mkdir src test -d src/$TARGETDIR || mkdir src/$TARGETDIR ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac Thu Feb 21 20:22:13 2008 @@ -106,17 +106,6 @@ fi AC_SUBST(HAVE_LONG_DOUBLE) -AC_MSG_CHECKING(for _Bool support) -have_c99_bool=no -AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [ - AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.]) - have_c99_bool=yes -]) -AC_MSG_RESULT($have_c99_bool) -if test "$have_c99_bool" = yes ; then -AC_CHECK_SIZEOF(_Bool, 1) -fi - AC_C_BIGENDIAN AH_VERBATIM([WORDS_BIGENDIAN], [ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 21 20:22:13 2008 @@ -28,9 +28,6 @@ */ #undef HAVE_AS_SPARC_UA_PCREL -/* Define this if you have the type _Bool. */ -#undef HAVE_C99_BOOL - /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -100,18 +97,15 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* The size of a `double', as computed by sizeof. */ +/* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE -/* The size of a `long double', as computed by sizeof. */ +/* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE -/* The size of a `_Bool', as computed by sizeof. */ -#undef SIZEOF__BOOL - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. + automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ From python-checkins at python.org Thu Feb 21 20:24:54 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 21 Feb 2008 20:24:54 +0100 (CET) Subject: [Python-checkins] r60927 - python/trunk/Lib/UserDict.py python/trunk/Lib/shelve.py Message-ID: <20080221192454.3BAAA1E4010@bag.python.org> Author: raymond.hettinger Date: Thu Feb 21 20:24:53 2008 New Revision: 60927 Modified: python/trunk/Lib/UserDict.py python/trunk/Lib/shelve.py Log: Update more instances of has_key(). Modified: python/trunk/Lib/UserDict.py ============================================================================== --- python/trunk/Lib/UserDict.py (original) +++ python/trunk/Lib/UserDict.py Thu Feb 21 20:24:53 2008 @@ -41,7 +41,7 @@ def iterkeys(self): return self.data.iterkeys() def itervalues(self): return self.data.itervalues() def values(self): return self.data.values() - def has_key(self, key): return self.data.has_key(key) + def has_key(self, key): return key in self.data def update(self, dict=None, **kwargs): if dict is None: pass @@ -59,7 +59,7 @@ return failobj return self[key] def setdefault(self, key, failobj=None): - if not self.has_key(key): + if key not in self: self[key] = failobj return self[key] def pop(self, key, *args): Modified: python/trunk/Lib/shelve.py ============================================================================== --- python/trunk/Lib/shelve.py (original) +++ python/trunk/Lib/shelve.py Thu Feb 21 20:24:53 2008 @@ -95,13 +95,13 @@ return len(self.dict) def has_key(self, key): - return self.dict.has_key(key) + return key in self.dict def __contains__(self, key): - return self.dict.has_key(key) + return key in self.dict def get(self, key, default=None): - if self.dict.has_key(key): + if key in self.dict: return self[key] return default From buildbot at python.org Thu Feb 21 20:35:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 19:35:01 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080221193501.91BBB1E4010@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/214 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0002-0002-0002-0002-0002' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2000-2000-2000-2000-2000' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 263, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1000-1000-1000-1000-1000' 1 test failed: test_logging make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 20:46:36 2008 From: python-checkins at python.org (guido.van.rossum) Date: Thu, 21 Feb 2008 20:46:36 +0100 (CET) Subject: [Python-checkins] r60928 - python/trunk/Misc/HISTORY python/trunk/Misc/NEWS Message-ID: <20080221194636.EF46C1E4010@bag.python.org> Author: guido.van.rossum Date: Thu Feb 21 20:46:35 2008 New Revision: 60928 Modified: python/trunk/Misc/HISTORY python/trunk/Misc/NEWS Log: Fix a few typos and layout glitches (more work is needed). Move 2.5 news to Misc/HISTORY. Modified: python/trunk/Misc/HISTORY ============================================================================== --- python/trunk/Misc/HISTORY (original) +++ python/trunk/Misc/HISTORY Thu Feb 21 20:46:35 2008 @@ -3,11 +3,2150 @@ This file contains the release messages for previous Python releases. As you read on you go back to the dark ages of Python's history. +(Note: news about 2.5c2 and later 2.5 releases is in the Misc/NEWS +file of the release25-maint branch.) ====================================================================== +What's New in Python 2.5 release candidate 1? +============================================= + +*Release date: 17-AUG-2006* + +Core and builtins +----------------- + +- Unicode objects will no longer raise an exception when being + compared equal or unequal to a string and a UnicodeDecodeError + exception occurs, e.g. as result of a decoding failure. + + Instead, the equal (==) and unequal (!=) comparison operators will + now issue a UnicodeWarning and interpret the two objects as + unequal. The UnicodeWarning can be filtered as desired using + the warning framework, e.g. silenced completely, turned into an + exception, logged, etc. + + Note that compare operators other than equal and unequal will still + raise UnicodeDecodeError exceptions as they've always done. + +- Fix segfault when doing string formatting on subclasses of long. + +- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines + with new-style classes. + +- Fix bug related to __len__ functions returning negative values with + classic classes. + +- Patch #1538606, Fix __index__() clipping. There were some problems + discovered with the API and how integers that didn't fit into Py_ssize_t + were handled. This patch attempts to provide enough alternatives + to effectively use __index__. + +- Bug #1536021: __hash__ may now return long int; the final hash + value is obtained by invoking hash on the long int. + +- Bug #1536786: buffer comparison could emit a RuntimeWarning. + +- Bug #1535165: fixed a segfault in input() and raw_input() when + sys.stdin is closed. + +- On Windows, the PyErr_Warn function is now exported from + the Python dll again. + +- Bug #1191458: tracing over for loops now produces a line event + on each iteration. Fixing this problem required changing the .pyc + magic number. This means that .pyc files generated before 2.5c1 + will be regenerated. + +- Bug #1333982: string/number constants were inappropriately stored + in the byte code and co_consts even if they were not used, ie + immediately popped off the stack. + +- Fixed a reference-counting problem in property(). + + +Library +------- + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for generator expressions. + +- The distutils version has been changed to 2.5.0. The change to + keep it programmatically in sync with the Python version running + the code (introduced in 2.5b3) has been reverted. It will continue + to be maintained manually as static string literal. + +- If the Python part of a ctypes callback function returns None, + and this cannot be converted to the required C type, an exception is + printed with PyErr_WriteUnraisable. Before this change, the C + callback returned arbitrary values to the calling code. + +- The __repr__ method of a NULL ctypes.py_object() no longer raises + an exception. + +- uuid.UUID now has a bytes_le attribute. This returns the UUID in + little-endian byte order for Windows. In addition, uuid.py gained some + workarounds for clocks with low resolution, to stop the code yielding + duplicate UUIDs. + +- Patch #1540892: site.py Quitter() class attempts to close sys.stdin + before raising SystemExit, allowing IDLE to honor quit() and exit(). + +- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. + +- Patch #1536071: trace.py should now find the full module name of a + file correctly even on Windows. + +- logging's atexit hook now runs even if the rest of the module has + already been cleaned up. + +- Bug #1112549, fix DoS attack on cgi.FieldStorage. + +- Bug #1531405, format_exception no longer raises an exception if + str(exception) raised an exception. + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for nested functions. + + +Extension Modules +----------------- + +- Patch #1511317: don't crash on invalid hostname (alias) info. + +- Patch #1535500: fix segfault in BZ2File.writelines and make sure it + raises the correct exceptions. + +- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The + '-no-stack-protector' compiler flag for OpenBSD has been removed. + +- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now + uses the _as_parameter_ attribute when objects are passed to foreign + function calls. The ctypes version number was changed to 1.0.1. + +- Bug #1530559, struct.pack raises TypeError where it used to convert. + Passing float arguments to struct.pack when integers are expected + now triggers a DeprecationWarning. + + +Tests +----- + +- test_socketserver should now work on cygwin and not fail sporadically + on other platforms. + +- test_mailbox should now work on cygwin versions 2006-08-10 and later. + +- Bug #1535182: really test the xreadlines() method of bz2 objects. + +- test_threading now skips testing alternate thread stack sizes on + platforms that don't support changing thread stack size. + + +Documentation +------------- + +- Patch #1534922: unittest docs were corrected and enhanced. + + +Build +----- + +- Bug #1535502, build _hashlib on Windows, and use masm assembler + code in OpenSSL. + +- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. + +- Bug #1530448, ctypes build failure on Solaris 10 was fixed. + + +C API +----- + +- New API for Unicode rich comparisons: PyUnicode_RichCompare() + +- Bug #1069160. Internal correctness changes were made to + ``PyThreadState_SetAsyncExc()``. A test case was added, and + the documentation was changed to state that the return value + is always 1 (normal) or 0 (if the specified thread wasn't found). + + +What's New in Python 2.5 beta 3? +================================ + +*Release date: 03-AUG-2006* + +Core and builtins +----------------- + +- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously + returned a long (see PEP 353). + +- Bug #1515471: string.replace() accepts character buffers again. + +- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). + This provides the proper warning for struct.pack(). + PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). + +- Patch #1531113: Fix augmented assignment with yield expressions. + Also fix a SystemError when trying to assign to yield expressions. + +- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance + with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is + used in ``sys.path_importer_cache`` to cache non-directory paths and avoid + excessive filesystem operations during imports. + +- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some + operations on signed longs that are formally undefined by C. + Unfortunately, at least one compiler now cares about that, so complicated + the code to make that compiler happy again. + +- Bug #1524310: Properly report errors from FindNextFile in os.listdir. + +- Patch #1232023: Stop including current directory in search + path on Windows. + +- Fix some potential crashes found with failmalloc. + +- Fix warnings reported by Klocwork's static analysis tool. + +- Bug #1512814, Fix incorrect lineno's when code within a function + had more than 255 blank lines. + +- Patch #1521179: Python now accepts the standard options ``--help`` and + ``--version`` as well as ``/?`` on Windows. + +- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works + again. Fixing this problem required changing the .pyc magic number. + This means that .pyc files generated before 2.5b3 will be regenerated. + +- Bug #1524317: Compiling Python ``--without-threads`` failed. + The Python core compiles again, and, in a build without threads, the + new ``sys._current_frames()`` returns a dictionary with one entry, + mapping the faux "thread id" 0 to the current frame. + +- Bug #1525447: build on MacOS X on a case-sensitive filesystem. + + +Library +------- + +- Fix #1693149. Now you can pass several modules separated by + comma to trace.py in the same --ignore-module option. + +- Correction of patch #1455898: In the mbcs decoder, set final=False + for stream decoder, but final=True for the decode function. + +- os.urandom no longer masks unrelated exceptions like SystemExit or + KeyboardInterrupt. + +- Bug #1525866: Don't copy directory stat times in + shutil.copytree on Windows + +- Bug #1002398: The documentation for os.path.sameopenfile now correctly + refers to file descriptors, not file objects. + +- The renaming of the xml package to xmlcore, and the import hackery done + to make it appear at both names, has been removed. Bug #1511497, + #1513611, and probably others. + +- Bug #1441397: The compiler module now recognizes module and function + docstrings correctly as it did in Python 2.4. + +- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally + lost that tests are sorted by name before being run. This rarely + matters for well-written tests, but can create baffling symptoms if + side effects from one test to the next affect outcomes. ``DocTestFinder`` + has been changed to sort the list of tests it returns. + +- The distutils version has been changed to 2.5.0, and is now kept + in sync with sys.version_info[:3]. + +- Bug #978833: Really close underlying socket in _socketobject.close. + +- Bug #1459963: urllib and urllib2 now normalize HTTP header names with + title(). + +- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback + to recursive calls and call it with the failing package name. + +- Bug #1525817: Don't truncate short lines in IDLE's tool tips. + +- Patch #1515343: Fix printing of deprecated string exceptions with a + value in the traceback module. + +- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. + +- Patch #1524429: Use repr() instead of backticks in Tkinter again. + +- Bug #1520914: Change time.strftime() to accept a zero for any position in its + argument tuple. For arguments where zero is illegal, the value is forced to + the minimum value that is correct. This is to support an undocumented but + common way people used to fill in inconsequential information in the time + tuple pre-2.4. + +- Patch #1220874: Update the binhex module for Mach-O. + +- The email package has improved RFC 2231 support, specifically for + recognizing the difference between encoded (name*0*=) and non-encoded + (name*0=) parameter continuations. This may change the types of + values returned from email.message.Message.get_param() and friends. + Specifically in some cases where non-encoded continuations were used, + get_param() used to return a 3-tuple of (None, None, string) whereas now it + will just return the string (since non-encoded continuations don't have + charset and language parts). + + Also, whereas % values were decoded in all parameter continuations, they are + now only decoded in encoded parameter parts. + +- Bug #1517990: IDLE keybindings on MacOS X now work correctly + +- Bug #1517996: IDLE now longer shows the default Tk menu when a + path browser, class browser or debugger is the frontmost window on MacOS X + +- Patch #1520294: Support for getset and member descriptors in types.py, + inspect.py, and pydoc.py. Specifically, this allows for querying the type + of an object against these built-in types and more importantly, for getting + their docstrings printed in the interactive interpreter's help() function. + + +Extension Modules +----------------- + +- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during + a socket operation on a socket with a timeout, the exception will be + caught correctly. Previously, the exception was not caught. + +- Patch #1529514: The _ctypes extension is now compiled on more + openbsd target platforms. + +- The ``__reduce__()`` method of the new ``collections.defaultdict`` had + a memory leak, affecting pickles and deep copies. + +- Bug #1471938: Fix curses module build problem on Solaris 8; patch by + Paul Eggert. + +- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. + +- Patch #1521817: Index range checking on ctypes arrays containing + exactly one element enabled again. This allows iterating over these + arrays, without the need to check the array size before. + +- Bug #1521375: When the code in ctypes.util.find_library was + run with root privileges, it could overwrite or delete + /dev/null in certain cases; this is now fixed. + +- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the + default mode for loading shared libraries in ctypes. + +- Because of a misspelled preprocessor symbol, ctypes was always + compiled without thread support; this is now fixed. + +- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename + methods now allow their database parameter to be None as the + sleepycat API allows. + +- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different + bluetooth API compared with Linux and FreeBSD. + +Tests +----- + +- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of + how long the test file should take to play. Now accepts taking 2.93 secs + (exact time) +/- 10% instead of the hard-coded 3.1 sec. + +- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, + ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when + run via ``regrtest.py``. Now they do. + +Build +----- + +- Bug #1439538: Drop usage of test -e in configure as it is not portable. + +Mac +--- + +- PythonLauncher now works correctly when the path to the script contains + characters that are treated specially by the shell (such as quotes). + +- Bug #1527397: PythonLauncher now launches scripts with the working directory + set to the directory that contains the script instead of the user home + directory. That latter was an implementation accident and not what users + expect. + + +What's New in Python 2.5 beta 2? +================================ + +*Release date: 11-JUL-2006* + +Core and builtins +----------------- + +- Bug #1441486: The literal representation of -(sys.maxint - 1) + again evaluates to a int object, not a long. + +- Bug #1501934: The scope of global variables that are locally assigned + using augmented assignment is now correctly determined. + +- Bug #927248: Recursive method-wrapper objects can now safely + be released. + +- Bug #1417699: Reject locale-specific decimal point in float() + and atof(). + +- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to + omit a default "error" argument for NULL pointer. This allows + the parser to take a codec from cjkcodecs again. + +- Bug #1519018: 'as' is now validated properly in import statements. + +- On 64 bit systems, int literals that use less than 64 bits are + now ints rather than longs. + +- Bug #1512814, Fix incorrect lineno's when code at module scope + started after line 256. + +- New function ``sys._current_frames()`` returns a dict mapping thread + id to topmost thread stack frame. This is for expert use, and is + especially useful for debugging application deadlocks. The functionality + was previously available in Fazal Majid's ``threadframe`` extension + module, but it wasn't possible to do this in a wholly threadsafe way from + an extension. + +Library +------- + +- Bug #1257728: Mention Cygwin in distutils error message about a missing + VS 2003. + +- Patch #1519566: Update turtle demo, make begin_fill idempotent. + +- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK + environment variable to be set in order to the SDK environment + for finding the compiler, include files, etc. + +- Bug #1515998: Properly generate logical ids for files in bdist_msi. + +- warnings.py now ignores ImportWarning by default + +- string.Template() now correctly handles tuple-values. Previously, + multi-value tuples would raise an exception and single-value tuples would + be treated as the value they contain, instead. + +- Bug #822974: Honor timeout in telnetlib.{expect,read_until} + even if some data are received. + +- Bug #1267547: Put proper recursive setup.py call into the + spec file generated by bdist_rpm. + +- Bug #1514693: Update turtle's heading when switching between + degrees and radians. + +- Reimplement turtle.circle using a polyline, to allow correct + filling of arcs. + +- Bug #1514703: Only setup canvas window in turtle when the canvas + is created. + +- Bug #1513223: .close() of a _socketobj now releases the underlying + socket again, which then gets closed as it becomes unreferenced. + +- Bug #1504333: Make sgmllib support angle brackets in quoted + attribute values. + +- Bug #853506: Fix IPv6 address parsing in unquoted attributes in + sgmllib ('[' and ']' were not accepted). + +- Fix a bug in the turtle module's end_fill function. + +- Bug #1510580: The 'warnings' module improperly required that a Warning + category be either a types.ClassType and a subclass of Warning. The proper + check is just that it is a subclass with Warning as the documentation states. + +- The compiler module now correctly compiles the new try-except-finally + statement (bug #1509132). + +- The wsgiref package is now installed properly on Unix. + +- A bug was fixed in logging.config.fileConfig() which caused a crash on + shutdown when fileConfig() was called multiple times. + +- The sqlite3 module did cut off data from the SQLite database at the first + null character before sending it to a custom converter. This has been fixed + now. + +Extension Modules +----------------- + +- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This + means that select() on sockets > FD_SETSIZE (typically 1024) work again. + The patch makes sockets use poll() internally where available. + +- Assigning None to pointer type fields in ctypes structures possible + overwrote the wrong fields, this is fixed now. + +- Fixed a segfault in _ctypes when ctypes.wintypes were imported + on non-Windows platforms. + +- Bug #1518190: The ctypes.c_void_p constructor now accepts any + integer or long, without range checking. + +- Patch #1517790: It is now possible to use custom objects in the ctypes + foreign function argtypes sequence as long as they provide a from_param + method, no longer is it required that the object is a ctypes type. + +- The '_ctypes' extension module now works when Python is configured + with the --without-threads option. + +- Bug #1513646: os.access on Windows now correctly determines write + access, again. + +- Bug #1512695: cPickle.loads could crash if it was interrupted with + a KeyboardInterrupt. + +- Bug #1296433: parsing XML with a non-default encoding and + a CharacterDataHandler could crash the interpreter in pyexpat. + +- Patch #1516912: improve Modules support for OpenVMS. + +Build +----- + +- Automate Windows build process for the Win64 SSL module. + +- 'configure' now detects the zlib library the same way as distutils. + Previously, the slight difference could cause compilation errors of the + 'zlib' module on systems with more than one version of zlib. + +- The MSI compileall step was fixed to also support a TARGETDIR + with spaces in it. + +- Bug #1517388: sqlite3.dll is now installed on Windows independent + of Tcl/Tk. + +- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old + trying to be installed even though it's empty. + +Tests +----- + +- Call os.waitpid() at the end of tests that spawn child processes in order + to minimize resources (zombies). + +Documentation +------------- + +- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the + documentation for the warnings module. + +- Patch #1509163: MS Toolkit Compiler no longer available. + +- Patch #1504046: Add documentation for xml.etree. + + +What's New in Python 2.5 beta 1? +================================ + +*Release date: 20-JUN-2006* + +Core and builtins +----------------- + +- Patch #1507676: Error messages returned by invalid abstract object operations + (such as iterating over an integer) have been improved and now include the + type of the offending object to help with debugging. + +- Bug #992017: A classic class that defined a __coerce__() method that returned + its arguments swapped would infinitely recurse and segfault the interpreter. + +- Fix the socket tests so they can be run concurrently. + +- Removed 5 integers from C frame objects (PyFrameObject). + f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. + +- Bug #532646: object.__call__() will continue looking for the __call__ + attribute on objects until one without one is found. This leads to recursion + when you take a class and set its __call__ attribute to an instance of the + class. Originally fixed for classic classes, but this fix is for new-style. + Removes the infinite_rec_3 crasher. + +- The string and unicode methods startswith() and endswith() now accept + a tuple of prefixes/suffixes to look for. Implements RFE #1491485. + +- Buffer objects, at the C level, never used the char buffer + implementation even when the char buffer for the wrapped object was + explicitly requested (originally returned the read or write buffer). + Now a TypeError is raised if the char buffer is not present but is + requested. + +- Patch #1346214: Statements like "if 0: suite" are now again optimized + away like they were in Python 2.4. + +- Builtin exceptions are now full-blown new-style classes instead of + instances pretending to be classes, which speeds up exception handling + by about 80% in comparison to 2.5a2. + +- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to + Unicode 4.1. + +- Patch #921466: sys.path_importer_cache is now used to cache valid and + invalid file paths for the built-in import machinery which leads to + fewer open calls on startup. + +- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- + of-2 bases. The largest speedup is for inputs with about 1000 decimal + digits. Conversion from non-power-of-2 bases remains quadratic-time in + the number of input digits (it was and remains linear-time for bases + 2, 4, 8, 16 and 32). + +- Bug #1334662: ``int(string, base)`` could deliver a wrong answer + when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented + an integer close to ``sys.maxint``. This was repaired by patch + #1335972, which also gives a nice speedup. + +- Patch #1337051: reduced size of frame objects. + +- PyErr_NewException now accepts a tuple of base classes as its + "base" parameter. + +- Patch #876206: function call speedup by retaining allocated frame + objects. + +- Bug #1462152: file() now checks more thoroughly for invalid mode + strings and removes a possible "U" before passing the mode to the + C library function. + +- Patch #1488312, Fix memory alignment problem on SPARC in unicode + +- Bug #1487966: Fix SystemError with conditional expression in assignment + +- WindowsError now has two error code attributes: errno, which carries + the error values from errno.h, and winerror, which carries the error + values from winerror.h. Previous versions put the winerror.h values + (from GetLastError()) into the errno attribute. + +- Patch #1475845: Raise IndentationError for unexpected indent. + +- Patch #1479181: split open() and file() from being aliases for each other. + +- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` + methods were always silently ignored by dictionaries when comparing keys. + They are now passed through (except when using the C API function + ``PyDict_GetItem()``, whose semantics did not change). + +- Bug #1456209: In some obscure cases it was possible for a class with a + custom ``__eq__()`` method to confuse dict internals when class instances + were used as a dict's keys and the ``__eq__()`` method mutated the dict. + No, you don't have any code that did this ;-) + +Extension Modules +----------------- + +- Bug #1295808: expat symbols should be namespaced in pyexpat + +- Patch #1462338: Upgrade pyexpat to expat 2.0.0 + +- Change binascii.hexlify to accept a read-only buffer instead of only a char + buffer and actually follow its documentation. + +- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. + +- Patch #1478788 (modified version): The functional extension module has + been renamed to _functools and a functools Python wrapper module added. + This provides a home for additional function related utilities that are + not specifically about functional programming. See PEP 309. + +- Patch #1493701: performance enhancements for struct module. + +- Patch #1490224: time.altzone is now set correctly on Cygwin. + +- Patch #1435422: zlib's compress and decompress objects now have a + copy() method. + +- Patch #1454481: thread stack size is now tunable at runtime for thread + enabled builds on Windows and systems with Posix threads support. + +- On Win32, os.listdir now supports arbitrarily-long Unicode path names + (up to the system limit of 32K characters). + +- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. + As a result, these functions now raise WindowsError instead of OSError. + +- ``time.clock()`` on Win64 should use the high-performance Windows + ``QueryPerformanceCounter()`` now (as was already the case on 32-bit + Windows platforms). + +- Calling Tk_Init twice is refused if the first call failed as that + may deadlock. + +- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to + accept it without potentially using an uninitialized pointer. + +- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods + assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF + patch numbers 1494885 and 1494902] + +- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. + [pybsddb project SF patch number 1466734] + +- bsddb: fix DBCursor.pget() bug with keyword argument names when no data + parameter is supplied. [SF pybsddb bug #1477863] + +- bsddb: the __len__ method of a DB object has been fixed to return correct + results. It could previously incorrectly return 0 in some cases. + Fixes SF bug 1493322 (pybsddb bug 1184012). + +- bsddb: the bsddb.dbtables Modify method now raises the proper error and + aborts the db transaction safely when a modifier callback fails. + Fixes SF python patch/bug #1408584. + +- bsddb: multithreaded DB access using the simple bsddb module interface + now works reliably. It has been updated to use automatic BerkeleyDB + deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry + database calls that would previously deadlock. [SF python bug #775414] + +- Patch #1446489: add support for the ZIP64 extensions to zipfile. + +- Patch #1506645: add Python wrappers for the curses functions + is_term_resized, resize_term and resizeterm. + +Library +------- + +- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox + functions. + +- Patch #812986: Update turtle output even if not tracing. + +- Patch #1494750: Destroy master after deleting children in + Tkinter.BaseWidget. + +- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. + +- Patch #763580: Add name and value arguments to Tkinter variable + classes. + +- Bug #1117556: SimpleHTTPServer now tries to find and use the system's + mime.types file for determining MIME types. + +- Bug #1339007: Shelf objects now don't raise an exception in their + __del__ method when initialization failed. + +- Patch #1455898: The MBCS codec now supports the incremental mode for + double-byte encodings. + +- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to + guarantee that adjacent triples in the return list always describe + non-adjacent blocks. Previously, a pair of matching blocks could end + up being described by multiple adjacent triples that formed a partition + of the matching pair. + +- Bug #1498146: fix optparse to handle Unicode strings in option help, + description, and epilog. + +- Bug #1366250: minor optparse documentation error. + +- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; + clarify docs. + +- The wsgiref package has been added to the standard library. + +- The functions update_wrapper() and wraps() have been added to the functools + module. These make it easier to copy relevant metadata from the original + function when writing wrapper functions. + +- The optional ``isprivate`` argument to ``doctest.testmod()``, and the + ``doctest.is_private()`` function, both deprecated in 2.4, were removed. + +- Patch #1359618: Speed up charmap encoder by using a trie structure + for lookup. + +- The functions in the ``pprint`` module now sort dictionaries by key + before computing the display. Before 2.5, ``pprint`` sorted a dictionary + if and only if its display required more than one line, although that + wasn't documented. The new behavior increases predictability; e.g., + using ``pprint.pprint(a_dict)`` in a doctest is now reliable. + +- Patch #1497027: try HTTP digest auth before basic auth in urllib2 + (thanks for J. J. Lee). + +- Patch #1496206: improve urllib2 handling of passwords with respect to + default HTTP and HTTPS ports. + +- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. + +- Patch #1281707: speed up gzip.readline. + +- Patch #1180296: Two new functions were added to the locale module: + format_string() to get the effect of "format % items" but locale-aware, + and currency() to format a monetary number with currency sign. + +- Patch #1486962: Several bugs in the turtle Tk demo module were fixed + and several features added, such as speed and geometry control. + +- Patch #1488881: add support for external file objects in bz2 compressed + tarfiles. + +- Patch #721464: pdb.Pdb instances can now be given explicit stdin and + stdout arguments, making it possible to redirect input and output + for remote debugging. + +- Patch #1484695: Update the tarfile module to version 0.8. This fixes + a couple of issues, notably handling of long file names using the + GNU LONGNAME extension. + +- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a + new flag when ``name`` is already the name of an option flag. + +- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler + package. + +- Patch #1472854: make the rlcompleter.Completer class usable on non- + UNIX platforms. + +- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. + +- Bug #1472827: correctly escape newlines and tabs in attribute values in + the saxutils.XMLGenerator class. + + +Build +----- + +- Bug #1502728: Correctly link against librt library on HP-UX. + +- OpenBSD 3.9 is supported now. + +- Patch #1492356: Port to Windows CE. + +- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. + +- Patch #1471883: Add --enable-universalsdk. + +C API +----- + +Tests +----- + +Tools +----- + +Documentation +------------- + + + +What's New in Python 2.5 alpha 2? +================================= + +*Release date: 27-APR-2006* + +Core and builtins +----------------- + +- Bug #1465834: 'bdist_wininst preinstall script support' was fixed + by converting these apis from macros into exported functions again: + + PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile + PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx + PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne + PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString + PyRun_String Py_CompileString + +- Under COUNT_ALLOCS, types are not necessarily immortal anymore. + +- All uses of PyStructSequence_InitType have been changed to initialize + the type objects only once, even if the interpreter is initialized + multiple times. + +- Bug #1454485, array.array('u') could crash the interpreter. This was + due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) + to unicode when it didn't make sense. 'u#' now requires a unicode string. + +- Py_UNICODE is unsigned. It was always documented as unsigned, but + due to a bug had a signed value in previous versions. + +- Patch #837242: ``id()`` of any Python object always gives a positive + number now, which might be a long integer. ``PyLong_FromVoidPtr`` and + ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has + never been correct to implement a ``__hash()__`` method that returns the + ``id()`` of an object: + + def __hash__(self): + return id(self) # WRONG + + because a hash result must be a (short) Python int but it was always + possible for ``id()`` to return a Python long. However, because ``id()`` + could return negative values before, on a 32-bit box an ``id()`` result + was always usable as a hash value before this patch. That's no longer + necessarily so. + +- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) + to load extension modules and now provides the dl module. As a result, + sys.setdlopenflags() now works correctly on these systems. (SF patch + #1454844) + +- Patch #1463867: enhanced garbage collection to allow cleanup of cycles + involving generators that have paused outside of any ``try`` or ``with`` + blocks. (In 2.5a1, a paused generator that was part of a reference + cycle could not be garbage collected, regardless of whether it was + paused in a ``try`` or ``with`` block.) + +Extension Modules +----------------- + +- Patch #1191065: Fix preprocessor problems on systems where recvfrom + is a macro. + +- Bug #1467952: os.listdir() now correctly raises an error if readdir() + fails with an error condition. + +- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. + +- Bug #1117761: bsddb.*open() no longer raises an exception when using + the cachesize parameter. + +- Bug #1149413: bsddb.*open() no longer raises an exception when using + a temporary db (file=None) with the 'n' flag to truncate on open. + +- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 + as older versions cause excessive test failures. + +- Patch #1062014: AF_UNIX sockets under Linux have a special + abstract namespace that is now fully supported. + +Library +------- + +- Bug #1223937: subprocess.CalledProcessError reports the exit status + of the process using the returncode attribute, instead of + abusing errno. + +- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes + a doctest to be skipped (the code is not run, and the expected output + or exception is ignored). + +- Fixed contextlib.nested to cope with exceptions being raised and + caught inside exit handlers. + +- Updated optparse module to Optik 1.5.1 (allow numeric constants in + hex, octal, or binary; add ``append_const`` action; keep going if + gettext cannot be imported; added ``OptionParser.destroy()`` method; + added ``epilog`` for better help generation). + +- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when + called from a thread spawned as a side effect of importing a module. + +- The pydoc module now supports documenting packages contained in + .zip or .egg files. + +- The pkgutil module now has several new utility functions, such + as ``walk_packages()`` to support working with packages that are either + in the filesystem or zip files. + +- The mailbox module can now modify and delete messages from + mailboxes, in addition to simply reading them. Thanks to Gregory + K. Johnson for writing the code, and to the 2005 Google Summer of + Code for funding his work. + +- The ``__del__`` method of class ``local`` in module ``_threading_local`` + returned before accomplishing any of its intended cleanup. + +- Patch #790710: Add breakpoint command lists in pdb. + +- Patch #1063914: Add Tkinter.Misc.clipboard_get(). + +- Patch #1191700: Adjust column alignment in bdb breakpoint lists. + +- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on + Windows. Bug #1469163. + +- The warnings, linecache, inspect, traceback, site, and doctest modules + were updated to work correctly with modules imported from zipfiles or + via other PEP 302 __loader__ objects. + +- Patch #1467770: Reduce usage of subprocess._active to processes which + the application hasn't waited on. + +- Patch #1462222: Fix Tix.Grid. + +- Fix exception when doing glob.glob('anything*/') + +- The pstats.Stats class accepts an optional stream keyword argument to + direct output to an alternate file-like object. + +Build +----- + +- The Makefile now has a reindent target, which runs reindent.py on + the library. + +- Patch #1470875: Building Python with MS Free Compiler + +- Patch #1161914: Add a python-config script. + +- Patch #1324762:Remove ccpython.cc; replace --with-cxx with + --with-cxx-main. Link with C++ compiler only if --with-cxx-main was + specified. (Can be overridden by explicitly setting LINKCC.) Decouple + CXX from --with-cxx-main, see description in README. + +- Patch #1429775: Link extension modules with the shared libpython. + +- Fixed a libffi build problem on MIPS systems. + +- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` + now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, + and "%zu" for unsigned integers of type ``size_t``. + +Tests +----- + +- test_contextlib now checks contextlib.nested can cope with exceptions + being raised and caught inside exit handlers. + +- test_cmd_line now checks operation of the -m and -c command switches + +- The test_contextlib test in 2.5a1 wasn't actually run unless you ran + it separately and by hand. It also wasn't cleaning up its changes to + the current Decimal context. + +- regrtest.py now has a -M option to run tests that test the new limits of + containers, on 64-bit architectures. Running these tests is only sensible + on 64-bit machines with more than two gigabytes of memory. The argument + passed is the maximum amount of memory for the tests to use. + +Tools +----- + +- Added the Python benchmark suite pybench to the Tools/ directory; + contributed by Marc-Andre Lemburg. + +Documentation +------------- + +- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. + +- PEP 343: Added Context Types section to the library reference + and attempted to bring other PEP 343 related documentation into + line with the implementation and/or python-dev discussions. + +- Bug #1337990: clarified that ``doctest`` does not support examples + requiring both expected output and an exception. + + +What's New in Python 2.5 alpha 1? +================================= + +*Release date: 05-APR-2006* + +Core and builtins +----------------- + +- PEP 338: -m command line switch now delegates to runpy.run_module + allowing it to support modules in packages and zipfiles + +- On Windows, .DLL is not an accepted file name extension for + extension modules anymore; extensions are only found if they + end in .PYD. + +- Bug #1421664: sys.stderr.encoding is now set to the same value as + sys.stdout.encoding. + +- __import__ accepts keyword arguments. + +- Patch #1460496: round() now accepts keyword arguments. + +- Fixed bug #1459029 - unicode reprs were double-escaped. + +- Patch #1396919: The system scope threads are reenabled on FreeBSD + 5.4 and later versions. + +- Bug #1115379: Compiling a Unicode string with an encoding declaration + now gives a SyntaxError. + +- Previously, Python code had no easy way to access the contents of a + cell object. Now, a ``cell_contents`` attribute has been added + (closes patch #1170323). + +- Patch #1123430: Python's small-object allocator now returns an arena to + the system ``free()`` when all memory within an arena becomes unused + again. Prior to Python 2.5, arenas (256KB chunks of memory) were never + freed. Some applications will see a drop in virtual memory size now, + especially long-running applications that, from time to time, temporarily + use a large number of small objects. Note that when Python returns an + arena to the platform C's ``free()``, there's no guarantee that the + platform C library will in turn return that memory to the operating system. + The effect of the patch is to stop making that impossible, and in tests it + appears to be effective at least on Microsoft C and gcc-based systems. + Thanks to Evan Jones for hard work and patience. + +- Patch #1434038: property() now uses the getter's docstring if there is + no "doc" argument given. This makes it possible to legitimately use + property() as a decorator to produce a read-only property. + +- PEP 357, patch 1436368: add an __index__ method to int/long and a matching + nb_index slot to the PyNumberMethods struct. The slot is consulted instead + of requiring an int or long in slicing and a few other contexts, enabling + other objects (e.g. Numeric Python's integers) to be used as slice indices. + +- Fixed various bugs reported by Coverity's Prevent tool. + +- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the + new exception base class, BaseException, which has a new message attribute. + KeyboardInterrupt and SystemExit to directly inherit from BaseException now. + Raising a string exception now raises a DeprecationWarning. + +- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be + explicitly relative, using 'from .module import name' to mean 'from the same + package as this module is in. Imports without dots still default to the + old relative-then-absolute, unless 'from __future__ import + absolute_import' is used. + +- Properly check if 'warnings' raises an exception (usually when a filter set + to "error" is triggered) when raising a warning for raising string + exceptions. + +- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. + The name was removed from Include/code.h. + +- PEP 308: conditional expressions were added: (x if cond else y). + +- Patch 1433928: + - The copy module now "copies" function objects (as atomic objects). + - dict.__getitem__ now looks for a __missing__ hook before raising + KeyError. + +- PEP 343: with statement implemented. Needs ``from __future__ import + with_statement``. Use of 'with' as a variable will generate a warning. + Use of 'as' as a variable will also generate a warning (unless it's + part of an import statement). + The following objects have __context__ methods: + - The built-in file type. + - The thread.LockType type. + - The following types defined by the threading module: + Lock, RLock, Condition, Semaphore, BoundedSemaphore. + - The decimal.Context class. + +- Fix the encodings package codec search function to only search + inside its own package. Fixes problem reported in patch #1433198. + + Note: Codec packages should implement and register their own + codec search function. PEP 100 has the details. + +- PEP 353: Using ``Py_ssize_t`` as the index type. + +- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging + info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) + now allow Python to make use of memory blocks exceeding 2**32 bytes for + some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited + to 4-byte allocations before. + +- Patch #1400181, fix unicode string formatting to not use the locale. + This is how string objects work. u'%f' could use , instead of . + for the decimal point. Now both strings and unicode always use periods. + +- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. + configure would break checking curses.h. + +- Bug #959576: The pwd module is now builtin. This allows Python to be + built on UNIX platforms without $HOME set. + +- Bug #1072182, fix some potential problems if characters are signed. + +- Bug #889500, fix line number on SyntaxWarning for global declarations. + +- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. + +- Support for converting hex strings to floats no longer works. + This was not portable. float('0x3') now raises a ValueError. + +- Patch #1382163: Expose Subversion revision number to Python. New C API + function Py_GetBuildNumber(). New attribute sys.subversion. Build number + is now displayed in interactive prompt banner. + +- Implementation of PEP 341 - Unification of try/except and try/finally. + "except" clauses can now be written together with a "finally" clause in + one try statement instead of two nested ones. Patch #1355913. + +- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec + now encodes backslash correctly. + +- Patch #1350409: Work around signal handling bug in Visual Studio 2005. + +- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs + and long longs. + +- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" + It was possible for dlerror() to return a NULL pointer, so + it will now use a default error message in this case. + +- Replaced most Unicode charmap codecs with new ones using the + new Unicode translate string feature in the builtin charmap + codec; the codecs were created from the mapping tables available + at ftp.unicode.org and contain a few updates (e.g. the Mac OS + encodings now include a mapping for the Apple logo) + +- Added a few more codecs for Mac OS encodings + +- Sped up some Unicode operations. + +- A new AST parser implementation was completed. The abstract + syntax tree is available for read-only (non-compile) access + to Python code; an _ast module was added. + +- SF bug #1167751: fix incorrect code being produced for generator expressions. + The following code now raises a SyntaxError: foo(a = i for i in range(10)) + +- SF Bug #976608: fix SystemError when mtime of an imported file is -1. + +- SF Bug #887946: fix segfault when redirecting stdin from a directory. + Provide a warning when a directory is passed on the command line. + +- Fix segfault with invalid coding. + +- SF bug #772896: unknown encoding results in MemoryError. + +- All iterators now have a Boolean value of True. Formerly, some iterators + supported a __len__() method which evaluated to False when the iterator + was empty. + +- On 64-bit platforms, when __len__() returns a value that cannot be + represented as a C int, raise OverflowError. + +- test__locale is skipped on OS X < 10.4 (only partial locale support is + present). + +- SF bug #893549: parsing keyword arguments was broken with a few format + codes. + +- Changes donated by Elemental Security to make it work on AIX 5.3 + with IBM's 64-bit compiler (SF patch #1284289). This also closes SF + bug #105470: test_pwd fails on 64bit system (Opteron). + +- Changes donated by Elemental Security to make it work on HP-UX 11 on + Itanium2 with HP's 64-bit compiler (SF patch #1225212). + +- Disallow keyword arguments for type constructors that don't use them + (fixes bug #1119418). + +- Forward UnicodeDecodeError into SyntaxError for source encoding errors. + +- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for + exceptions that cause a function to exit. + +- The implementation of set() and frozenset() was revised to use its + own internal data structure. Memory consumption is reduced by 1/3 + and there are modest speed-ups as well. The API is unchanged. + +- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). + +- SF bug #1229429: PyObject_CallMethod failed to decrement some + reference counts in some error exit cases. + +- SF bug #1185883: Python's small-object memory allocator took over + a block managed by the platform C library whenever a realloc specified + a small new size. However, there's no portable way to know then how + much of the address space following the pointer is valid, so there's no + portable way to copy data from the C-managed block into Python's + small-object space without risking a memory fault. Python's small-object + realloc now leaves such blocks under the control of the platform C + realloc. + +- SF bug #1232517: An overflow error was not detected properly when + attempting to convert a large float to an int in os.utime(). + +- SF bug #1224347: hex longs now print with lowercase letters just + like their int counterparts. + +- SF bug #1163563: the original fix for bug #1010677 ("thread Module + Breaks PyGILState_Ensure()") broke badly in the case of multiple + interpreter states; back out that fix and do a better job (see + http://mail.python.org/pipermail/python-dev/2005-June/054258.html + for a longer write-up of the problem). + +- SF patch #1180995: marshal now uses a binary format by default when + serializing floats. + +- SF patch #1181301: on platforms that appear to use IEEE 754 floats, + the routines that promise to produce IEEE 754 binary representations + of floats now simply copy bytes around. + +- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP + 278. + +- patch #1109424: int, long, float, complex, and unicode now check for the + proper magic slot for type conversions when subclassed. Previously the + magic slot was ignored during conversion. Semantics now match the way + subclasses of str always behaved. int/long/float, conversion of an instance + to the base class has been moved to the proper nb_* magic slot and out of + PyNumber_*(). + Thanks Walter D?rwald. + +- Descriptors defined in C with a PyGetSetDef structure, where the setter is + NULL, now raise an AttributeError when attempting to set or delete the + attribute. Previously a TypeError was raised, but this was inconsistent + with the equivalent pure-Python implementation. + +- It is now safe to call PyGILState_Release() before + PyEval_InitThreads() (note that if there is reason to believe there + are multiple threads around you still must call PyEval_InitThreads() + before using the Python API; this fix is for extension modules that + have no way of knowing if Python is multi-threaded yet). + +- Typing Ctrl-C whilst raw_input() was waiting in a build with threads + disabled caused a crash. + +- Bug #1165306: instancemethod_new allowed the creation of a method + with im_class == im_self == NULL, which caused a crash when called. + +- Move exception finalisation later in the shutdown process - this + fixes the crash seen in bug #1165761 + +- Added two new builtins, any() and all(). + +- Defining a class with empty parentheses is now allowed + (e.g., ``class C(): pass`` is no longer a syntax error). + Patch #1176012 added support to the 'parser' module and 'compiler' package + (thanks to logistix for that added support). + +- Patch #1115086: Support PY_LONGLONG in structmember. + +- Bug #1155938: new style classes did not check that __init__() was + returning None. + +- Patch #802188: Report characters after line continuation character + ('\') with a specific error message. + +- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. + +- Bug #1124295: the __name__ attribute of file objects was + inadvertently made inaccessible in restricted mode. + +- Bug #1074011: closing sys.std{out,err} now causes a flush() and + an ferror() call. + +- min() and max() now support key= arguments with the same meaning as in + list.sort(). + +- The peephole optimizer now performs simple constant folding in expressions: + (2+3) --> (5). + +- set and frozenset objects can now be marshalled. SF #1098985. + +- Bug #1077106: Poor argument checking could cause memory corruption + in calls to os.read(). + +- The parser did not complain about future statements in illegal + positions. It once again reports a syntax error if a future + statement occurs after anything other than a doc string. + +- Change the %s format specifier for str objects so that it returns a + unicode instance if the argument is not an instance of basestring and + calling __str__ on the argument returns a unicode instance. + +- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the + current thread state when the auto-GIL-state machinery knows about + it (since the thread state is being deleted, continuing to remember it + can't help, but can hurt if another thread happens to get created with + the same thread id). + +Extension Modules +----------------- + +- Patch #1380952: fix SSL objects timing out on consecutive read()s + +- Patch #1309579: wait3 and wait4 were added to the posix module. + +- Patch #1231053: The audioop module now supports encoding/decoding of alaw. + In addition, the existing ulaw code was updated. + +- RFE #567972: Socket objects' family, type and proto properties are + now exposed via new attributes. + +- Everything under lib-old was removed. This includes the following modules: + Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, + lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, + util, whatsound, whrandom, zmod + +- The following modules were removed: regsub, reconvert, regex, regex_syntax. + +- re and sre were swapped, so help(re) provides full help. importing sre + is deprecated. The undocumented re.engine variable no longer exists. + +- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle + SS2 (single-shift 2) escape sequences correctly. + +- The unicodedata module was updated to the 4.1 version of the Unicode + database. The 3.2 version is still available as unicodedata.db_3_2_0 + for applications that require this specific version (such as IDNA). + +- The timing module is no longer built by default. It was deprecated + in PEP 4 in Python 2.0 or earlier. + +- Patch 1433928: Added a new type, defaultdict, to the collections module. + This uses the new __missing__ hook behavior added to dict (see above). + +- Bug #854823: socketmodule now builds on Sun platforms even when + INET_ADDRSTRLEN is not defined. + +- Patch #1393157: os.startfile() now has an optional argument to specify + a "command verb" to invoke on the file. + +- Bug #876637, prevent stack corruption when socket descriptor + is larger than FD_SETSIZE. + +- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. + mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. + mmap.mmap(0, size) should not be used on Windows for anonymous memory. + +- Patch #1422385: The nis module now supports access to domains other + than the system default domain. + +- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps + are reported, the limit on path name lengths is removed, and stat reports + WindowsError now (instead of OSError). + +- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. + +- Bug #1413192, fix seg fault in bsddb if a transaction was deleted + before the env. + +- Patch #1103116: Basic AF_NETLINK support. + +- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) + +- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. + Also fix ungetmouse() which did not accept arguments properly. + The code now conforms to the documented signature. + +- Bug #1400115, Fix segfault when calling curses.panel.userptr() + without prior setting of the userptr. + +- Fix 64-bit problems in bsddb. + +- Patch #1365916: fix some unsafe 64-bit mmap methods. + +- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build + problem on AIX. + +- Bug #869197: os.setgroups rejects long integer arguments + +- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint + +- Bug #1344508, Fix UNIX mmap leaking file descriptors + +- Patch #1338314, Bug #1336623: fix tarfile so it can extract + REGTYPE directories from tarfiles written by old programs. + +- Patch #1407992, fixes broken bsddb module db associate when using + BerkeleyDB 3.3, 4.0 or 4.1. + +- Get bsddb module to build with BerkeleyDB version 4.4 + +- Get bsddb module to build with BerkeleyDB version 3.2 + +- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, + but Python incorrectly assumes it is in UTF-8 format + +- Fix parse errors in the readline module when compiling without threads. + +- Patch #1288833: Removed thread lock from socket.getaddrinfo on + FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). + +- Patches #1298449 and #1298499: Add some missing checks for error + returns in cStringIO.c. + +- Patch #1297028: fix segfault if call type on MultibyteCodec, + MultibyteStreamReader, or MultibyteStreamWriter + +- Fix memory leak in posix.access(). + +- Patch #1213831: Fix typo in unicodedata._getcode. + +- Bug #1007046: os.startfile() did not accept unicode strings encoded in + the file system encoding. + +- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for + platforms that don't have inet_aton(). + +- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. + +- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one + line without newlines. + +- Bug #728515: mmap.resize() now resizes the file on Unix as it did + on Windows. + +- Patch #1180695: Add nanosecond stat resolution, and st_gen, + st_birthtime for FreeBSD. + +- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for + the request code argument, which results in more C-like behaviour + for large or negative values. + +- Bug #1234979: For the argument of thread.Lock.acquire, the Windows + implementation treated all integer values except 1 as false. + +- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. + +- Patch #1212117: os.stat().st_flags is now accessible as a attribute + if available on the platform. + +- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if + available on the platform. + +- Bug #1166660: The readline module could segfault if hook functions + were set in a different thread than that which called readline. + +- collections.deque objects now support a remove() method. + +- operator.itemgetter() and operator.attrgetter() now support retrieving + multiple fields. This provides direct support for sorting on multiple + keys (primary, secondary, etc). + +- os.access now supports Unicode path names on non-Win32 systems. + +- Patches #925152, #1118602: Avoid reading after the end of the buffer + in pyexpat.GetInputContext. + +- Patches #749830, #1144555: allow UNIX mmap size to default to current + file size. + +- Added functional.partial(). See PEP309. + +- Patch #1093585: raise a ValueError for negative history items in readline. + {remove_history,replace_history} + +- The spwd module has been added, allowing access to the shadow password + database. + +- stat_float_times is now True. + +- array.array objects are now picklable. + +- the cPickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- itertools.islice() now accepts None for the start and step arguments. + This allows islice() to work more readily with slices: + islice(s.start, s.stop, s.step) + +- datetime.datetime() now has a strptime class method which can be used to + create datetime object using a string and format. + +- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc + with the implementation from http://sourceforge.net/projects/libmd5-rfc/. + +Library +------- + +- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have + been renamed to have only a single underscore prefix. This was done to + make subclassing easier. + +- PEP 338: new module runpy defines a run_module function to support + executing modules which provide access to source code or a code object + via the PEP 302 import mechanisms. + +- The email module's parsedate_tz function now sets the daylight savings + flag to -1 (unknown) since it can't tell from the date whether it should + be set. + +- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results + now sport attributes that provide access to the parts of the result. + +- Patch #1462498: sgmllib now handles entity and character references + in attribute values. + +- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides + a DB-API interface in the standard library. You'll need sqlite 3.0.8 or + later to build this - if you have an earlier version, the C extension + module will not be built. + +- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts + aren't officially supported here, and trying to use them will probably + raise an exception some day. But dicts have been allowed, and "mostly + worked", so support for them won't go away without warning. + +- Bug #1445068: getpass.getpass() can now be given an explicit stream + argument to specify where to write the prompt. + +- Patch #1462313, bug #1443328: the pickle modules now can handle classes + that have __private names in their __slots__. + +- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. + +- patch #1457316: "setup.py upload" now supports --identity to select the + key to be used for signing the uploaded code. + +- Queue.Queue objects now support .task_done() and .join() methods + to make it easier to monitor when daemon threads have completed + processing all enqueued tasks. Patch #1455676. + +- popen2.Popen objects now preserve the command in a .cmd attribute. + +- Added the ctypes ffi package. + +- email 4.0 package now integrated. This is largely the same as the email 3.0 + package that was included in Python 2.3, except that PEP 8 module names are + now used (e.g. mail.message instead of email.Message). The MIME classes + have been moved to a subpackage (e.g. email.mime.text instead of + email.MIMEText). The old names are still supported for now. Several + deprecated Message methods have been removed and lots of bugs have been + fixed. More details can be found in the email package documentation. + +- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object + (a subclass of tuple) that provides incremental decoders and encoders + (a way to use stateful codecs without the stream API). Python functions + codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well + as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() + have been added. + +- Patch #1359365: Calling next() on a closed StringIO.String object raises + a ValueError instead of a StopIteration now (like file and cString.String do). + cStringIO.StringIO.isatty() will raise a ValueError now if close() has been + called before (like file and StringIO.StringIO do). + +- A regrtest option -w was added to re-run failed tests in verbose mode. + +- Patch #1446372: quit and exit can now be called from the interactive + interpreter to exit. + +- The function get_count() has been added to the gc module, and gc.collect() + grew an optional 'generation' argument. + +- A library msilib to generate Windows Installer files, and a distutils + command bdist_msi have been added. + +- PEP 343: new module contextlib.py defines decorator @contextmanager + and helpful context managers nested() and closing(). + +- The compiler package now supports future imports after the module docstring. + +- Bug #1413790: zipfile now sanitizes absolute archive names that are + not allowed by the specs. + +- Patch #1215184: FileInput now can be given an opening hook which can + be used to control how files are opened. + +- Patch #1212287: fileinput.input() now has a mode parameter for + specifying the file mode input files should be opened with. + +- Patch #1215184: fileinput now has a fileno() function for getting the + current file number. + +- Patch #1349274: gettext.install() now optionally installs additional + translation functions other than _() in the builtin namespace. + +- Patch #1337756: fileinput now accepts Unicode filenames. + +- Patch #1373643: The chunk module can now read chunks larger than + two gigabytes. + +- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. + +- Bug #1430298: It is now possible to send a mail with an empty + return address using smtplib. + +- Bug #1432260: The names of lambda functions are now properly displayed + in pydoc. + +- Patch #1412872: zipfile now sets the creator system to 3 (Unix) + unless the system is Win32. + +- Patch #1349118: urllib now supports user:pass@ style proxy + specifications, raises IOErrors when proxies for unsupported protocols + are defined, and uses the https proxy on https redirections. + +- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. + +- Bug #1407902: Add support for sftp:// URIs to urlparse. + +- Bug #1371247: Update Windows locale identifiers in locale.py. + +- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters + any more. + +- Bug #1403410: The warnings module now doesn't get confused + when it can't find out the module name it generates a warning for. + +- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. + +- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode + +- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise + LoadError as documented, instead of IOError. For compatibility, + LoadError subclasses IOError. + +- Added the hashlib module. It provides secure hash functions for MD5 and + SHA1, 224, 256, 384, and 512. Note that recent developments make the + historic MD5 and SHA1 unsuitable for cryptographic-strength applications. + In + Ronald L. Rivest offered this advice for Python: + + "The consensus of researchers in this area (at least as + expressed at the NIST Hash Function Workshop 10/31/05), + is that SHA-256 is a good choice for the time being, but + that research should continue, and other alternatives may + arise from this research. The larger SHA's also seem OK." + +- Added a subset of Fredrik Lundh's ElementTree package. Available + modules are xml.etree.ElementTree, xml.etree.ElementPath, and + xml.etree.ElementInclude, from ElementTree 1.2.6. + +- Patch #1162825: Support non-ASCII characters in IDLE window titles. + +- Bug #1365984: urllib now opens "data:" URLs again. + +- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception + is raised within the method itself on a previous call (e.g., passing in an + illegal argument) + +- Bug #1340337: change time.strptime() to always return ValueError when there + is an error in the format string. + +- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). + +- Bug #729103: pydoc.py: Fix docother() method to accept additional + "parent" argument. + +- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes + for padding. + +- Bug #1296004: httplib.py: Limit maximal amount of data read from the + socket to avoid a MemoryError on Windows. + +- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE + to get the correct encoding. + +- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of + languages. + +- Patch #1268314: Cache lines in StreamReader.readlines for performance. + +- Bug #1290505: Fix clearing the regex cache for time.strptime(). + +- Bug #1167128: Fix size of a symlink in a tarfile to be 0. + +- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook + functionality. + +- Bug #1163178: Make IDNA return an empty string when the input is empty. + +- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output + separator and do not output trailing semicolon. + +- Patch #1062060: urllib.urlretrieve() now raises a new exception, named + ContentTooShortException, when the actually downloaded size does not + match the Content-Length header. + +- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. + +- Bug #1178484: Return complete lines from codec stream readers + even if there is an exception in later lines, resulting in + correct line numbers for decoding errors in source code. + +- Bug #1192315: Disallow negative arguments to clear() in pdb. + +- Patch #827386: Support absolute source paths in msvccompiler.py. + +- Patch #1105730: Apply the new implementation of commonprefix in posixpath + to ntpath, macpath, os2emxpath and riscospath. + +- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus + __hasattr__ and __delattr__ methods on class Tk that were breaking + Tkdnd. + +- Bug #1015140: disambiguated the term "article id" in nntplib docs and + docstrings to either "article number" or "message id". + +- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a + parameter, but uses the usual "kwargs=None". + +- textwrap now processes text chunks at O(n) speed instead of O(n**2). + Patch #1209527 (Contributed by Connelly). + +- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code + to W3C name (404 -> 'Not Found'). RFE #1216944. + +- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, + as this can cause problems with apps closing all file descriptors. + +- Bug #839151: Fix an attempt to access sys.argv in the warnings module; + it can be missing in embedded interpreters + +- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. + +- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via + error messages. + +- Bug #1108948: Cookie.py produced invalid JavaScript code. + +- The tokenize module now detects and reports indentation errors. + Bug #1224621. + +- The tokenize module has a new untokenize() function to support a full + roundtrip from lexed tokens back to Python source code. In addition, + the generate_tokens() function now accepts a callable argument that + terminates by raising StopIteration. + +- Bug #1196315: fix weakref.WeakValueDictionary constructor. + +- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first + component of the path. + +- Patch #1120353: The xmlrpclib module provides better, more transparent, + support for datetime.{datetime,date,time} objects. With use_datetime set + to True, applications shouldn't have to fiddle with the DateTime wrapper + class at all. + +- distutils.commands.upload was added to support uploading distribution + files to PyPI. + +- distutils.commands.register now encodes the data as UTF-8 before posting + them to PyPI. + +- decimal operator and comparison methods now return NotImplemented + instead of raising a TypeError when interacting with other types. This + allows other classes to implement __radd__ style methods and have them + work as expected. + +- Bug #1163325: Decimal infinities failed to hash. Attempting to + hash a NaN raised an InvalidOperation instead of a TypeError. + +- Patch #918101: Add tarfile open mode r|* for auto-detection of the + stream compression; add, for symmetry reasons, r:* as a synonym of r. + +- Patch #1043890: Add extractall method to tarfile. + +- Patch #1075887: Don't require MSVC in distutils if there is nothing + to build. + +- Patch #1103407: Properly deal with tarfile iterators when untarring + symbolic links on Windows. + +- Patch #645894: Use getrusage for computing the time consumption in + profile.py if available. + +- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. + +- Patch #1117454: Remove code to special-case cookies without values + in LWPCookieJar. + +- Patch #1117339: Add cookielib special name tests. + +- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. + +- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. + +- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. + +- Patch #1104111: Alter setup.py --help and --help-commands. + +- Patch #1121234: Properly cleanup _exit and tkerror commands. + +- Patch #1049151: xdrlib now unpacks booleans as True or False. + +- Fixed bug in a NameError bug in cookielib. Patch #1116583. + +- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This + disables recursive traversal through instance attributes, which can + be exploited in various ways. + +- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec + flags on the HTTP listening socket. + +- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. + Fixed by reading the HTTP body in chunks instead of one big socket.read(). + +- Patches #893642, #1039083: add allow_none, encoding arguments to + constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. + +- Bug #1110478: Revert os.environ.update to do putenv again. + +- Bug #1103844: fix distutils.install.dump_dirs() with negated options. + +- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. + +- Enhancements to the csv module: + + + Dialects are now validated by the underlying C code, better + reflecting its capabilities, and improving its compliance with + PEP 305. + + Dialect parameter parsing has been re-implemented to improve error + reporting. + + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 + dictates. + + the parser now removes the escapechar prefix from escaped characters. + + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric + types, rather than any object that can be represented as a numeric. + + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields + to floats. + + reader now allows \r characters to be quoted (previously it only allowed + \n to be quoted). + + writer doublequote handling improved. + + Dialect classes passed to the module are no longer instantiated by + the module before being parsed (the former validation scheme required + this, but the mechanism was unreliable). + + The dialect registry now contains instances of the internal + C-coded dialect type, rather than references to python objects. + + the internal c-coded dialect type is now immutable. + + register_dialect now accepts the same keyword dialect specifications + as the reader and writer, allowing the user to register dialects + without first creating a dialect class. + + a configurable limit to the size of parsed fields has been added - + previously, an unmatched quote character could result in the entire + file being read into the field buffer before an error was reported. + + A new module method csv.field_size_limit() has been added that sets + the parser field size limit (returning the former limit). The initial + limit is 128kB. + + A line_num attribute has been added to the reader object, which tracks + the number of lines read from the source iterator. This is not + the same as the number of records returned, as records can span + multiple lines. + + reader and writer objects were not being registered with the cyclic-GC. + This has been fixed. + +- _DummyThread objects in the threading module now delete self.__block that is + inherited from _Thread since it uses up a lock allocated by 'thread'. The + lock primitives tend to be limited in number and thus should not be wasted on + a _DummyThread object. Fixes bug #1089632. + +- The imghdr module now detects Exif files. + +- StringIO.truncate() now correctly adjusts the size attribute. + (Bug #951915). + +- locale.py now uses an updated locale alias table (built using + Tools/i18n/makelocalealias.py, a tool to parse the X11 locale + alias file); the encoding lookup was enhanced to use Python's + encoding alias table. + +- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. + +- the pickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- optparse now optionally imports gettext. This allows its use in setup.py. + +- the pickle module no longer uses the deprecated bin parameter. + +- the shelve module no longer uses the deprecated binary parameter. + +- the pstats module no longer uses the deprecated ignore() method. + +- the filecmp module no longer uses the deprecated use_statcache argument. + +- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully + extended or overridden by subclasses. Formerly, the subclassed method would + be ignored by the rest of the module. (Bug #1078905). + +- heapq.nsmallest() and heapq.nlargest() now support key= arguments with + the same meaning as in list.sort(). + +- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only + once when a size argument is given. This prevents a buffer overflow in the + tokenizer with very long source lines. + +- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called + immediately after creating the object, without any intervening + ``.decompress()`` calls. + +- The reconvert.quote function can now emit triple-quoted strings. The + reconvert module now has some simple documentation. + +- ``UserString.MutableString`` now supports negative indices in + ``__setitem__`` and ``__delitem__`` + +- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") + correctly. + +- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by + ``codecs.StreamReader.readline()`` has a trailing "\r", read one more + character even if the user has passed a size parameter to get a proper + line ending. Remove the special handling of a "\r\n" that has been split + between two lines. + +- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain + about illegal code points. The codec now supports PEP 293 style error + handlers. + +- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads + from the input stream, so that the output is a byte string in the correct + encoding instead of a unicode string. + +- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than + considering it exactly like a '*'. + +- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to + ``encodings.aliases``. + +- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. + +- Patch #1413711: Certain patterns of differences were making difflib + touch the recursion limit. + +- Bug #947906: An object oriented interface has been added to the calendar + module. It's possible to generate HTML calendar now and the module can be + called as a script (e.g. via ``python -mcalendar``). Localized month and + weekday names can be ouput (even if an exotic encoding is used) using + special classes that use unicode. + +Build +----- + +- Fix test_float, test_long, and test_struct failures on Tru64 with gcc + by using -mieee gcc option. + +- Patch #1432345: Make python compile on DragonFly. + +- Build support for Win64-AMD64 was added. + +- Patch #1428494: Prefer linking against ncursesw over ncurses library. + +- Patch #881820: look for openpty and forkpty also in libbsd. + +- The sources of zlib are now part of the Python distribution (zlib 1.2.3). + The zlib module is now builtin on Windows. + +- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. + +- Bug #1189330: configure did not correctly determine the necessary + value of LINKCC if python was built with GCC 4.0. + +- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security + vulnerability in zlib 1.2.1 and 1.2.2. + +- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler + flags that change binary compatibility. Changes were also made to + distutils.sysconfig to also use the environment variable when used during + compilation of the interpreter and of C extensions through distutils. + +- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, + and linking has changed (prebinding is now deprecated, and libcc_dynamic + no longer exists). This configure patch makes things right. + +- Bug #1158607: Build with --disable-unicode again. + +- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is + defined. Discovered as a result of not being able to build on OS X. + +- setup.py now uses the directories specified in LDFLAGS using the -L option + and in CPPFLAGS using the -I option for adding library and include + directories, respectively, for compiling extension modules against. This has + led to the core being compiled using the values in CPPFLAGS. It also removes + the need for the special-casing of both DarwinPorts and Fink for darwin since + the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, + ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for + Fink, ``-I/opt/local/include`` for DarwinPorts). + +- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone + to exist in the struct (not required by either ISO C nor the UNIX 2 spec). + Tests for sanity in tzname when HAVE_TZNAME defined were also defined. + Closes bug #1096244. Thanks Gregory Bond. + +C API +----- + +- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to + ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory + is obtained via the ``PyObject_`` family, it must be released via the + ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has + always been officially true, but when Python's small-object allocator was + introduced, an attempt was made to cater to a few extension modules + discovered at the time that obtained memory via ``PyObject_New`` but + released it via ``PyMem_DEL``. It's years later, and if such code still + exists it will fail now (probably with segfaults, but calling wrong + low-level memory management functions can yield many symptoms). + +- Added a C API for set and frozenset objects. + +- Removed PyRange_New(). + +- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the + mapping argument now. This string is used as a mapping table. Byte values + greater than the length of the string and 0xFFFE are treated as undefined + mappings. + + +Tests +----- + +- In test_os, st_?time is now truncated before comparing it with ST_?TIME. + +- Patch #1276356: New resource "urlfetch" is implemented. This enables + even impatient people to run tests that require remote files. + + +Documentation +------------- + +- Bug #1402224: Add warning to dl docs about crashes. + +- Bug #1396471: Document that Windows' ftell() can return invalid + values for text files with UNIX-style line endings. + +- Bug #1274828: Document os.path.splitunc(). + +- Bug #1190204: Clarify which directories are searched by site.py. + +- Bug #1193849: Clarify os.path.expanduser() documentation. + +- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. + +- Bug #755617: Document the effects of os.chown() on Windows. + +- Patch #1180012: The documentation for modulefinder is now in the library reference. + +- Patch #1213031: Document that os.chown() accepts argument values of -1. + +- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. + +- Bug #1175022: Correct the example code for property(). + +- Document the IterableUserDict class in the UserDict module. + Closes bug #1166582. + +- Remove all latent references for "Macintosh" that referred to semantics for + Mac OS 9 and change to reflect the state for OS X. + Closes patch #1095802. Thanks Jack Jansen. + +Mac +--- + + +New platforms +------------- + +- FreeBSD 7 support is added. + + +Tools/Demos +----------- + +- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that + directory for syntax highlighting in Vim. Vim directory was added and placed + vimrc to it (was previous up a level). + +- Added two new files to Tools/scripts: pysource.py, which recursively + finds Python source files, and findnocoding.py, which finds Python + source files that need an encoding declaration. + Patch #784089, credits to Oleg Broytmann. + +- Bug #1072853: pindent.py used an uninitialized variable. + +- Patch #1177597: Correct Complex.__init__. + +- Fixed a display glitch in Pynche, which could cause the right arrow to + wiggle over by a pixel. + + What's New in Python 2.4 final? =============================== Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 21 20:46:35 2008 @@ -1057,14 +1057,14 @@ written to disk after calling .flush() or .close(). (Patch by David Watson.) -- Patch #1592250: Add elidge argument to Tkinter.Text.search. +- Patch #1592250: Add elide argument to Tkinter.Text.search. -- Patch #838546: Make terminal become controlling in pty.fork() +- Patch #838546: Make terminal become controlling in pty.fork(). - Patch #1351744: Add askyesnocancel helper for tkMessageBox. - Patch #1060577: Extract list of RPM files from spec file in - bdist_rpm + bdist_rpm. - Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders. @@ -1148,7 +1148,8 @@ - idle: Honor the "Cancel" action in the save dialog (Debian bug #299092). - Fix utf-8-sig incremental decoder, which didn't recognise a BOM when the - first chunk fed to the decoder started with a BOM, but was longer than 3 bytes. + first chunk fed to the decoder started with a BOM, but was longer than 3 + bytes. - The implementation of UnicodeError objects has been simplified (start and end attributes are now stored directly as Py_ssize_t members). @@ -1648,2143 +1649,6 @@ lead to the deprecation of macostools.touched() as it relied solely on macfs and was a no-op under OS X. - -What's New in Python 2.5 release candidate 1? -============================================= - -*Release date: 17-AUG-2006* - -Core and builtins ------------------ - -- Unicode objects will no longer raise an exception when being - compared equal or unequal to a string and a UnicodeDecodeError - exception occurs, e.g. as result of a decoding failure. - - Instead, the equal (==) and unequal (!=) comparison operators will - now issue a UnicodeWarning and interpret the two objects as - unequal. The UnicodeWarning can be filtered as desired using - the warning framework, e.g. silenced completely, turned into an - exception, logged, etc. - - Note that compare operators other than equal and unequal will still - raise UnicodeDecodeError exceptions as they've always done. - -- Fix segfault when doing string formatting on subclasses of long. - -- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines - with new-style classes. - -- Fix bug related to __len__ functions returning negative values with - classic classes. - -- Patch #1538606, Fix __index__() clipping. There were some problems - discovered with the API and how integers that didn't fit into Py_ssize_t - were handled. This patch attempts to provide enough alternatives - to effectively use __index__. - -- Bug #1536021: __hash__ may now return long int; the final hash - value is obtained by invoking hash on the long int. - -- Bug #1536786: buffer comparison could emit a RuntimeWarning. - -- Bug #1535165: fixed a segfault in input() and raw_input() when - sys.stdin is closed. - -- On Windows, the PyErr_Warn function is now exported from - the Python dll again. - -- Bug #1191458: tracing over for loops now produces a line event - on each iteration. Fixing this problem required changing the .pyc - magic number. This means that .pyc files generated before 2.5c1 - will be regenerated. - -- Bug #1333982: string/number constants were inappropriately stored - in the byte code and co_consts even if they were not used, ie - immediately popped off the stack. - -- Fixed a reference-counting problem in property(). - - -Library -------- - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for generator expressions. - -- The distutils version has been changed to 2.5.0. The change to - keep it programmatically in sync with the Python version running - the code (introduced in 2.5b3) has been reverted. It will continue - to be maintained manually as static string literal. - -- If the Python part of a ctypes callback function returns None, - and this cannot be converted to the required C type, an exception is - printed with PyErr_WriteUnraisable. Before this change, the C - callback returned arbitrary values to the calling code. - -- The __repr__ method of a NULL ctypes.py_object() no longer raises - an exception. - -- uuid.UUID now has a bytes_le attribute. This returns the UUID in - little-endian byte order for Windows. In addition, uuid.py gained some - workarounds for clocks with low resolution, to stop the code yielding - duplicate UUIDs. - -- Patch #1540892: site.py Quitter() class attempts to close sys.stdin - before raising SystemExit, allowing IDLE to honor quit() and exit(). - -- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. - -- Patch #1536071: trace.py should now find the full module name of a - file correctly even on Windows. - -- logging's atexit hook now runs even if the rest of the module has - already been cleaned up. - -- Bug #1112549, fix DoS attack on cgi.FieldStorage. - -- Bug #1531405, format_exception no longer raises an exception if - str(exception) raised an exception. - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for nested functions. - - -Extension Modules ------------------ - -- Patch #1511317: don't crash on invalid hostname (alias) info. - -- Patch #1535500: fix segfault in BZ2File.writelines and make sure it - raises the correct exceptions. - -- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The - '-no-stack-protector' compiler flag for OpenBSD has been removed. - -- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now - uses the _as_parameter_ attribute when objects are passed to foreign - function calls. The ctypes version number was changed to 1.0.1. - -- Bug #1530559, struct.pack raises TypeError where it used to convert. - Passing float arguments to struct.pack when integers are expected - now triggers a DeprecationWarning. - - -Tests ------ - -- test_socketserver should now work on cygwin and not fail sporadically - on other platforms. - -- test_mailbox should now work on cygwin versions 2006-08-10 and later. - -- Bug #1535182: really test the xreadlines() method of bz2 objects. - -- test_threading now skips testing alternate thread stack sizes on - platforms that don't support changing thread stack size. - - -Documentation -------------- - -- Patch #1534922: unittest docs were corrected and enhanced. - - -Build ------ - -- Bug #1535502, build _hashlib on Windows, and use masm assembler - code in OpenSSL. - -- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. - -- Bug #1530448, ctypes build failure on Solaris 10 was fixed. - - -C API ------ - -- New API for Unicode rich comparisons: PyUnicode_RichCompare() - -- Bug #1069160. Internal correctness changes were made to - ``PyThreadState_SetAsyncExc()``. A test case was added, and - the documentation was changed to state that the return value - is always 1 (normal) or 0 (if the specified thread wasn't found). - - -What's New in Python 2.5 beta 3? -================================ - -*Release date: 03-AUG-2006* - -Core and builtins ------------------ - -- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously - returned a long (see PEP 353). - -- Bug #1515471: string.replace() accepts character buffers again. - -- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). - This provides the proper warning for struct.pack(). - PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). - -- Patch #1531113: Fix augmented assignment with yield expressions. - Also fix a SystemError when trying to assign to yield expressions. - -- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance - with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is - used in ``sys.path_importer_cache`` to cache non-directory paths and avoid - excessive filesystem operations during imports. - -- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some - operations on signed longs that are formally undefined by C. - Unfortunately, at least one compiler now cares about that, so complicated - the code to make that compiler happy again. - -- Bug #1524310: Properly report errors from FindNextFile in os.listdir. - -- Patch #1232023: Stop including current directory in search - path on Windows. - -- Fix some potential crashes found with failmalloc. - -- Fix warnings reported by Klocwork's static analysis tool. - -- Bug #1512814, Fix incorrect lineno's when code within a function - had more than 255 blank lines. - -- Patch #1521179: Python now accepts the standard options ``--help`` and - ``--version`` as well as ``/?`` on Windows. - -- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works - again. Fixing this problem required changing the .pyc magic number. - This means that .pyc files generated before 2.5b3 will be regenerated. - -- Bug #1524317: Compiling Python ``--without-threads`` failed. - The Python core compiles again, and, in a build without threads, the - new ``sys._current_frames()`` returns a dictionary with one entry, - mapping the faux "thread id" 0 to the current frame. - -- Bug #1525447: build on MacOS X on a case-sensitive filesystem. - - -Library -------- - -- Fix #1693149. Now you can pass several modules separated by - comma to trace.py in the same --ignore-module option. - -- Correction of patch #1455898: In the mbcs decoder, set final=False - for stream decoder, but final=True for the decode function. - -- os.urandom no longer masks unrelated exceptions like SystemExit or - KeyboardInterrupt. - -- Bug #1525866: Don't copy directory stat times in - shutil.copytree on Windows - -- Bug #1002398: The documentation for os.path.sameopenfile now correctly - refers to file descriptors, not file objects. - -- The renaming of the xml package to xmlcore, and the import hackery done - to make it appear at both names, has been removed. Bug #1511497, - #1513611, and probably others. - -- Bug #1441397: The compiler module now recognizes module and function - docstrings correctly as it did in Python 2.4. - -- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally - lost that tests are sorted by name before being run. This rarely - matters for well-written tests, but can create baffling symptoms if - side effects from one test to the next affect outcomes. ``DocTestFinder`` - has been changed to sort the list of tests it returns. - -- The distutils version has been changed to 2.5.0, and is now kept - in sync with sys.version_info[:3]. - -- Bug #978833: Really close underlying socket in _socketobject.close. - -- Bug #1459963: urllib and urllib2 now normalize HTTP header names with - title(). - -- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback - to recursive calls and call it with the failing package name. - -- Bug #1525817: Don't truncate short lines in IDLE's tool tips. - -- Patch #1515343: Fix printing of deprecated string exceptions with a - value in the traceback module. - -- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. - -- Patch #1524429: Use repr() instead of backticks in Tkinter again. - -- Bug #1520914: Change time.strftime() to accept a zero for any position in its - argument tuple. For arguments where zero is illegal, the value is forced to - the minimum value that is correct. This is to support an undocumented but - common way people used to fill in inconsequential information in the time - tuple pre-2.4. - -- Patch #1220874: Update the binhex module for Mach-O. - -- The email package has improved RFC 2231 support, specifically for - recognizing the difference between encoded (name*0*=) and non-encoded - (name*0=) parameter continuations. This may change the types of - values returned from email.message.Message.get_param() and friends. - Specifically in some cases where non-encoded continuations were used, - get_param() used to return a 3-tuple of (None, None, string) whereas now it - will just return the string (since non-encoded continuations don't have - charset and language parts). - - Also, whereas % values were decoded in all parameter continuations, they are - now only decoded in encoded parameter parts. - -- Bug #1517990: IDLE keybindings on MacOS X now work correctly - -- Bug #1517996: IDLE now longer shows the default Tk menu when a - path browser, class browser or debugger is the frontmost window on MacOS X - -- Patch #1520294: Support for getset and member descriptors in types.py, - inspect.py, and pydoc.py. Specifically, this allows for querying the type - of an object against these built-in types and more importantly, for getting - their docstrings printed in the interactive interpreter's help() function. - - -Extension Modules ------------------ - -- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during - a socket operation on a socket with a timeout, the exception will be - caught correctly. Previously, the exception was not caught. - -- Patch #1529514: The _ctypes extension is now compiled on more - openbsd target platforms. - -- The ``__reduce__()`` method of the new ``collections.defaultdict`` had - a memory leak, affecting pickles and deep copies. - -- Bug #1471938: Fix curses module build problem on Solaris 8; patch by - Paul Eggert. - -- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. - -- Patch #1521817: Index range checking on ctypes arrays containing - exactly one element enabled again. This allows iterating over these - arrays, without the need to check the array size before. - -- Bug #1521375: When the code in ctypes.util.find_library was - run with root privileges, it could overwrite or delete - /dev/null in certain cases; this is now fixed. - -- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the - default mode for loading shared libraries in ctypes. - -- Because of a misspelled preprocessor symbol, ctypes was always - compiled without thread support; this is now fixed. - -- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename - methods now allow their database parameter to be None as the - sleepycat API allows. - -- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different - bluetooth API compared with Linux and FreeBSD. - -Tests ------ - -- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of - how long the test file should take to play. Now accepts taking 2.93 secs - (exact time) +/- 10% instead of the hard-coded 3.1 sec. - -- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, - ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when - run via ``regrtest.py``. Now they do. - -Build ------ - -- Bug #1439538: Drop usage of test -e in configure as it is not portable. - -Mac ---- - -- PythonLauncher now works correctly when the path to the script contains - characters that are treated specially by the shell (such as quotes). - -- Bug #1527397: PythonLauncher now launches scripts with the working directory - set to the directory that contains the script instead of the user home - directory. That latter was an implementation accident and not what users - expect. - - -What's New in Python 2.5 beta 2? -================================ - -*Release date: 11-JUL-2006* - -Core and builtins ------------------ - -- Bug #1441486: The literal representation of -(sys.maxint - 1) - again evaluates to a int object, not a long. - -- Bug #1501934: The scope of global variables that are locally assigned - using augmented assignment is now correctly determined. - -- Bug #927248: Recursive method-wrapper objects can now safely - be released. - -- Bug #1417699: Reject locale-specific decimal point in float() - and atof(). - -- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to - omit a default "error" argument for NULL pointer. This allows - the parser to take a codec from cjkcodecs again. - -- Bug #1519018: 'as' is now validated properly in import statements. - -- On 64 bit systems, int literals that use less than 64 bits are - now ints rather than longs. - -- Bug #1512814, Fix incorrect lineno's when code at module scope - started after line 256. - -- New function ``sys._current_frames()`` returns a dict mapping thread - id to topmost thread stack frame. This is for expert use, and is - especially useful for debugging application deadlocks. The functionality - was previously available in Fazal Majid's ``threadframe`` extension - module, but it wasn't possible to do this in a wholly threadsafe way from - an extension. - -Library -------- - -- Bug #1257728: Mention Cygwin in distutils error message about a missing - VS 2003. - -- Patch #1519566: Update turtle demo, make begin_fill idempotent. - -- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK - environment variable to be set in order to the SDK environment - for finding the compiler, include files, etc. - -- Bug #1515998: Properly generate logical ids for files in bdist_msi. - -- warnings.py now ignores ImportWarning by default - -- string.Template() now correctly handles tuple-values. Previously, - multi-value tuples would raise an exception and single-value tuples would - be treated as the value they contain, instead. - -- Bug #822974: Honor timeout in telnetlib.{expect,read_until} - even if some data are received. - -- Bug #1267547: Put proper recursive setup.py call into the - spec file generated by bdist_rpm. - -- Bug #1514693: Update turtle's heading when switching between - degrees and radians. - -- Reimplement turtle.circle using a polyline, to allow correct - filling of arcs. - -- Bug #1514703: Only setup canvas window in turtle when the canvas - is created. - -- Bug #1513223: .close() of a _socketobj now releases the underlying - socket again, which then gets closed as it becomes unreferenced. - -- Bug #1504333: Make sgmllib support angle brackets in quoted - attribute values. - -- Bug #853506: Fix IPv6 address parsing in unquoted attributes in - sgmllib ('[' and ']' were not accepted). - -- Fix a bug in the turtle module's end_fill function. - -- Bug #1510580: The 'warnings' module improperly required that a Warning - category be either a types.ClassType and a subclass of Warning. The proper - check is just that it is a subclass with Warning as the documentation states. - -- The compiler module now correctly compiles the new try-except-finally - statement (bug #1509132). - -- The wsgiref package is now installed properly on Unix. - -- A bug was fixed in logging.config.fileConfig() which caused a crash on - shutdown when fileConfig() was called multiple times. - -- The sqlite3 module did cut off data from the SQLite database at the first - null character before sending it to a custom converter. This has been fixed - now. - -Extension Modules ------------------ - -- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This - means that select() on sockets > FD_SETSIZE (typically 1024) work again. - The patch makes sockets use poll() internally where available. - -- Assigning None to pointer type fields in ctypes structures possible - overwrote the wrong fields, this is fixed now. - -- Fixed a segfault in _ctypes when ctypes.wintypes were imported - on non-Windows platforms. - -- Bug #1518190: The ctypes.c_void_p constructor now accepts any - integer or long, without range checking. - -- Patch #1517790: It is now possible to use custom objects in the ctypes - foreign function argtypes sequence as long as they provide a from_param - method, no longer is it required that the object is a ctypes type. - -- The '_ctypes' extension module now works when Python is configured - with the --without-threads option. - -- Bug #1513646: os.access on Windows now correctly determines write - access, again. - -- Bug #1512695: cPickle.loads could crash if it was interrupted with - a KeyboardInterrupt. - -- Bug #1296433: parsing XML with a non-default encoding and - a CharacterDataHandler could crash the interpreter in pyexpat. - -- Patch #1516912: improve Modules support for OpenVMS. - -Build ------ - -- Automate Windows build process for the Win64 SSL module. - -- 'configure' now detects the zlib library the same way as distutils. - Previously, the slight difference could cause compilation errors of the - 'zlib' module on systems with more than one version of zlib. - -- The MSI compileall step was fixed to also support a TARGETDIR - with spaces in it. - -- Bug #1517388: sqlite3.dll is now installed on Windows independent - of Tcl/Tk. - -- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old - trying to be installed even though it's empty. - -Tests ------ - -- Call os.waitpid() at the end of tests that spawn child processes in order - to minimize resources (zombies). - -Documentation -------------- - -- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the - documentation for the warnings module. - -- Patch #1509163: MS Toolkit Compiler no longer available. - -- Patch #1504046: Add documentation for xml.etree. - - -What's New in Python 2.5 beta 1? -================================ - -*Release date: 20-JUN-2006* - -Core and builtins ------------------ - -- Patch #1507676: Error messages returned by invalid abstract object operations - (such as iterating over an integer) have been improved and now include the - type of the offending object to help with debugging. - -- Bug #992017: A classic class that defined a __coerce__() method that returned - its arguments swapped would infinitely recurse and segfault the interpreter. - -- Fix the socket tests so they can be run concurrently. - -- Removed 5 integers from C frame objects (PyFrameObject). - f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. - -- Bug #532646: object.__call__() will continue looking for the __call__ - attribute on objects until one without one is found. This leads to recursion - when you take a class and set its __call__ attribute to an instance of the - class. Originally fixed for classic classes, but this fix is for new-style. - Removes the infinite_rec_3 crasher. - -- The string and unicode methods startswith() and endswith() now accept - a tuple of prefixes/suffixes to look for. Implements RFE #1491485. - -- Buffer objects, at the C level, never used the char buffer - implementation even when the char buffer for the wrapped object was - explicitly requested (originally returned the read or write buffer). - Now a TypeError is raised if the char buffer is not present but is - requested. - -- Patch #1346214: Statements like "if 0: suite" are now again optimized - away like they were in Python 2.4. - -- Builtin exceptions are now full-blown new-style classes instead of - instances pretending to be classes, which speeds up exception handling - by about 80% in comparison to 2.5a2. - -- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to - Unicode 4.1. - -- Patch #921466: sys.path_importer_cache is now used to cache valid and - invalid file paths for the built-in import machinery which leads to - fewer open calls on startup. - -- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- - of-2 bases. The largest speedup is for inputs with about 1000 decimal - digits. Conversion from non-power-of-2 bases remains quadratic-time in - the number of input digits (it was and remains linear-time for bases - 2, 4, 8, 16 and 32). - -- Bug #1334662: ``int(string, base)`` could deliver a wrong answer - when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented - an integer close to ``sys.maxint``. This was repaired by patch - #1335972, which also gives a nice speedup. - -- Patch #1337051: reduced size of frame objects. - -- PyErr_NewException now accepts a tuple of base classes as its - "base" parameter. - -- Patch #876206: function call speedup by retaining allocated frame - objects. - -- Bug #1462152: file() now checks more thoroughly for invalid mode - strings and removes a possible "U" before passing the mode to the - C library function. - -- Patch #1488312, Fix memory alignment problem on SPARC in unicode - -- Bug #1487966: Fix SystemError with conditional expression in assignment - -- WindowsError now has two error code attributes: errno, which carries - the error values from errno.h, and winerror, which carries the error - values from winerror.h. Previous versions put the winerror.h values - (from GetLastError()) into the errno attribute. - -- Patch #1475845: Raise IndentationError for unexpected indent. - -- Patch #1479181: split open() and file() from being aliases for each other. - -- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` - methods were always silently ignored by dictionaries when comparing keys. - They are now passed through (except when using the C API function - ``PyDict_GetItem()``, whose semantics did not change). - -- Bug #1456209: In some obscure cases it was possible for a class with a - custom ``__eq__()`` method to confuse dict internals when class instances - were used as a dict's keys and the ``__eq__()`` method mutated the dict. - No, you don't have any code that did this ;-) - -Extension Modules ------------------ - -- Bug #1295808: expat symbols should be namespaced in pyexpat - -- Patch #1462338: Upgrade pyexpat to expat 2.0.0 - -- Change binascii.hexlify to accept a read-only buffer instead of only a char - buffer and actually follow its documentation. - -- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. - -- Patch #1478788 (modified version): The functional extension module has - been renamed to _functools and a functools Python wrapper module added. - This provides a home for additional function related utilities that are - not specifically about functional programming. See PEP 309. - -- Patch #1493701: performance enhancements for struct module. - -- Patch #1490224: time.altzone is now set correctly on Cygwin. - -- Patch #1435422: zlib's compress and decompress objects now have a - copy() method. - -- Patch #1454481: thread stack size is now tunable at runtime for thread - enabled builds on Windows and systems with Posix threads support. - -- On Win32, os.listdir now supports arbitrarily-long Unicode path names - (up to the system limit of 32K characters). - -- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. - As a result, these functions now raise WindowsError instead of OSError. - -- ``time.clock()`` on Win64 should use the high-performance Windows - ``QueryPerformanceCounter()`` now (as was already the case on 32-bit - Windows platforms). - -- Calling Tk_Init twice is refused if the first call failed as that - may deadlock. - -- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to - accept it without potentially using an uninitialized pointer. - -- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods - assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF - patch numbers 1494885 and 1494902] - -- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. - [pybsddb project SF patch number 1466734] - -- bsddb: fix DBCursor.pget() bug with keyword argument names when no data - parameter is supplied. [SF pybsddb bug #1477863] - -- bsddb: the __len__ method of a DB object has been fixed to return correct - results. It could previously incorrectly return 0 in some cases. - Fixes SF bug 1493322 (pybsddb bug 1184012). - -- bsddb: the bsddb.dbtables Modify method now raises the proper error and - aborts the db transaction safely when a modifier callback fails. - Fixes SF python patch/bug #1408584. - -- bsddb: multithreaded DB access using the simple bsddb module interface - now works reliably. It has been updated to use automatic BerkeleyDB - deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry - database calls that would previously deadlock. [SF python bug #775414] - -- Patch #1446489: add support for the ZIP64 extensions to zipfile. - -- Patch #1506645: add Python wrappers for the curses functions - is_term_resized, resize_term and resizeterm. - -Library -------- - -- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox - functions. - -- Patch #812986: Update turtle output even if not tracing. - -- Patch #1494750: Destroy master after deleting children in - Tkinter.BaseWidget. - -- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. - -- Patch #763580: Add name and value arguments to Tkinter variable - classes. - -- Bug #1117556: SimpleHTTPServer now tries to find and use the system's - mime.types file for determining MIME types. - -- Bug #1339007: Shelf objects now don't raise an exception in their - __del__ method when initialization failed. - -- Patch #1455898: The MBCS codec now supports the incremental mode for - double-byte encodings. - -- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to - guarantee that adjacent triples in the return list always describe - non-adjacent blocks. Previously, a pair of matching blocks could end - up being described by multiple adjacent triples that formed a partition - of the matching pair. - -- Bug #1498146: fix optparse to handle Unicode strings in option help, - description, and epilog. - -- Bug #1366250: minor optparse documentation error. - -- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; - clarify docs. - -- The wsgiref package has been added to the standard library. - -- The functions update_wrapper() and wraps() have been added to the functools - module. These make it easier to copy relevant metadata from the original - function when writing wrapper functions. - -- The optional ``isprivate`` argument to ``doctest.testmod()``, and the - ``doctest.is_private()`` function, both deprecated in 2.4, were removed. - -- Patch #1359618: Speed up charmap encoder by using a trie structure - for lookup. - -- The functions in the ``pprint`` module now sort dictionaries by key - before computing the display. Before 2.5, ``pprint`` sorted a dictionary - if and only if its display required more than one line, although that - wasn't documented. The new behavior increases predictability; e.g., - using ``pprint.pprint(a_dict)`` in a doctest is now reliable. - -- Patch #1497027: try HTTP digest auth before basic auth in urllib2 - (thanks for J. J. Lee). - -- Patch #1496206: improve urllib2 handling of passwords with respect to - default HTTP and HTTPS ports. - -- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. - -- Patch #1281707: speed up gzip.readline. - -- Patch #1180296: Two new functions were added to the locale module: - format_string() to get the effect of "format % items" but locale-aware, - and currency() to format a monetary number with currency sign. - -- Patch #1486962: Several bugs in the turtle Tk demo module were fixed - and several features added, such as speed and geometry control. - -- Patch #1488881: add support for external file objects in bz2 compressed - tarfiles. - -- Patch #721464: pdb.Pdb instances can now be given explicit stdin and - stdout arguments, making it possible to redirect input and output - for remote debugging. - -- Patch #1484695: Update the tarfile module to version 0.8. This fixes - a couple of issues, notably handling of long file names using the - GNU LONGNAME extension. - -- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a - new flag when ``name`` is already the name of an option flag. - -- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler - package. - -- Patch #1472854: make the rlcompleter.Completer class usable on non- - UNIX platforms. - -- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. - -- Bug #1472827: correctly escape newlines and tabs in attribute values in - the saxutils.XMLGenerator class. - - -Build ------ - -- Bug #1502728: Correctly link against librt library on HP-UX. - -- OpenBSD 3.9 is supported now. - -- Patch #1492356: Port to Windows CE. - -- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. - -- Patch #1471883: Add --enable-universalsdk. - -C API ------ - -Tests ------ - -Tools ------ - -Documentation -------------- - - - -What's New in Python 2.5 alpha 2? -================================= - -*Release date: 27-APR-2006* - -Core and builtins ------------------ - -- Bug #1465834: 'bdist_wininst preinstall script support' was fixed - by converting these apis from macros into exported functions again: - - PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile - PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx - PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne - PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString - PyRun_String Py_CompileString - -- Under COUNT_ALLOCS, types are not necessarily immortal anymore. - -- All uses of PyStructSequence_InitType have been changed to initialize - the type objects only once, even if the interpreter is initialized - multiple times. - -- Bug #1454485, array.array('u') could crash the interpreter. This was - due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) - to unicode when it didn't make sense. 'u#' now requires a unicode string. - -- Py_UNICODE is unsigned. It was always documented as unsigned, but - due to a bug had a signed value in previous versions. - -- Patch #837242: ``id()`` of any Python object always gives a positive - number now, which might be a long integer. ``PyLong_FromVoidPtr`` and - ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has - never been correct to implement a ``__hash()__`` method that returns the - ``id()`` of an object: - - def __hash__(self): - return id(self) # WRONG - - because a hash result must be a (short) Python int but it was always - possible for ``id()`` to return a Python long. However, because ``id()`` - could return negative values before, on a 32-bit box an ``id()`` result - was always usable as a hash value before this patch. That's no longer - necessarily so. - -- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) - to load extension modules and now provides the dl module. As a result, - sys.setdlopenflags() now works correctly on these systems. (SF patch - #1454844) - -- Patch #1463867: enhanced garbage collection to allow cleanup of cycles - involving generators that have paused outside of any ``try`` or ``with`` - blocks. (In 2.5a1, a paused generator that was part of a reference - cycle could not be garbage collected, regardless of whether it was - paused in a ``try`` or ``with`` block.) - -Extension Modules ------------------ - -- Patch #1191065: Fix preprocessor problems on systems where recvfrom - is a macro. - -- Bug #1467952: os.listdir() now correctly raises an error if readdir() - fails with an error condition. - -- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. - -- Bug #1117761: bsddb.*open() no longer raises an exception when using - the cachesize parameter. - -- Bug #1149413: bsddb.*open() no longer raises an exception when using - a temporary db (file=None) with the 'n' flag to truncate on open. - -- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 - as older versions cause excessive test failures. - -- Patch #1062014: AF_UNIX sockets under Linux have a special - abstract namespace that is now fully supported. - -Library -------- - -- Bug #1223937: subprocess.CalledProcessError reports the exit status - of the process using the returncode attribute, instead of - abusing errno. - -- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes - a doctest to be skipped (the code is not run, and the expected output - or exception is ignored). - -- Fixed contextlib.nested to cope with exceptions being raised and - caught inside exit handlers. - -- Updated optparse module to Optik 1.5.1 (allow numeric constants in - hex, octal, or binary; add ``append_const`` action; keep going if - gettext cannot be imported; added ``OptionParser.destroy()`` method; - added ``epilog`` for better help generation). - -- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when - called from a thread spawned as a side effect of importing a module. - -- The pydoc module now supports documenting packages contained in - .zip or .egg files. - -- The pkgutil module now has several new utility functions, such - as ``walk_packages()`` to support working with packages that are either - in the filesystem or zip files. - -- The mailbox module can now modify and delete messages from - mailboxes, in addition to simply reading them. Thanks to Gregory - K. Johnson for writing the code, and to the 2005 Google Summer of - Code for funding his work. - -- The ``__del__`` method of class ``local`` in module ``_threading_local`` - returned before accomplishing any of its intended cleanup. - -- Patch #790710: Add breakpoint command lists in pdb. - -- Patch #1063914: Add Tkinter.Misc.clipboard_get(). - -- Patch #1191700: Adjust column alignment in bdb breakpoint lists. - -- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on - Windows. Bug #1469163. - -- The warnings, linecache, inspect, traceback, site, and doctest modules - were updated to work correctly with modules imported from zipfiles or - via other PEP 302 __loader__ objects. - -- Patch #1467770: Reduce usage of subprocess._active to processes which - the application hasn't waited on. - -- Patch #1462222: Fix Tix.Grid. - -- Fix exception when doing glob.glob('anything*/') - -- The pstats.Stats class accepts an optional stream keyword argument to - direct output to an alternate file-like object. - -Build ------ - -- The Makefile now has a reindent target, which runs reindent.py on - the library. - -- Patch #1470875: Building Python with MS Free Compiler - -- Patch #1161914: Add a python-config script. - -- Patch #1324762:Remove ccpython.cc; replace --with-cxx with - --with-cxx-main. Link with C++ compiler only if --with-cxx-main was - specified. (Can be overridden by explicitly setting LINKCC.) Decouple - CXX from --with-cxx-main, see description in README. - -- Patch #1429775: Link extension modules with the shared libpython. - -- Fixed a libffi build problem on MIPS systems. - -- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` - now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, - and "%zu" for unsigned integers of type ``size_t``. - -Tests ------ - -- test_contextlib now checks contextlib.nested can cope with exceptions - being raised and caught inside exit handlers. - -- test_cmd_line now checks operation of the -m and -c command switches - -- The test_contextlib test in 2.5a1 wasn't actually run unless you ran - it separately and by hand. It also wasn't cleaning up its changes to - the current Decimal context. - -- regrtest.py now has a -M option to run tests that test the new limits of - containers, on 64-bit architectures. Running these tests is only sensible - on 64-bit machines with more than two gigabytes of memory. The argument - passed is the maximum amount of memory for the tests to use. - -Tools ------ - -- Added the Python benchmark suite pybench to the Tools/ directory; - contributed by Marc-Andre Lemburg. - -Documentation -------------- - -- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. - -- PEP 343: Added Context Types section to the library reference - and attempted to bring other PEP 343 related documentation into - line with the implementation and/or python-dev discussions. - -- Bug #1337990: clarified that ``doctest`` does not support examples - requiring both expected output and an exception. - - -What's New in Python 2.5 alpha 1? -================================= - -*Release date: 05-APR-2006* - -Core and builtins ------------------ - -- PEP 338: -m command line switch now delegates to runpy.run_module - allowing it to support modules in packages and zipfiles - -- On Windows, .DLL is not an accepted file name extension for - extension modules anymore; extensions are only found if they - end in .PYD. - -- Bug #1421664: sys.stderr.encoding is now set to the same value as - sys.stdout.encoding. - -- __import__ accepts keyword arguments. - -- Patch #1460496: round() now accepts keyword arguments. - -- Fixed bug #1459029 - unicode reprs were double-escaped. - -- Patch #1396919: The system scope threads are reenabled on FreeBSD - 5.4 and later versions. - -- Bug #1115379: Compiling a Unicode string with an encoding declaration - now gives a SyntaxError. - -- Previously, Python code had no easy way to access the contents of a - cell object. Now, a ``cell_contents`` attribute has been added - (closes patch #1170323). - -- Patch #1123430: Python's small-object allocator now returns an arena to - the system ``free()`` when all memory within an arena becomes unused - again. Prior to Python 2.5, arenas (256KB chunks of memory) were never - freed. Some applications will see a drop in virtual memory size now, - especially long-running applications that, from time to time, temporarily - use a large number of small objects. Note that when Python returns an - arena to the platform C's ``free()``, there's no guarantee that the - platform C library will in turn return that memory to the operating system. - The effect of the patch is to stop making that impossible, and in tests it - appears to be effective at least on Microsoft C and gcc-based systems. - Thanks to Evan Jones for hard work and patience. - -- Patch #1434038: property() now uses the getter's docstring if there is - no "doc" argument given. This makes it possible to legitimately use - property() as a decorator to produce a read-only property. - -- PEP 357, patch 1436368: add an __index__ method to int/long and a matching - nb_index slot to the PyNumberMethods struct. The slot is consulted instead - of requiring an int or long in slicing and a few other contexts, enabling - other objects (e.g. Numeric Python's integers) to be used as slice indices. - -- Fixed various bugs reported by Coverity's Prevent tool. - -- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the - new exception base class, BaseException, which has a new message attribute. - KeyboardInterrupt and SystemExit to directly inherit from BaseException now. - Raising a string exception now raises a DeprecationWarning. - -- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be - explicitly relative, using 'from .module import name' to mean 'from the same - package as this module is in. Imports without dots still default to the - old relative-then-absolute, unless 'from __future__ import - absolute_import' is used. - -- Properly check if 'warnings' raises an exception (usually when a filter set - to "error" is triggered) when raising a warning for raising string - exceptions. - -- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. - The name was removed from Include/code.h. - -- PEP 308: conditional expressions were added: (x if cond else y). - -- Patch 1433928: - - The copy module now "copies" function objects (as atomic objects). - - dict.__getitem__ now looks for a __missing__ hook before raising - KeyError. - -- PEP 343: with statement implemented. Needs ``from __future__ import - with_statement``. Use of 'with' as a variable will generate a warning. - Use of 'as' as a variable will also generate a warning (unless it's - part of an import statement). - The following objects have __context__ methods: - - The built-in file type. - - The thread.LockType type. - - The following types defined by the threading module: - Lock, RLock, Condition, Semaphore, BoundedSemaphore. - - The decimal.Context class. - -- Fix the encodings package codec search function to only search - inside its own package. Fixes problem reported in patch #1433198. - - Note: Codec packages should implement and register their own - codec search function. PEP 100 has the details. - -- PEP 353: Using ``Py_ssize_t`` as the index type. - -- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging - info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) - now allow Python to make use of memory blocks exceeding 2**32 bytes for - some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited - to 4-byte allocations before. - -- Patch #1400181, fix unicode string formatting to not use the locale. - This is how string objects work. u'%f' could use , instead of . - for the decimal point. Now both strings and unicode always use periods. - -- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. - configure would break checking curses.h. - -- Bug #959576: The pwd module is now builtin. This allows Python to be - built on UNIX platforms without $HOME set. - -- Bug #1072182, fix some potential problems if characters are signed. - -- Bug #889500, fix line number on SyntaxWarning for global declarations. - -- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. - -- Support for converting hex strings to floats no longer works. - This was not portable. float('0x3') now raises a ValueError. - -- Patch #1382163: Expose Subversion revision number to Python. New C API - function Py_GetBuildNumber(). New attribute sys.subversion. Build number - is now displayed in interactive prompt banner. - -- Implementation of PEP 341 - Unification of try/except and try/finally. - "except" clauses can now be written together with a "finally" clause in - one try statement instead of two nested ones. Patch #1355913. - -- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec - now encodes backslash correctly. - -- Patch #1350409: Work around signal handling bug in Visual Studio 2005. - -- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs - and long longs. - -- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" - It was possible for dlerror() to return a NULL pointer, so - it will now use a default error message in this case. - -- Replaced most Unicode charmap codecs with new ones using the - new Unicode translate string feature in the builtin charmap - codec; the codecs were created from the mapping tables available - at ftp.unicode.org and contain a few updates (e.g. the Mac OS - encodings now include a mapping for the Apple logo) - -- Added a few more codecs for Mac OS encodings - -- Sped up some Unicode operations. - -- A new AST parser implementation was completed. The abstract - syntax tree is available for read-only (non-compile) access - to Python code; an _ast module was added. - -- SF bug #1167751: fix incorrect code being produced for generator expressions. - The following code now raises a SyntaxError: foo(a = i for i in range(10)) - -- SF Bug #976608: fix SystemError when mtime of an imported file is -1. - -- SF Bug #887946: fix segfault when redirecting stdin from a directory. - Provide a warning when a directory is passed on the command line. - -- Fix segfault with invalid coding. - -- SF bug #772896: unknown encoding results in MemoryError. - -- All iterators now have a Boolean value of True. Formerly, some iterators - supported a __len__() method which evaluated to False when the iterator - was empty. - -- On 64-bit platforms, when __len__() returns a value that cannot be - represented as a C int, raise OverflowError. - -- test__locale is skipped on OS X < 10.4 (only partial locale support is - present). - -- SF bug #893549: parsing keyword arguments was broken with a few format - codes. - -- Changes donated by Elemental Security to make it work on AIX 5.3 - with IBM's 64-bit compiler (SF patch #1284289). This also closes SF - bug #105470: test_pwd fails on 64bit system (Opteron). - -- Changes donated by Elemental Security to make it work on HP-UX 11 on - Itanium2 with HP's 64-bit compiler (SF patch #1225212). - -- Disallow keyword arguments for type constructors that don't use them - (fixes bug #1119418). - -- Forward UnicodeDecodeError into SyntaxError for source encoding errors. - -- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for - exceptions that cause a function to exit. - -- The implementation of set() and frozenset() was revised to use its - own internal data structure. Memory consumption is reduced by 1/3 - and there are modest speed-ups as well. The API is unchanged. - -- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). - -- SF bug #1229429: PyObject_CallMethod failed to decrement some - reference counts in some error exit cases. - -- SF bug #1185883: Python's small-object memory allocator took over - a block managed by the platform C library whenever a realloc specified - a small new size. However, there's no portable way to know then how - much of the address space following the pointer is valid, so there's no - portable way to copy data from the C-managed block into Python's - small-object space without risking a memory fault. Python's small-object - realloc now leaves such blocks under the control of the platform C - realloc. - -- SF bug #1232517: An overflow error was not detected properly when - attempting to convert a large float to an int in os.utime(). - -- SF bug #1224347: hex longs now print with lowercase letters just - like their int counterparts. - -- SF bug #1163563: the original fix for bug #1010677 ("thread Module - Breaks PyGILState_Ensure()") broke badly in the case of multiple - interpreter states; back out that fix and do a better job (see - http://mail.python.org/pipermail/python-dev/2005-June/054258.html - for a longer write-up of the problem). - -- SF patch #1180995: marshal now uses a binary format by default when - serializing floats. - -- SF patch #1181301: on platforms that appear to use IEEE 754 floats, - the routines that promise to produce IEEE 754 binary representations - of floats now simply copy bytes around. - -- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP - 278. - -- patch #1109424: int, long, float, complex, and unicode now check for the - proper magic slot for type conversions when subclassed. Previously the - magic slot was ignored during conversion. Semantics now match the way - subclasses of str always behaved. int/long/float, conversion of an instance - to the base class has been moved to the proper nb_* magic slot and out of - PyNumber_*(). - Thanks Walter D?rwald. - -- Descriptors defined in C with a PyGetSetDef structure, where the setter is - NULL, now raise an AttributeError when attempting to set or delete the - attribute. Previously a TypeError was raised, but this was inconsistent - with the equivalent pure-Python implementation. - -- It is now safe to call PyGILState_Release() before - PyEval_InitThreads() (note that if there is reason to believe there - are multiple threads around you still must call PyEval_InitThreads() - before using the Python API; this fix is for extension modules that - have no way of knowing if Python is multi-threaded yet). - -- Typing Ctrl-C whilst raw_input() was waiting in a build with threads - disabled caused a crash. - -- Bug #1165306: instancemethod_new allowed the creation of a method - with im_class == im_self == NULL, which caused a crash when called. - -- Move exception finalisation later in the shutdown process - this - fixes the crash seen in bug #1165761 - -- Added two new builtins, any() and all(). - -- Defining a class with empty parentheses is now allowed - (e.g., ``class C(): pass`` is no longer a syntax error). - Patch #1176012 added support to the 'parser' module and 'compiler' package - (thanks to logistix for that added support). - -- Patch #1115086: Support PY_LONGLONG in structmember. - -- Bug #1155938: new style classes did not check that __init__() was - returning None. - -- Patch #802188: Report characters after line continuation character - ('\') with a specific error message. - -- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. - -- Bug #1124295: the __name__ attribute of file objects was - inadvertently made inaccessible in restricted mode. - -- Bug #1074011: closing sys.std{out,err} now causes a flush() and - an ferror() call. - -- min() and max() now support key= arguments with the same meaning as in - list.sort(). - -- The peephole optimizer now performs simple constant folding in expressions: - (2+3) --> (5). - -- set and frozenset objects can now be marshalled. SF #1098985. - -- Bug #1077106: Poor argument checking could cause memory corruption - in calls to os.read(). - -- The parser did not complain about future statements in illegal - positions. It once again reports a syntax error if a future - statement occurs after anything other than a doc string. - -- Change the %s format specifier for str objects so that it returns a - unicode instance if the argument is not an instance of basestring and - calling __str__ on the argument returns a unicode instance. - -- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the - current thread state when the auto-GIL-state machinery knows about - it (since the thread state is being deleted, continuing to remember it - can't help, but can hurt if another thread happens to get created with - the same thread id). - -Extension Modules ------------------ - -- Patch #1380952: fix SSL objects timing out on consecutive read()s - -- Patch #1309579: wait3 and wait4 were added to the posix module. - -- Patch #1231053: The audioop module now supports encoding/decoding of alaw. - In addition, the existing ulaw code was updated. - -- RFE #567972: Socket objects' family, type and proto properties are - now exposed via new attributes. - -- Everything under lib-old was removed. This includes the following modules: - Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, - lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, - util, whatsound, whrandom, zmod - -- The following modules were removed: regsub, reconvert, regex, regex_syntax. - -- re and sre were swapped, so help(re) provides full help. importing sre - is deprecated. The undocumented re.engine variable no longer exists. - -- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle - SS2 (single-shift 2) escape sequences correctly. - -- The unicodedata module was updated to the 4.1 version of the Unicode - database. The 3.2 version is still available as unicodedata.db_3_2_0 - for applications that require this specific version (such as IDNA). - -- The timing module is no longer built by default. It was deprecated - in PEP 4 in Python 2.0 or earlier. - -- Patch 1433928: Added a new type, defaultdict, to the collections module. - This uses the new __missing__ hook behavior added to dict (see above). - -- Bug #854823: socketmodule now builds on Sun platforms even when - INET_ADDRSTRLEN is not defined. - -- Patch #1393157: os.startfile() now has an optional argument to specify - a "command verb" to invoke on the file. - -- Bug #876637, prevent stack corruption when socket descriptor - is larger than FD_SETSIZE. - -- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. - mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. - mmap.mmap(0, size) should not be used on Windows for anonymous memory. - -- Patch #1422385: The nis module now supports access to domains other - than the system default domain. - -- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps - are reported, the limit on path name lengths is removed, and stat reports - WindowsError now (instead of OSError). - -- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. - -- Bug #1413192, fix seg fault in bsddb if a transaction was deleted - before the env. - -- Patch #1103116: Basic AF_NETLINK support. - -- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) - -- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. - Also fix ungetmouse() which did not accept arguments properly. - The code now conforms to the documented signature. - -- Bug #1400115, Fix segfault when calling curses.panel.userptr() - without prior setting of the userptr. - -- Fix 64-bit problems in bsddb. - -- Patch #1365916: fix some unsafe 64-bit mmap methods. - -- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build - problem on AIX. - -- Bug #869197: os.setgroups rejects long integer arguments - -- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint - -- Bug #1344508, Fix UNIX mmap leaking file descriptors - -- Patch #1338314, Bug #1336623: fix tarfile so it can extract - REGTYPE directories from tarfiles written by old programs. - -- Patch #1407992, fixes broken bsddb module db associate when using - BerkeleyDB 3.3, 4.0 or 4.1. - -- Get bsddb module to build with BerkeleyDB version 4.4 - -- Get bsddb module to build with BerkeleyDB version 3.2 - -- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, - but Python incorrectly assumes it is in UTF-8 format - -- Fix parse errors in the readline module when compiling without threads. - -- Patch #1288833: Removed thread lock from socket.getaddrinfo on - FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). - -- Patches #1298449 and #1298499: Add some missing checks for error - returns in cStringIO.c. - -- Patch #1297028: fix segfault if call type on MultibyteCodec, - MultibyteStreamReader, or MultibyteStreamWriter - -- Fix memory leak in posix.access(). - -- Patch #1213831: Fix typo in unicodedata._getcode. - -- Bug #1007046: os.startfile() did not accept unicode strings encoded in - the file system encoding. - -- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for - platforms that don't have inet_aton(). - -- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. - -- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one - line without newlines. - -- Bug #728515: mmap.resize() now resizes the file on Unix as it did - on Windows. - -- Patch #1180695: Add nanosecond stat resolution, and st_gen, - st_birthtime for FreeBSD. - -- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for - the request code argument, which results in more C-like behaviour - for large or negative values. - -- Bug #1234979: For the argument of thread.Lock.acquire, the Windows - implementation treated all integer values except 1 as false. - -- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. - -- Patch #1212117: os.stat().st_flags is now accessible as a attribute - if available on the platform. - -- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if - available on the platform. - -- Bug #1166660: The readline module could segfault if hook functions - were set in a different thread than that which called readline. - -- collections.deque objects now support a remove() method. - -- operator.itemgetter() and operator.attrgetter() now support retrieving - multiple fields. This provides direct support for sorting on multiple - keys (primary, secondary, etc). - -- os.access now supports Unicode path names on non-Win32 systems. - -- Patches #925152, #1118602: Avoid reading after the end of the buffer - in pyexpat.GetInputContext. - -- Patches #749830, #1144555: allow UNIX mmap size to default to current - file size. - -- Added functional.partial(). See PEP309. - -- Patch #1093585: raise a ValueError for negative history items in readline. - {remove_history,replace_history} - -- The spwd module has been added, allowing access to the shadow password - database. - -- stat_float_times is now True. - -- array.array objects are now picklable. - -- the cPickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- itertools.islice() now accepts None for the start and step arguments. - This allows islice() to work more readily with slices: - islice(s.start, s.stop, s.step) - -- datetime.datetime() now has a strptime class method which can be used to - create datetime object using a string and format. - -- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc - with the implementation from http://sourceforge.net/projects/libmd5-rfc/. - -Library -------- - -- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have - been renamed to have only a single underscore prefix. This was done to - make subclassing easier. - -- PEP 338: new module runpy defines a run_module function to support - executing modules which provide access to source code or a code object - via the PEP 302 import mechanisms. - -- The email module's parsedate_tz function now sets the daylight savings - flag to -1 (unknown) since it can't tell from the date whether it should - be set. - -- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results - now sport attributes that provide access to the parts of the result. - -- Patch #1462498: sgmllib now handles entity and character references - in attribute values. - -- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides - a DB-API interface in the standard library. You'll need sqlite 3.0.8 or - later to build this - if you have an earlier version, the C extension - module will not be built. - -- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts - aren't officially supported here, and trying to use them will probably - raise an exception some day. But dicts have been allowed, and "mostly - worked", so support for them won't go away without warning. - -- Bug #1445068: getpass.getpass() can now be given an explicit stream - argument to specify where to write the prompt. - -- Patch #1462313, bug #1443328: the pickle modules now can handle classes - that have __private names in their __slots__. - -- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. - -- patch #1457316: "setup.py upload" now supports --identity to select the - key to be used for signing the uploaded code. - -- Queue.Queue objects now support .task_done() and .join() methods - to make it easier to monitor when daemon threads have completed - processing all enqueued tasks. Patch #1455676. - -- popen2.Popen objects now preserve the command in a .cmd attribute. - -- Added the ctypes ffi package. - -- email 4.0 package now integrated. This is largely the same as the email 3.0 - package that was included in Python 2.3, except that PEP 8 module names are - now used (e.g. mail.message instead of email.Message). The MIME classes - have been moved to a subpackage (e.g. email.mime.text instead of - email.MIMEText). The old names are still supported for now. Several - deprecated Message methods have been removed and lots of bugs have been - fixed. More details can be found in the email package documentation. - -- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object - (a subclass of tuple) that provides incremental decoders and encoders - (a way to use stateful codecs without the stream API). Python functions - codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well - as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() - have been added. - -- Patch #1359365: Calling next() on a closed StringIO.String object raises - a ValueError instead of a StopIteration now (like file and cString.String do). - cStringIO.StringIO.isatty() will raise a ValueError now if close() has been - called before (like file and StringIO.StringIO do). - -- A regrtest option -w was added to re-run failed tests in verbose mode. - -- Patch #1446372: quit and exit can now be called from the interactive - interpreter to exit. - -- The function get_count() has been added to the gc module, and gc.collect() - grew an optional 'generation' argument. - -- A library msilib to generate Windows Installer files, and a distutils - command bdist_msi have been added. - -- PEP 343: new module contextlib.py defines decorator @contextmanager - and helpful context managers nested() and closing(). - -- The compiler package now supports future imports after the module docstring. - -- Bug #1413790: zipfile now sanitizes absolute archive names that are - not allowed by the specs. - -- Patch #1215184: FileInput now can be given an opening hook which can - be used to control how files are opened. - -- Patch #1212287: fileinput.input() now has a mode parameter for - specifying the file mode input files should be opened with. - -- Patch #1215184: fileinput now has a fileno() function for getting the - current file number. - -- Patch #1349274: gettext.install() now optionally installs additional - translation functions other than _() in the builtin namespace. - -- Patch #1337756: fileinput now accepts Unicode filenames. - -- Patch #1373643: The chunk module can now read chunks larger than - two gigabytes. - -- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. - -- Bug #1430298: It is now possible to send a mail with an empty - return address using smtplib. - -- Bug #1432260: The names of lambda functions are now properly displayed - in pydoc. - -- Patch #1412872: zipfile now sets the creator system to 3 (Unix) - unless the system is Win32. - -- Patch #1349118: urllib now supports user:pass@ style proxy - specifications, raises IOErrors when proxies for unsupported protocols - are defined, and uses the https proxy on https redirections. - -- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. - -- Bug #1407902: Add support for sftp:// URIs to urlparse. - -- Bug #1371247: Update Windows locale identifiers in locale.py. - -- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters - any more. - -- Bug #1403410: The warnings module now doesn't get confused - when it can't find out the module name it generates a warning for. - -- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. - -- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode - -- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise - LoadError as documented, instead of IOError. For compatibility, - LoadError subclasses IOError. - -- Added the hashlib module. It provides secure hash functions for MD5 and - SHA1, 224, 256, 384, and 512. Note that recent developments make the - historic MD5 and SHA1 unsuitable for cryptographic-strength applications. - In - Ronald L. Rivest offered this advice for Python: - - "The consensus of researchers in this area (at least as - expressed at the NIST Hash Function Workshop 10/31/05), - is that SHA-256 is a good choice for the time being, but - that research should continue, and other alternatives may - arise from this research. The larger SHA's also seem OK." - -- Added a subset of Fredrik Lundh's ElementTree package. Available - modules are xml.etree.ElementTree, xml.etree.ElementPath, and - xml.etree.ElementInclude, from ElementTree 1.2.6. - -- Patch #1162825: Support non-ASCII characters in IDLE window titles. - -- Bug #1365984: urllib now opens "data:" URLs again. - -- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception - is raised within the method itself on a previous call (e.g., passing in an - illegal argument) - -- Bug #1340337: change time.strptime() to always return ValueError when there - is an error in the format string. - -- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). - -- Bug #729103: pydoc.py: Fix docother() method to accept additional - "parent" argument. - -- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes - for padding. - -- Bug #1296004: httplib.py: Limit maximal amount of data read from the - socket to avoid a MemoryError on Windows. - -- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE - to get the correct encoding. - -- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of - languages. - -- Patch #1268314: Cache lines in StreamReader.readlines for performance. - -- Bug #1290505: Fix clearing the regex cache for time.strptime(). - -- Bug #1167128: Fix size of a symlink in a tarfile to be 0. - -- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook - functionality. - -- Bug #1163178: Make IDNA return an empty string when the input is empty. - -- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output - separator and do not output trailing semicolon. - -- Patch #1062060: urllib.urlretrieve() now raises a new exception, named - ContentTooShortException, when the actually downloaded size does not - match the Content-Length header. - -- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. - -- Bug #1178484: Return complete lines from codec stream readers - even if there is an exception in later lines, resulting in - correct line numbers for decoding errors in source code. - -- Bug #1192315: Disallow negative arguments to clear() in pdb. - -- Patch #827386: Support absolute source paths in msvccompiler.py. - -- Patch #1105730: Apply the new implementation of commonprefix in posixpath - to ntpath, macpath, os2emxpath and riscospath. - -- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus - __hasattr__ and __delattr__ methods on class Tk that were breaking - Tkdnd. - -- Bug #1015140: disambiguated the term "article id" in nntplib docs and - docstrings to either "article number" or "message id". - -- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a - parameter, but uses the usual "kwargs=None". - -- textwrap now processes text chunks at O(n) speed instead of O(n**2). - Patch #1209527 (Contributed by Connelly). - -- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code - to W3C name (404 -> 'Not Found'). RFE #1216944. - -- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, - as this can cause problems with apps closing all file descriptors. - -- Bug #839151: Fix an attempt to access sys.argv in the warnings module; - it can be missing in embedded interpreters - -- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. - -- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via - error messages. - -- Bug #1108948: Cookie.py produced invalid JavaScript code. - -- The tokenize module now detects and reports indentation errors. - Bug #1224621. - -- The tokenize module has a new untokenize() function to support a full - roundtrip from lexed tokens back to Python source code. In addition, - the generate_tokens() function now accepts a callable argument that - terminates by raising StopIteration. - -- Bug #1196315: fix weakref.WeakValueDictionary constructor. - -- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first - component of the path. - -- Patch #1120353: The xmlrpclib module provides better, more transparent, - support for datetime.{datetime,date,time} objects. With use_datetime set - to True, applications shouldn't have to fiddle with the DateTime wrapper - class at all. - -- distutils.commands.upload was added to support uploading distribution - files to PyPI. - -- distutils.commands.register now encodes the data as UTF-8 before posting - them to PyPI. - -- decimal operator and comparison methods now return NotImplemented - instead of raising a TypeError when interacting with other types. This - allows other classes to implement __radd__ style methods and have them - work as expected. - -- Bug #1163325: Decimal infinities failed to hash. Attempting to - hash a NaN raised an InvalidOperation instead of a TypeError. - -- Patch #918101: Add tarfile open mode r|* for auto-detection of the - stream compression; add, for symmetry reasons, r:* as a synonym of r. - -- Patch #1043890: Add extractall method to tarfile. - -- Patch #1075887: Don't require MSVC in distutils if there is nothing - to build. - -- Patch #1103407: Properly deal with tarfile iterators when untarring - symbolic links on Windows. - -- Patch #645894: Use getrusage for computing the time consumption in - profile.py if available. - -- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. - -- Patch #1117454: Remove code to special-case cookies without values - in LWPCookieJar. - -- Patch #1117339: Add cookielib special name tests. - -- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. - -- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. - -- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. - -- Patch #1104111: Alter setup.py --help and --help-commands. - -- Patch #1121234: Properly cleanup _exit and tkerror commands. - -- Patch #1049151: xdrlib now unpacks booleans as True or False. - -- Fixed bug in a NameError bug in cookielib. Patch #1116583. - -- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This - disables recursive traversal through instance attributes, which can - be exploited in various ways. - -- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec - flags on the HTTP listening socket. - -- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. - Fixed by reading the HTTP body in chunks instead of one big socket.read(). - -- Patches #893642, #1039083: add allow_none, encoding arguments to - constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. - -- Bug #1110478: Revert os.environ.update to do putenv again. - -- Bug #1103844: fix distutils.install.dump_dirs() with negated options. - -- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. - -- Enhancements to the csv module: - - + Dialects are now validated by the underlying C code, better - reflecting its capabilities, and improving its compliance with - PEP 305. - + Dialect parameter parsing has been re-implemented to improve error - reporting. - + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 - dictates. - + the parser now removes the escapechar prefix from escaped characters. - + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric - types, rather than any object that can be represented as a numeric. - + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields - to floats. - + reader now allows \r characters to be quoted (previously it only allowed - \n to be quoted). - + writer doublequote handling improved. - + Dialect classes passed to the module are no longer instantiated by - the module before being parsed (the former validation scheme required - this, but the mechanism was unreliable). - + The dialect registry now contains instances of the internal - C-coded dialect type, rather than references to python objects. - + the internal c-coded dialect type is now immutable. - + register_dialect now accepts the same keyword dialect specifications - as the reader and writer, allowing the user to register dialects - without first creating a dialect class. - + a configurable limit to the size of parsed fields has been added - - previously, an unmatched quote character could result in the entire - file being read into the field buffer before an error was reported. - + A new module method csv.field_size_limit() has been added that sets - the parser field size limit (returning the former limit). The initial - limit is 128kB. - + A line_num attribute has been added to the reader object, which tracks - the number of lines read from the source iterator. This is not - the same as the number of records returned, as records can span - multiple lines. - + reader and writer objects were not being registered with the cyclic-GC. - This has been fixed. - -- _DummyThread objects in the threading module now delete self.__block that is - inherited from _Thread since it uses up a lock allocated by 'thread'. The - lock primitives tend to be limited in number and thus should not be wasted on - a _DummyThread object. Fixes bug #1089632. - -- The imghdr module now detects Exif files. - -- StringIO.truncate() now correctly adjusts the size attribute. - (Bug #951915). - -- locale.py now uses an updated locale alias table (built using - Tools/i18n/makelocalealias.py, a tool to parse the X11 locale - alias file); the encoding lookup was enhanced to use Python's - encoding alias table. - -- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. - -- the pickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- optparse now optionally imports gettext. This allows its use in setup.py. - -- the pickle module no longer uses the deprecated bin parameter. - -- the shelve module no longer uses the deprecated binary parameter. - -- the pstats module no longer uses the deprecated ignore() method. - -- the filecmp module no longer uses the deprecated use_statcache argument. - -- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully - extended or overridden by subclasses. Formerly, the subclassed method would - be ignored by the rest of the module. (Bug #1078905). - -- heapq.nsmallest() and heapq.nlargest() now support key= arguments with - the same meaning as in list.sort(). - -- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only - once when a size argument is given. This prevents a buffer overflow in the - tokenizer with very long source lines. - -- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called - immediately after creating the object, without any intervening - ``.decompress()`` calls. - -- The reconvert.quote function can now emit triple-quoted strings. The - reconvert module now has some simple documentation. - -- ``UserString.MutableString`` now supports negative indices in - ``__setitem__`` and ``__delitem__`` - -- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") - correctly. - -- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by - ``codecs.StreamReader.readline()`` has a trailing "\r", read one more - character even if the user has passed a size parameter to get a proper - line ending. Remove the special handling of a "\r\n" that has been split - between two lines. - -- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain - about illegal code points. The codec now supports PEP 293 style error - handlers. - -- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads - from the input stream, so that the output is a byte string in the correct - encoding instead of a unicode string. - -- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than - considering it exactly like a '*'. - -- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to - ``encodings.aliases``. - -- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. - -- Patch #1413711: Certain patterns of differences were making difflib - touch the recursion limit. - -- Bug #947906: An object oriented interface has been added to the calendar - module. It's possible to generate HTML calendar now and the module can be - called as a script (e.g. via ``python -mcalendar``). Localized month and - weekday names can be ouput (even if an exotic encoding is used) using - special classes that use unicode. - -Build ------ - -- Fix test_float, test_long, and test_struct failures on Tru64 with gcc - by using -mieee gcc option. - -- Patch #1432345: Make python compile on DragonFly. - -- Build support for Win64-AMD64 was added. - -- Patch #1428494: Prefer linking against ncursesw over ncurses library. - -- Patch #881820: look for openpty and forkpty also in libbsd. - -- The sources of zlib are now part of the Python distribution (zlib 1.2.3). - The zlib module is now builtin on Windows. - -- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. - -- Bug #1189330: configure did not correctly determine the necessary - value of LINKCC if python was built with GCC 4.0. - -- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security - vulnerability in zlib 1.2.1 and 1.2.2. - -- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler - flags that change binary compatibility. Changes were also made to - distutils.sysconfig to also use the environment variable when used during - compilation of the interpreter and of C extensions through distutils. - -- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, - and linking has changed (prebinding is now deprecated, and libcc_dynamic - no longer exists). This configure patch makes things right. - -- Bug #1158607: Build with --disable-unicode again. - -- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is - defined. Discovered as a result of not being able to build on OS X. - -- setup.py now uses the directories specified in LDFLAGS using the -L option - and in CPPFLAGS using the -I option for adding library and include - directories, respectively, for compiling extension modules against. This has - led to the core being compiled using the values in CPPFLAGS. It also removes - the need for the special-casing of both DarwinPorts and Fink for darwin since - the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, - ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for - Fink, ``-I/opt/local/include`` for DarwinPorts). - -- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone - to exist in the struct (not required by either ISO C nor the UNIX 2 spec). - Tests for sanity in tzname when HAVE_TZNAME defined were also defined. - Closes bug #1096244. Thanks Gregory Bond. - -C API ------ - -- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to - ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory - is obtained via the ``PyObject_`` family, it must be released via the - ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has - always been officially true, but when Python's small-object allocator was - introduced, an attempt was made to cater to a few extension modules - discovered at the time that obtained memory via ``PyObject_New`` but - released it via ``PyMem_DEL``. It's years later, and if such code still - exists it will fail now (probably with segfaults, but calling wrong - low-level memory management functions can yield many symptoms). - -- Added a C API for set and frozenset objects. - -- Removed PyRange_New(). - -- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the - mapping argument now. This string is used as a mapping table. Byte values - greater than the length of the string and 0xFFFE are treated as undefined - mappings. - - -Tests ------ - -- In test_os, st_?time is now truncated before comparing it with ST_?TIME. - -- Patch #1276356: New resource "urlfetch" is implemented. This enables - even impatient people to run tests that require remote files. - - -Documentation -------------- - -- Bug #1402224: Add warning to dl docs about crashes. - -- Bug #1396471: Document that Windows' ftell() can return invalid - values for text files with UNIX-style line endings. - -- Bug #1274828: Document os.path.splitunc(). - -- Bug #1190204: Clarify which directories are searched by site.py. - -- Bug #1193849: Clarify os.path.expanduser() documentation. - -- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. - -- Bug #755617: Document the effects of os.chown() on Windows. - -- Patch #1180012: The documentation for modulefinder is now in the library reference. - -- Patch #1213031: Document that os.chown() accepts argument values of -1. - -- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. - -- Bug #1175022: Correct the example code for property(). - -- Document the IterableUserDict class in the UserDict module. - Closes bug #1166582. - -- Remove all latent references for "Macintosh" that referred to semantics for - Mac OS 9 and change to reflect the state for OS X. - Closes patch #1095802. Thanks Jack Jansen. - -Mac ---- - - -New platforms -------------- - -- FreeBSD 7 support is added. - - -Tools/Demos ------------ - -- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that - directory for syntax highlighting in Vim. Vim directory was added and placed - vimrc to it (was previous up a level). - -- Added two new files to Tools/scripts: pysource.py, which recursively - finds Python source files, and findnocoding.py, which finds Python - source files that need an encoding declaration. - Patch #784089, credits to Oleg Broytmann. - -- Bug #1072853: pindent.py used an uninitialized variable. - -- Patch #1177597: Correct Complex.__init__. - -- Fixed a display glitch in Pynche, which could cause the right arrow to - wiggle over by a pixel. - ---- **(For information about older versions, consult the HISTORY file.)** From buildbot at python.org Thu Feb 21 20:53:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 19:53:40 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080221195340.F03CA1E4010@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2821 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=27882 and list=[27888] 1 test failed: test_socketserver sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 20:56:24 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 20:56:24 +0100 (CET) Subject: [Python-checkins] r60929 - in python/branches/libffi3-branch/Modules/_ctypes/libffi: LICENSE README src/x86/ffi.c src/x86/ffi64.c src/x86/ffitarget.h src/x86/sysv.S src/x86/unix64.S src/x86/win32.S Message-ID: <20080221195624.C75471E4029@bag.python.org> Author: thomas.heller Date: Thu Feb 21 20:56:24 2008 New Revision: 60929 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/LICENSE python/branches/libffi3-branch/Modules/_ctypes/libffi/README python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/win32.S Log: Synchronize some files with libffi-3.0.2, while keeping the changes made in Python svn. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/LICENSE ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/LICENSE (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/LICENSE Thu Feb 21 20:56:24 2008 @@ -1,4 +1,5 @@ -libffi - Copyright (c) 1996-2003 Red Hat, Inc. +libffi - Copyright (c) 1996-2008 Red Hat, Inc and others. +See source files for details. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -11,10 +12,10 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/README ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/README (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/README Thu Feb 21 20:56:24 2008 @@ -1,78 +1,63 @@ -This directory contains the libffi package, which is not part of GCC but -shipped with GCC as convenience. - Status ====== -libffi-2.00 has not been released yet! This is a development snapshot! - -libffi-1.20 was released on October 5, 1998. Check the libffi web -page for updates: . +libffi-3.0.2 was released on February 21, 2008. Check the libffi web +page for updates: . What is libffi? =============== Compilers for high level languages generate code that follow certain -conventions. These conventions are necessary, in part, for separate -compilation to work. One such convention is the "calling -convention". The "calling convention" is essentially a set of -assumptions made by the compiler about where function arguments will -be found on entry to a function. A "calling convention" also specifies -where the return value for a function is found. +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the "calling convention". +The "calling convention" is a set of assumptions made by the compiler +about where function arguments will be found on entry to a function. +A "calling convention" also specifies where the return value for a +function is found. Some programs may not know at the time of compilation what arguments -are to be passed to a function. For instance, an interpreter may be +are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call -a given function. Libffi can be used in such programs to provide a +a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code. The libffi library provides a portable, high level programming -interface to various calling conventions. This allows a programmer to +interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run -time. +time. -Ffi stands for Foreign Function Interface. A foreign function +FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code -written in one language to call code written in another language. The +written in one language to call code written in another language. The libffi library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above libffi that handles type conversions for values passed between the two languages. -Supported Platforms and Prerequisites -===================================== - -Libffi has been ported to: - - SunOS 4.1.3 & Solaris 2.x (SPARC-V8, SPARC-V9) - - Irix 5.3 & 6.2 (System V/o32 & n32) - - Intel x86 - Linux (System V ABI) - - Alpha - Linux and OSF/1 - - m68k - Linux (System V ABI) - - PowerPC - Linux (System V ABI, Darwin, AIX) +Supported Platforms +=================== - ARM - Linux (System V ABI) - -Libffi has been tested with the egcs 1.0.2 gcc compiler. Chances are -that other versions will work. Libffi has also been built and tested -with the SGI compiler tools. - -On PowerPC, the tests failed (see the note below). - -You must use GNU make to build libffi. SGI's make will not work. -Sun's probably won't either. - -If you port libffi to another platform, please let me know! I assume -that some will be easy (x86 NetBSD), and others will be more difficult -(HP). +Libffi has been ported to many different platforms, although this +release was only tested on: + arm oabi linux + arm eabi linux + hppa linux + mips o32 linux (little endian) + powerpc darwin + powerpc64 linux + sparc solaris (SPARC V9 ABI) + x86 cygwin + x86 darwin + x86 freebsd + x86 linux + x86-64 linux + x86-64 OS X + +Please send additional platform test results to +libffi-discuss at sourceware.org. Installing libffi ================= @@ -101,216 +86,16 @@ Configure has many other options. Use "configure --help" to see them all. Once configure has finished, type "make". Note that you must be using -GNU make. SGI's make will not work. Sun's probably won't either. -You can ftp GNU make from prep.ai.mit.edu:/pub/gnu. +GNU make. You can ftp GNU make from prep.ai.mit.edu:/pub/gnu. -To ensure that libffi is working as advertised, type "make test". +To ensure that libffi is working as advertised, type "make check". To install the library and header files, type "make install". -Using libffi -============ - - The Basics - ---------- - -Libffi assumes that you have a pointer to the function you wish to -call and that you know the number and types of arguments to pass it, -as well as the return type of the function. - -The first thing you must do is create an ffi_cif object that matches -the signature of the function you wish to call. The cif in ffi_cif -stands for Call InterFace. To prepare a call interface object, use the -following function: - -ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, ffi_type **atypes); - - CIF is a pointer to the call interface object you wish - to initialize. - - ABI is an enum that specifies the calling convention - to use for the call. FFI_DEFAULT_ABI defaults - to the system's native calling convention. Other - ABI's may be used with care. They are system - specific. - - NARGS is the number of arguments this function accepts. - libffi does not yet support vararg functions. - - RTYPE is a pointer to an ffi_type structure that represents - the return type of the function. Ffi_type objects - describe the types of values. libffi provides - ffi_type objects for many of the native C types: - signed int, unsigned int, signed char, unsigned char, - etc. There is also a pointer ffi_type object and - a void ffi_type. Use &ffi_type_void for functions that - don't return values. - - ATYPES is a vector of ffi_type pointers. ARGS must be NARGS long. - If NARGS is 0, this is ignored. - - -ffi_prep_cif will return a status code that you are responsible -for checking. It will be one of the following: - - FFI_OK - All is good. - - FFI_BAD_TYPEDEF - One of the ffi_type objects that ffi_prep_cif - came across is bad. - - -Before making the call, the VALUES vector should be initialized -with pointers to the appropriate argument values. - -To call the the function using the initialized ffi_cif, use the -ffi_call function: - -void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); - - CIF is a pointer to the ffi_cif initialized specifically - for this function. - - FN is a pointer to the function you want to call. - - RVALUE is a pointer to a chunk of memory that is to hold the - result of the function call. Currently, it must be - at least one word in size (except for the n32 version - under Irix 6.x, which must be a pointer to an 8 byte - aligned value (a long long). It must also be at least - word aligned (depending on the return type, and the - system's alignment requirements). If RTYPE is - &ffi_type_void, this is ignored. If RVALUE is NULL, - the return value is discarded. - - AVALUES is a vector of void* that point to the memory locations - holding the argument values for a call. - If NARGS is 0, this is ignored. - - -If you are expecting a return value from FN it will have been stored -at RVALUE. - - - - An Example - ---------- - -Here is a trivial example that calls puts() a few times. - - #include - #include - - int main() - { - ffi_cif cif; - ffi_type *args[1]; - void *values[1]; - char *s; - int rc; - - /* Initialize the argument info vectors */ - args[0] = &ffi_type_uint; - values[0] = &s; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_uint, args) == FFI_OK) - { - s = "Hello World!"; - ffi_call(&cif, puts, &rc, values); - /* rc now holds the result of the call to puts */ - - /* values holds a pointer to the function's arg, so to - call puts() again all we need to do is change the - value of s */ - s = "This is cool!"; - ffi_call(&cif, puts, &rc, values); - } - - return 0; - } - - - - Aggregate Types - --------------- - -Although libffi has no special support for unions or bit-fields, it is -perfectly happy passing structures back and forth. You must first -describe the structure to libffi by creating a new ffi_type object -for it. Here is the definition of ffi_type: - - typedef struct _ffi_type - { - unsigned size; - short alignment; - short type; - struct _ffi_type **elements; - } ffi_type; - -All structures must have type set to FFI_TYPE_STRUCT. You may set -size and alignment to 0. These will be calculated and reset to the -appropriate values by ffi_prep_cif(). - -elements is a NULL terminated array of pointers to ffi_type objects -that describe the type of the structure elements. These may, in turn, -be structure elements. - -The following example initializes a ffi_type object representing the -tm struct from Linux's time.h: - - struct tm { - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - int tm_year; - int tm_wday; - int tm_yday; - int tm_isdst; - /* Those are for future use. */ - long int __tm_gmtoff__; - __const char *__tm_zone__; - }; - - { - ffi_type tm_type; - ffi_type *tm_type_elements[12]; - int i; - - tm_type.size = tm_type.alignment = 0; - tm_type.elements = &tm_type_elements; - - for (i = 0; i < 9; i++) - tm_type_elements[i] = &ffi_type_sint; - - tm_type_elements[9] = &ffi_type_slong; - tm_type_elements[10] = &ffi_type_pointer; - tm_type_elements[11] = NULL; - - /* tm_type can now be used to represent tm argument types and - return types for ffi_prep_cif() */ - } - - - Platform Specific Notes ======================= - Intel x86 - --------- - -There are no known problems with the x86 port. - - Sun SPARC - SunOS 4.1.3 & Solaris 2.x - ------------------------------------- - -You must use GNU Make to build libffi on Sun platforms. - MIPS - Irix 5.3 & 6.x --------------------- @@ -339,13 +124,6 @@ You must use GNU Make to build libffi on SGI platforms. - ARM - System V ABI - ------------------ - -The ARM port was performed on a NetWinder running ARM Linux ELF -(2.0.31) and gcc 2.8.1. - - PowerPC System V ABI -------------------- @@ -372,18 +150,23 @@ arguments' test). -What's With The Crazy Comments? -=============================== - -You might notice a number of cryptic comments in the code, delimited -by /*@ and @*/. These are annotations read by the program LCLint, a -tool for statically checking C programs. You can read all about it at -. - - History ======= +3.0.2 Feb-21-08 + Improved x86 FreeBSD support. + Thanks to Bj?rn K?nig. + +3.0.1 Feb-15-08 + Fix instruction cache flushing bug on MIPS. + Thanks to David Daney. + +3.0.0 Feb-15-08 + Many changes, mostly thanks to the GCC project. + Cygnus Solutions is now Red Hat. + + [10 years go by...] + 1.20 Oct-5-98 Raffaele Sena produces ARM port. @@ -467,34 +250,56 @@ Authors & Credits ================= -libffi was written by Anthony Green . +libffi was originally written by Anthony Green . + +The developers of the GNU Compiler Collection project have made +innumerable valuable contributions. See the ChangeLog file for +details. -Portions of libffi were derived from Gianni Mariani's free gencall -library for Silicon Graphics machines. +Some of the ideas behind libffi were inspired by Gianni Mariani's free +gencall library for Silicon Graphics machines. The closure mechanism was designed and implemented by Kresten Krab Thorup. -The Sparc port was derived from code contributed by the fine folks at -Visible Decisions Inc . Further enhancements were -made by Gordon Irlam at Cygnus Solutions . - -The Alpha port was written by Richard Henderson at Cygnus Solutions. - -Andreas Schwab ported libffi to m68k Linux and provided a number of -bug fixes. +Major processor architecture ports were contributed by the following +developers: -Geoffrey Keating ported libffi to the PowerPC. - -Raffaele Sena ported libffi to the ARM. +alpha Richard Henderson +arm Raffaele Sena +cris Simon Posnjak, Hans-Peter Nilsson +frv Anthony Green +ia64 Hans Boehm +m32r Kazuhiro Inaoka +m68k Andreas Schwab +mips Anthony Green, Casey Marshall +mips64 David Daney +pa Randolph Chung, Dave Anglin, Andreas Tobler +powerpc Geoffrey Keating, Andreas Tobler, + David Edelsohn, John Hornkvist +powerpc64 Jakub Jelinek +s390 Gerhard Tonn, Ulrich Weigand +sh Kaz Kojima +sh64 Kaz Kojima +sparc Anthony Green, Gordon Irlam +x86 Anthony Green, Jon Beniston +x86-64 Bo Thorsen Jesper Skov and Andrew Haley both did more than their fair share of stepping through the code and tracking down bugs. -Thanks also to Tom Tromey for bug fixes and configuration help. +Thanks also to Tom Tromey for bug fixes, documentation and +configuration help. Thanks to Jim Blandy, who provided some useful feedback on the libffi interface. +Andreas Tobler has done a tremendous amount of work on the testsuite. + +Alex Oliva solved the executable page problem for SElinux. + +The list above is almost certainly incomplete and inaccurate. I'm +happy to make corrections or additions upon request. + If you have a problem, or have found a bug, please send a note to -green at cygnus.com. +green at redhat.com. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Thu Feb 21 20:56:24 2008 @@ -1,10 +1,11 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 1998, 1999, 2001 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle - - x86 Foreign Function Interface + Copyright (C) 2008 Free Software Foundation, Inc. + + x86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -17,13 +18,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef __x86_64__ @@ -36,9 +38,7 @@ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ -/*@-exportheader@*/ void ffi_prep_args(char *stack, extended_cif *ecif) -/*@=exportheader@*/ { register unsigned int i; register void **p_argv; @@ -124,6 +124,13 @@ #if !defined(X86_WIN32) && !defined(__OpenBSD__) && !defined(__FreeBSD__) case FFI_TYPE_STRUCT: #endif +#if defined(X86) || defined(X86_DARWIN) + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: +#endif + case FFI_TYPE_SINT64: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: @@ -139,11 +146,11 @@ case FFI_TYPE_STRUCT: if (cif->rtype->size == 1) { - cif->flags = FFI_TYPE_SINT8; /* same as char size */ + cif->flags = FFI_TYPE_SMALL_STRUCT_1B; /* same as char size */ } else if (cif->rtype->size == 2) { - cif->flags = FFI_TYPE_SINT16; /* same as short size */ + cif->flags = FFI_TYPE_SMALL_STRUCT_2B; /* same as short size */ } else if (cif->rtype->size == 4) { @@ -165,35 +172,23 @@ break; } +#ifdef X86_DARWIN + cif->bytes = (cif->bytes + 15) & ~0xF; +#endif + return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_SYSV(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void)); -/*@=declundef@*/ -/*@=exportheader@*/ +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); #ifdef X86_WIN32 -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_STDCALL(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void)); -/*@=declundef@*/ -/*@=exportheader@*/ +extern void ffi_call_STDCALL(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + #endif /* X86_WIN32 */ -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -206,9 +201,7 @@ if ((rvalue == NULL) && (cif->flags == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -217,17 +210,13 @@ switch (cif->abi) { case FFI_SYSV: - /*@-usedef@*/ - ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, + fn); break; #ifdef X86_WIN32 case FFI_STDCALL: - /*@-usedef@*/ - ffi_call_STDCALL(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_STDCALL(ffi_prep_args, &ecif, cif->bytes, cif->flags, + ecif.rvalue, fn); break; #endif /* X86_WIN32 */ default: @@ -247,6 +236,10 @@ __attribute__ ((regparm(1))); void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *) __attribute__ ((regparm(1))); +#ifdef X86_WIN32 +void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *) + __attribute__ ((regparm(1))); +#endif /* This function is jumped to by the trampoline */ @@ -276,11 +269,9 @@ return cif->flags; } -/*@-exportheader@*/ -static void -ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, - void **avalue, ffi_cif *cif) -/*@=exportheader@*/ +static void +ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, + ffi_cif *cif) { register unsigned int i; register void **p_argv; @@ -324,27 +315,54 @@ ({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - ((unsigned int) __tramp + FFI_TRAMPOLINE_SIZE); \ + unsigned int __dis = __fun - (__ctx + 10); \ *(unsigned char*) &__tramp[0] = 0xb8; \ *(unsigned int*) &__tramp[1] = __ctx; /* movl __ctx, %eax */ \ *(unsigned char *) &__tramp[5] = 0xe9; \ *(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \ }) +#define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \ +({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ + unsigned int __fun = (unsigned int)(FUN); \ + unsigned int __ctx = (unsigned int)(CTX); \ + unsigned int __dis = __fun - (__ctx + 10); \ + unsigned short __size = (unsigned short)(SIZE); \ + *(unsigned char*) &__tramp[0] = 0xb8; \ + *(unsigned int*) &__tramp[1] = __ctx; /* movl __ctx, %eax */ \ + *(unsigned char *) &__tramp[5] = 0xe8; \ + *(unsigned int*) &__tramp[6] = __dis; /* call __fun */ \ + *(unsigned char *) &__tramp[10] = 0xc2; \ + *(unsigned short*) &__tramp[11] = __size; /* ret __size */ \ + }) /* the cif must already be prep'ed */ ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) { - FFI_ASSERT (cif->abi == FFI_SYSV); - - FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ - &ffi_closure_SYSV, \ - (void*)closure); + if (cif->abi == FFI_SYSV) + { + FFI_INIT_TRAMPOLINE (&closure->tramp[0], + &ffi_closure_SYSV, + (void*)closure); + } +#ifdef X86_WIN32 + else if (cif->abi == FFI_STDCALL) + { + FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0], + &ffi_closure_STDCALL, + (void*)closure, cif->bytes); + } +#endif + else + { + return FFI_BAD_ABI; + } closure->cif = cif; closure->user_data = user_data; @@ -358,14 +376,17 @@ #if !FFI_NO_RAW_API ffi_status -ffi_prep_raw_closure (ffi_raw_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data) +ffi_prep_raw_closure_loc (ffi_raw_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc) { int i; - FFI_ASSERT (cif->abi == FFI_SYSV); + if (cif->abi != FFI_SYSV) { + return FFI_BAD_ABI; + } // we currently don't support certain kinds of arguments for raw // closures. This should be implemented by a separate assembly language @@ -380,7 +401,7 @@ FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV, - (void*)closure); + codeloc); closure->cif = cif; closure->user_data = user_data; @@ -400,27 +421,18 @@ * libffi-1.20, this is not the case.) */ -extern void -ffi_call_SYSV(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void)); +extern void +ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, unsigned, + unsigned, unsigned *, void (*fn)(void)); #ifdef X86_WIN32 extern void -ffi_call_STDCALL(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void)); +ffi_call_STDCALL(void (*)(char *, extended_cif *), extended_cif *, unsigned, + unsigned, unsigned *, void (*fn)(void)); #endif /* X86_WIN32 */ void -ffi_raw_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ ffi_raw *fake_avalue) +ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue) { extended_cif ecif; void **avalue = (void **)fake_avalue; @@ -434,9 +446,7 @@ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -445,17 +455,13 @@ switch (cif->abi) { case FFI_SYSV: - /*@-usedef@*/ - ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, + ecif.rvalue, fn); break; #ifdef X86_WIN32 case FFI_STDCALL: - /*@-usedef@*/ - ffi_call_STDCALL(ffi_prep_args_raw, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_STDCALL(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, + ecif.rvalue, fn); break; #endif /* X86_WIN32 */ default: Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c Thu Feb 21 20:56:24 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2002 Bo Thorsen + ffi.c - Copyright (c) 2002, 2007 Bo Thorsen x86-64 Foreign Function Interface @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -433,10 +434,11 @@ extern void ffi_closure_unix64(void); ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { volatile unsigned short *tramp; @@ -445,7 +447,7 @@ tramp[0] = 0xbb49; /* mov , %r11 */ *(void * volatile *) &tramp[1] = ffi_closure_unix64; tramp[5] = 0xba49; /* mov , %r10 */ - *(void * volatile *) &tramp[6] = closure; + *(void * volatile *) &tramp[6] = codeloc; /* Set the carry bit iff the function uses any sse registers. This is clc or stc, together with the first byte of the jmp. */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffitarget.h Thu Feb 21 20:56:24 2008 @@ -1,5 +1,7 @@ /* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. + Target configuration macros for x86 and x86-64. Permission is hereby granted, free of charge, to any person obtaining @@ -13,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -51,7 +54,7 @@ #endif /* ---- Intel x86 and AMD x86-64 - */ -#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__)) +#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__)) FFI_SYSV, FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ #ifdef __i386__ @@ -68,12 +71,18 @@ /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 +#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) +#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) -#ifdef X86_64 +#if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) #define FFI_TRAMPOLINE_SIZE 24 #define FFI_NATIVE_RAW_API 0 #else +#ifdef X86_WIN32 +#define FFI_TRAMPOLINE_SIZE 13 +#else #define FFI_TRAMPOLINE_SIZE 10 +#endif #define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S Thu Feb 21 20:56:24 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -59,16 +60,15 @@ call *28(%ebp) - /* Remove the space we pushed for the args */ - movl 16(%ebp),%ecx - addl %ecx,%esp - /* Load %ecx with the return type code */ movl 20(%ebp),%ecx + /* Protect %esi. We're going to pop it in the epilogue. */ + pushl %esi + /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) - jne retint + jne 0f /* Even if there is no space for the return value, we are obliged to handle floating-point values. */ @@ -78,51 +78,84 @@ jmp epilogue -retint: - cmpl $FFI_TYPE_INT,%ecx - jne retfloat - /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx - movl %eax,0(%ecx) - jmp epilogue +0: + call 1f + +.Lstore_table: + .long noretval-.Lstore_table /* FFI_TYPE_VOID */ + .long retint-.Lstore_table /* FFI_TYPE_INT */ + .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ + .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ + .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ + .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ + .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ + .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ + .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ + .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ + .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ + .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ + .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ + .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ + .long retint-.Lstore_table /* FFI_TYPE_POINTER */ + +1: + pop %esi + add (%esi, %ecx, 4), %esi + jmp *%esi + + /* Sign/zero extend as appropriate. */ +retsint8: + movsbl %al, %eax + jmp retint + +retsint16: + movswl %ax, %eax + jmp retint + +retuint8: + movzbl %al, %eax + jmp retint + +retuint16: + movzwl %ax, %eax + jmp retint retfloat: - cmpl $FFI_TYPE_FLOAT,%ecx - jne retdouble /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue retdouble: - cmpl $FFI_TYPE_DOUBLE,%ecx - jne retlongdouble /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue retlongdouble: - cmpl $FFI_TYPE_LONGDOUBLE,%ecx - jne retint64 /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue retint64: - cmpl $FFI_TYPE_SINT64,%ecx - jne retstruct /* Load %ecx with the pointer to storage for the return value */ movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) + jmp epilogue +retint: + /* Load %ecx with the pointer to storage for the return value */ + movl 24(%ebp),%ecx + movl %eax,0(%ecx) + retstruct: /* Nothing to do! */ noretval: epilogue: + popl %esi movl %ebp,%esp popl %ebp ret @@ -162,7 +195,15 @@ movl -12(%ebp), %ecx cmpl $FFI_TYPE_INT, %eax je .Lcls_retint - cmpl $FFI_TYPE_FLOAT, %eax + + /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, + FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ + cmpl $FFI_TYPE_UINT64, %eax + jge 0f + cmpl $FFI_TYPE_UINT8, %eax + jge .Lcls_retint + +0: cmpl $FFI_TYPE_FLOAT, %eax je .Lcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax je .Lcls_retdouble @@ -170,6 +211,8 @@ je .Lcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lcls_retllong + cmpl $FFI_TYPE_STRUCT, %eax + je .Lcls_retstruct .Lcls_epilogue: movl %ebp, %esp popl %ebp @@ -190,6 +233,10 @@ movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue +.Lcls_retstruct: + movl %ebp, %esp + popl %ebp + ret $4 .LFE2: .size ffi_closure_SYSV, .-ffi_closure_SYSV @@ -226,6 +273,14 @@ movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ cmpl $FFI_TYPE_INT, %eax je .Lrcls_retint + + /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, + FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ + cmpl $FFI_TYPE_UINT64, %eax + jge 0f + cmpl $FFI_TYPE_UINT8, %eax + jge .Lrcls_retint +0: cmpl $FFI_TYPE_FLOAT, %eax je .Lrcls_retfloat cmpl $FFI_TYPE_DOUBLE, %eax Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S Thu Feb 21 20:56:24 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/win32.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/win32.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/win32.S Thu Feb 21 20:56:24 2008 @@ -20,7 +20,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -258,6 +259,22 @@ .ffi_call_STDCALL_end: + .globl _ffi_closure_STDCALL +_ffi_closure_STDCALL: + pushl %ebp + movl %esp, %ebp + subl $40, %esp + leal -24(%ebp), %edx + movl %edx, -12(%ebp) /* resp */ + leal 12(%ebp), %edx /* account for stub return address on stack */ + movl %edx, 4(%esp) /* args */ + leal -12(%ebp), %edx + movl %edx, (%esp) /* &resp */ + call _ffi_closure_SYSV_inner + movl -12(%ebp), %ecx + jmp .Lcls_return_result +.ffi_closure_STDCALL_end: + .globl _ffi_closure_SYSV _ffi_closure_SYSV: pushl %ebp @@ -271,6 +288,7 @@ movl %edx, (%esp) /* &resp */ call _ffi_closure_SYSV_inner movl -12(%ebp), %ecx +.Lcls_return_result: cmpl $FFI_TYPE_INT, %eax je .Lcls_retint cmpl $FFI_TYPE_FLOAT, %eax From martin at v.loewis.de Thu Feb 21 20:59:24 2008 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Thu, 21 Feb 2008 20:59:24 +0100 Subject: [Python-checkins] r60911 - in python/branches/release25-maint: Doc/commontex/boilerplate.tex Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS In-Reply-To: <47BD513F.403@gmail.com> References: <20080221100455.F28011E400D@bag.python.org> <47BD513F.403@gmail.com> Message-ID: <47BDD81C.9090304@v.loewis.de> >> -\date{14th February, 2008} % XXX update before final release! >> +\date{21th February, 2008} % XXX update before final release! >> \input{patchlevel} % include Python version information > > 21st? My first reaction was: isn't it the 21th today? Now that I see what you mean: should the release be re-rolled because of that? Regards, Martin From python-checkins at python.org Thu Feb 21 20:59:36 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 20:59:36 +0100 (CET) Subject: [Python-checkins] r60930 - in python/branches/libffi3-branch/Modules/_ctypes/libffi: fficonfig.h.in include/ffi.h.in include/ffi_common.h Message-ID: <20080221195936.E31F91E4020@bag.python.org> Author: thomas.heller Date: Thu Feb 21 20:59:36 2008 New Revision: 60930 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi_common.h Log: Synchronize more files with libffi-3.0.2, while keeping the changes made in Python svn. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 21 20:59:36 2008 @@ -11,9 +11,15 @@ /* Define to the flags needed for the .section .eh_frame directive. */ #undef EH_FRAME_FLAGS +/* Define this if you want extra debugging. */ +#undef FFI_DEBUG + /* Define this is you do not want support for the raw API. */ #undef FFI_NO_RAW_API +/* Define this is you do not want support for aggregate types. */ +#undef FFI_NO_STRUCTS + /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA @@ -21,6 +27,9 @@ */ #undef HAVE_ALLOCA_H +/* Define if your assembler supports .cfi_* directives. */ +#undef HAVE_AS_CFI_PSEUDO_OP + /* Define if your assembler supports .register. */ #undef HAVE_AS_REGISTER_PSEUDO_OP @@ -28,6 +37,9 @@ */ #undef HAVE_AS_SPARC_UA_PCREL +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -82,6 +94,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* Name of package */ +#undef PACKAGE + /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -114,22 +132,16 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define this if you are using Purify and want to suppress spurious messages. + */ +#undef USING_PURIFY -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). +/* Version number of package */ +#undef VERSION - The block below does compile-time checking for endianness on platforms - that use GCC and therefore allows compiling fat binaries on OSX by using - '-arch ppc -arch i386' as the compile flags. The phrasing was choosen - such that the configure-result is used on systems that don't use GCC. -*/ -#ifdef __BIG_ENDIAN__ -#define WORDS_BIGENDIAN 1 -#else -#ifndef __LITTLE_ENDIAN__ +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN -#endif -#endif #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in Thu Feb 21 20:59:36 2008 @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - libffi @VERSION@ - Copyright (c) 1996-2003 Red Hat, Inc. + libffi @VERSION@ - Copyright (c) 1996-2003, 2007 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -12,13 +12,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -82,6 +83,18 @@ # endif #endif +/* The closure code assumes that this works on pointers, i.e. a size_t */ +/* can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +#ifndef LIBFFI_HIDE_BASIC_TYPES #if SCHAR_MAX == 127 # define ffi_type_uchar ffi_type_uint8 # define ffi_type_schar ffi_type_sint8 @@ -112,26 +125,23 @@ #error "int size not supported" #endif -#define ffi_type_ulong ffi_type_uint64 -#define ffi_type_slong ffi_type_sint64 #if LONG_MAX == 2147483647 # if FFI_LONG_LONG_MAX != 9223372036854775807 - #error "no 64-bit data type supported" + #error "no 64-bit data type supported" # endif #elif LONG_MAX != 9223372036854775807 #error "long size not supported" #endif -/* The closure code assumes that this works on pointers, i.e. a size_t */ -/* can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - /*@null@*/ struct _ffi_type **elements; -} ffi_type; +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == 9223372036854775807 +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif /* These are defined in types.c */ extern ffi_type ffi_type_void; @@ -145,14 +155,19 @@ extern ffi_type ffi_type_sint64; extern ffi_type ffi_type_float; extern ffi_type ffi_type_double; -extern ffi_type ffi_type_longdouble; extern ffi_type ffi_type_pointer; +#if @HAVE_LONG_DOUBLE@ +extern ffi_type ffi_type_longdouble; +#else +#define ffi_type_longdouble ffi_type_double +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, - FFI_BAD_ABI + FFI_BAD_ABI } ffi_status; typedef unsigned FFI_TYPE; @@ -160,8 +175,8 @@ typedef struct { ffi_abi abi; unsigned nargs; - /*@dependent@*/ ffi_type **arg_types; - /*@dependent@*/ ffi_type *rtype; + ffi_type **arg_types; + ffi_type *rtype; unsigned bytes; unsigned flags; #ifdef FFI_EXTRA_CIF_FIELDS @@ -179,6 +194,10 @@ # endif #endif +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + typedef union { ffi_sarg sint; ffi_arg uint; @@ -187,10 +206,25 @@ void* ptr; } ffi_raw; -void ffi_raw_call (/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ ffi_raw *avalue); +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); @@ -200,13 +234,13 @@ /* packing, even on 64-bit machines. I.e. on 64-bit machines */ /* longs and doubles are followed by an empty 64-bit word. */ -void ffi_java_raw_call (/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ ffi_raw *avalue); +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue); -void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); size_t ffi_java_raw_size (ffi_cif *cif); /* ---- Definitions for closures ----------------------------------------- */ @@ -220,12 +254,22 @@ void *user_data; } ffi_closure __attribute__((aligned (8))); +void *ffi_closure_alloc (size_t size, void **code); +void ffi_closure_free (void *); + ffi_status ffi_prep_closure (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data); +ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void*codeloc); + typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; @@ -247,6 +291,27 @@ } ffi_raw_closure; +typedef struct { + char tramp[FFI_TRAMPOLINE_SIZE]; + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* if this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the transaltion, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + ffi_status ffi_prep_raw_closure (ffi_raw_closure*, ffi_cif *cif, @@ -254,28 +319,42 @@ void *user_data); ffi_status -ffi_prep_java_raw_closure (ffi_raw_closure*, +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data); +ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc); + #endif /* FFI_CLOSURES */ /* ---- Public interface definition -------------------------------------- */ -ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif, +ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, - unsigned int nargs, - /*@dependent@*/ /*@out@*/ /*@partial@*/ ffi_type *rtype, - /*@dependent@*/ ffi_type **atypes); - -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue); + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); /* Useful for eliminating compiler warnings */ -#define FFI_FN(f) ((void (*)())f) +#define FFI_FN(f) ((void (*)(void))f) /* ---- Definitions shared with assembly code ---------------------------- */ @@ -310,4 +389,3 @@ #endif #endif - Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi_common.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi_common.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi_common.h Thu Feb 21 20:59:36 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi_common.h - Copyright (c) 1996 Red Hat, Inc. + Copyright (C) 2007 Free Software Foundation, Inc Common internal definitions and macros. Only necessary for building libffi. @@ -18,7 +19,9 @@ this is positioned. */ #ifdef __GNUC__ # define alloca __builtin_alloca +# define MAYBE_UNUSED __attribute__((__unused__)) #else +# define MAYBE_UNUSED # if HAVE_ALLOCA_H # include # else @@ -41,20 +44,20 @@ # endif #endif -#if defined(FFI_DEBUG) +#if defined(FFI_DEBUG) #include #endif #ifdef FFI_DEBUG -/*@exits@*/ void ffi_assert(/*@temp@*/ char *expr, /*@temp@*/ char *file, int line); +void ffi_assert(char *expr, char *file, int line); void ffi_stop_here(void); -void ffi_type_test(/*@temp@*/ /*@out@*/ ffi_type *a, /*@temp@*/ char *file, int line); +void ffi_type_test(ffi_type *a, char *file, int line); #define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__)) #define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l))) #define FFI_ASSERT_VALID_TYPE(x) ffi_type_test (x, __FILE__, __LINE__) #else -#define FFI_ASSERT(x) +#define FFI_ASSERT(x) #define FFI_ASSERT_AT(x, f, l) #define FFI_ASSERT_VALID_TYPE(x) #endif @@ -68,9 +71,9 @@ /* Extended cif, used in callback from assembly routine */ typedef struct { - /*@dependent@*/ ffi_cif *cif; - /*@dependent@*/ void *rvalue; - /*@dependent@*/ void **avalue; + ffi_cif *cif; + void *rvalue; + void **avalue; } extended_cif; /* Terse sized type definitions. */ From guido at python.org Thu Feb 21 21:04:18 2008 From: guido at python.org (Guido van Rossum) Date: Thu, 21 Feb 2008 12:04:18 -0800 Subject: [Python-checkins] r60911 - in python/branches/release25-maint: Doc/commontex/boilerplate.tex Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS In-Reply-To: <47BDD81C.9090304@v.loewis.de> References: <20080221100455.F28011E400D@bag.python.org> <47BD513F.403@gmail.com> <47BDD81C.9090304@v.loewis.de> Message-ID: I think it isn't worth it. You can fix it in svn post-release. On Thu, Feb 21, 2008 at 11:59 AM, "Martin v. L?wis" wrote: > >> -\date{14th February, 2008} % XXX update before final release! > >> +\date{21th February, 2008} % XXX update before final release! > >> \input{patchlevel} % include Python version information > > > > 21st? > > My first reaction was: isn't it the 21th today? > > Now that I see what you mean: should the release be re-rolled because of > that? > > Regards, > Martin > > > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) From martin at v.loewis.de Thu Feb 21 21:05:54 2008 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Thu, 21 Feb 2008 21:05:54 +0100 Subject: [Python-checkins] r60917 - python/tags/r252/Doc/Makefile In-Reply-To: <20080221125732.623EC1E4018@bag.python.org> References: <20080221125732.623EC1E4018@bag.python.org> Message-ID: <47BDD9A2.7010906@v.loewis.de> > as for r252c1, add the tag information so the source package is right What does that do? Does it need to go into the official tarball? Regards, Martin From buildbot at python.org Thu Feb 21 21:09:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 20:09:39 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080221200939.247E81E4010@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/847 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 21:17:08 2008 From: python-checkins at python.org (eric.smith) Date: Thu, 21 Feb 2008 21:17:08 +0100 (CET) Subject: [Python-checkins] r60932 - python/trunk/Lib/test/test_builtin.py Message-ID: <20080221201708.ED2541E4015@bag.python.org> Author: eric.smith Date: Thu Feb 21 21:17:08 2008 New Revision: 60932 Modified: python/trunk/Lib/test/test_builtin.py Log: Moved test_format into the correct TestCase. Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Thu Feb 21 21:17:08 2008 @@ -1973,45 +1973,6 @@ return i self.assertRaises(ValueError, zip, BadSeq(), BadSeq()) -class TestSorted(unittest.TestCase): - - def test_basic(self): - data = range(100) - copy = data[:] - random.shuffle(copy) - self.assertEqual(data, sorted(copy)) - self.assertNotEqual(data, copy) - - data.reverse() - random.shuffle(copy) - self.assertEqual(data, sorted(copy, cmp=lambda x, y: cmp(y,x))) - self.assertNotEqual(data, copy) - random.shuffle(copy) - self.assertEqual(data, sorted(copy, key=lambda x: -x)) - self.assertNotEqual(data, copy) - random.shuffle(copy) - self.assertEqual(data, sorted(copy, reverse=1)) - self.assertNotEqual(data, copy) - - def test_inputtypes(self): - s = 'abracadabra' - types = [list, tuple] - if have_unicode: - types.insert(0, unicode) - for T in types: - self.assertEqual(sorted(s), sorted(T(s))) - - s = ''.join(dict.fromkeys(s).keys()) # unique letters only - types = [set, frozenset, list, tuple, dict.fromkeys] - if have_unicode: - types.insert(0, unicode) - for T in types: - self.assertEqual(sorted(s), sorted(T(s))) - - def test_baddecorator(self): - data = 'The quick Brown fox Jumped over The lazy Dog'.split() - self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0) - def test_format(self): # Test the basic machinery of the format() builtin. Don't test # the specifics of the various formatters @@ -2107,6 +2068,45 @@ class DerivedFromStr(str): pass self.assertEqual(format(0, DerivedFromStr('10')), ' 0') +class TestSorted(unittest.TestCase): + + def test_basic(self): + data = range(100) + copy = data[:] + random.shuffle(copy) + self.assertEqual(data, sorted(copy)) + self.assertNotEqual(data, copy) + + data.reverse() + random.shuffle(copy) + self.assertEqual(data, sorted(copy, cmp=lambda x, y: cmp(y,x))) + self.assertNotEqual(data, copy) + random.shuffle(copy) + self.assertEqual(data, sorted(copy, key=lambda x: -x)) + self.assertNotEqual(data, copy) + random.shuffle(copy) + self.assertEqual(data, sorted(copy, reverse=1)) + self.assertNotEqual(data, copy) + + def test_inputtypes(self): + s = 'abracadabra' + types = [list, tuple] + if have_unicode: + types.insert(0, unicode) + for T in types: + self.assertEqual(sorted(s), sorted(T(s))) + + s = ''.join(dict.fromkeys(s).keys()) # unique letters only + types = [set, frozenset, list, tuple, dict.fromkeys] + if have_unicode: + types.insert(0, unicode) + for T in types: + self.assertEqual(sorted(s), sorted(T(s))) + + def test_baddecorator(self): + data = 'The quick Brown fox Jumped over The lazy Dog'.split() + self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0) + def test_main(verbose=None): test_classes = (BuiltinTest, TestSorted) From python-checkins at python.org Thu Feb 21 21:17:25 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 21:17:25 +0100 (CET) Subject: [Python-checkins] r60933 - python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Message-ID: <20080221201725.3C7EE1E4010@bag.python.org> Author: thomas.heller Date: Thu Feb 21 21:17:24 2008 New Revision: 60933 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Log: revert fficonfig.h.in, rev 60930 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 21 21:17:24 2008 @@ -11,15 +11,9 @@ /* Define to the flags needed for the .section .eh_frame directive. */ #undef EH_FRAME_FLAGS -/* Define this if you want extra debugging. */ -#undef FFI_DEBUG - /* Define this is you do not want support for the raw API. */ #undef FFI_NO_RAW_API -/* Define this is you do not want support for aggregate types. */ -#undef FFI_NO_STRUCTS - /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA @@ -27,9 +21,6 @@ */ #undef HAVE_ALLOCA_H -/* Define if your assembler supports .cfi_* directives. */ -#undef HAVE_AS_CFI_PSEUDO_OP - /* Define if your assembler supports .register. */ #undef HAVE_AS_REGISTER_PSEUDO_OP @@ -37,9 +28,6 @@ */ #undef HAVE_AS_SPARC_UA_PCREL -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -94,12 +82,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Name of package */ -#undef PACKAGE - /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -132,16 +114,22 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS -/* Define this if you are using Purify and want to suppress spurious messages. - */ -#undef USING_PURIFY - -/* Version number of package */ -#undef VERSION /* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ + first (like Motorola and SPARC, unlike Intel and VAX). + + The block below does compile-time checking for endianness on platforms + that use GCC and therefore allows compiling fat binaries on OSX by using + '-arch ppc -arch i386' as the compile flags. The phrasing was choosen + such that the configure-result is used on systems that don't use GCC. +*/ +#ifdef __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#else +#ifndef __LITTLE_ENDIAN__ #undef WORDS_BIGENDIAN +#endif +#endif #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE From python-checkins at python.org Thu Feb 21 21:22:23 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 21:22:23 +0100 (CET) Subject: [Python-checkins] r60935 - python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Message-ID: <20080221202223.8A7B61E4010@bag.python.org> Author: thomas.heller Date: Thu Feb 21 21:22:23 2008 New Revision: 60935 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Log: Synchronize more files with libffi-3.0.2, while keeping the changes made in Python svn. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 21 21:22:23 2008 @@ -11,9 +11,15 @@ /* Define to the flags needed for the .section .eh_frame directive. */ #undef EH_FRAME_FLAGS +/* Define this if you want extra debugging. */ +#undef FFI_DEBUG + /* Define this is you do not want support for the raw API. */ #undef FFI_NO_RAW_API +/* Define this is you do not want support for aggregate types. */ +#undef FFI_NO_STRUCTS + /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA @@ -21,6 +27,9 @@ */ #undef HAVE_ALLOCA_H +/* Define if your assembler supports .cfi_* directives. */ +#undef HAVE_AS_CFI_PSEUDO_OP + /* Define if your assembler supports .register. */ #undef HAVE_AS_REGISTER_PSEUDO_OP @@ -28,6 +37,9 @@ */ #undef HAVE_AS_SPARC_UA_PCREL +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -82,6 +94,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* Name of package */ +#undef PACKAGE + /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -114,6 +132,12 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define this if you are using Purify and want to suppress spurious messages. + */ +#undef USING_PURIFY + +/* Version number of package */ +#undef VERSION /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). From python-checkins at python.org Thu Feb 21 21:33:39 2008 From: python-checkins at python.org (georg.brandl) Date: Thu, 21 Feb 2008 21:33:39 +0100 (CET) Subject: [Python-checkins] r60936 - python/trunk/Doc/library/userdict.rst Message-ID: <20080221203339.3C7EB1E4010@bag.python.org> Author: georg.brandl Date: Thu Feb 21 21:33:38 2008 New Revision: 60936 Modified: python/trunk/Doc/library/userdict.rst Log: #2079: typo in userdict docs. Modified: python/trunk/Doc/library/userdict.rst ============================================================================== --- python/trunk/Doc/library/userdict.rst (original) +++ python/trunk/Doc/library/userdict.rst Thu Feb 21 21:33:38 2008 @@ -11,7 +11,7 @@ simplifies writing classes that need to be substitutable for dictionaries (such as the shelve module). -This also module defines a class, :class:`UserDict`, that acts as a wrapper +This module also defines a class, :class:`UserDict`, that acts as a wrapper around dictionary objects. The need for this class has been largely supplanted by the ability to subclass directly from :class:`dict` (a feature that became available starting with Python version 2.2). Prior to the introduction of From python-checkins at python.org Thu Feb 21 21:34:22 2008 From: python-checkins at python.org (georg.brandl) Date: Thu, 21 Feb 2008 21:34:22 +0100 (CET) Subject: [Python-checkins] r60937 - python/branches/release25-maint/Doc/lib/libuserdict.tex Message-ID: <20080221203422.DABF01E4010@bag.python.org> Author: georg.brandl Date: Thu Feb 21 21:34:22 2008 New Revision: 60937 Modified: python/branches/release25-maint/Doc/lib/libuserdict.tex Log: #2079: typo in userdict docs. Modified: python/branches/release25-maint/Doc/lib/libuserdict.tex ============================================================================== --- python/branches/release25-maint/Doc/lib/libuserdict.tex (original) +++ python/branches/release25-maint/Doc/lib/libuserdict.tex Thu Feb 21 21:34:22 2008 @@ -10,7 +10,7 @@ greatly simplifies writing classes that need to be substitutable for dictionaries (such as the shelve module). -This also module defines a class, \class{UserDict}, that acts as a wrapper +This module also defines a class, \class{UserDict}, that acts as a wrapper around dictionary objects. The need for this class has been largely supplanted by the ability to subclass directly from \class{dict} (a feature that became available starting with Python version 2.2). Prior to the From python-checkins at python.org Thu Feb 21 21:38:14 2008 From: python-checkins at python.org (georg.brandl) Date: Thu, 21 Feb 2008 21:38:14 +0100 (CET) Subject: [Python-checkins] r60938 - in python/trunk/Doc: distutils/setupscript.rst library/optparse.rst Message-ID: <20080221203814.05DAE1E4023@bag.python.org> Author: georg.brandl Date: Thu Feb 21 21:38:13 2008 New Revision: 60938 Modified: python/trunk/Doc/distutils/setupscript.rst python/trunk/Doc/library/optparse.rst Log: Part of #2154: minimal syntax fixes in doc example snippets. Modified: python/trunk/Doc/distutils/setupscript.rst ============================================================================== --- python/trunk/Doc/distutils/setupscript.rst (original) +++ python/trunk/Doc/distutils/setupscript.rst Thu Feb 21 21:38:13 2008 @@ -185,7 +185,7 @@ same base package), use the :option:`ext_package` keyword argument to :func:`setup`. For example, :: - setup(... + setup(..., ext_package='pkg', ext_modules=[Extension('foo', ['foo.c']), Extension('subpkg.bar', ['bar.c'])], @@ -214,7 +214,7 @@ This warning notwithstanding, options to SWIG can be currently passed like this:: - setup(... + setup(..., ext_modules=[Extension('_foo', ['foo.i'], swig_opts=['-modern', '-I../include'])], py_modules=['foo'], @@ -443,7 +443,7 @@ The :option:`scripts` option simply is a list of files to be handled in this way. From the PyXML setup script:: - setup(... + setup(..., scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val'] ) @@ -501,7 +501,7 @@ :option:`data_files` specifies a sequence of (*directory*, *files*) pairs in the following way:: - setup(... + setup(..., data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']), ('config', ['cfg/data.cfg']), ('/etc/init.d', ['init-script'])] @@ -613,7 +613,7 @@ :option:`classifiers` are specified in a python list:: - setup(... + setup(..., classifiers=[ 'Development Status :: 4 - Beta', 'Environment :: Console', Modified: python/trunk/Doc/library/optparse.rst ============================================================================== --- python/trunk/Doc/library/optparse.rst (original) +++ python/trunk/Doc/library/optparse.rst Thu Feb 21 21:38:13 2008 @@ -1633,7 +1633,7 @@ value.append(arg) del rargs[0] - setattr(parser.values, option.dest, value) + setattr(parser.values, option.dest, value) [...] parser.add_option("-c", "--callback", From python-checkins at python.org Thu Feb 21 21:39:51 2008 From: python-checkins at python.org (georg.brandl) Date: Thu, 21 Feb 2008 21:39:51 +0100 (CET) Subject: [Python-checkins] r60939 - doctools/trunk/sphinx/highlighting.py Message-ID: <20080221203951.3FD0E1E4031@bag.python.org> Author: georg.brandl Date: Thu Feb 21 21:39:50 2008 New Revision: 60939 Modified: doctools/trunk/sphinx/highlighting.py Log: Patch #2154 from Amaury: allow '...' in Python snippets; it's often used to indicate some left-out code. Modified: doctools/trunk/sphinx/highlighting.py ============================================================================== --- doctools/trunk/sphinx/highlighting.py (original) +++ doctools/trunk/sphinx/highlighting.py Thu Feb 21 21:39:50 2008 @@ -70,13 +70,23 @@ lexer = lexers['pycon'] else: # maybe Python -- try parsing it + src = source + '\n' + + # Replace "..." by a special mark, + # which is also a valid python expression + mark = "__highlighting__ellipsis__" + src = src.replace("...", mark) + + # lines beginning with "..." are probably placeholders for suite + import re + src = re.sub(r"(?m)^(\s*)" + mark + "(.)", r"\1"+ mark + r"# \2", src) + + # if we're using 2.5, use the with statement + if sys.version_info >= (2, 5): + src = 'from __future__ import with_statement\n' + src + try: - # if we're using 2.5, use the with statement - if sys.version_info >= (2, 5): - parser.suite('from __future__ import with_statement\n' + - source + '\n') - else: - parser.suite(source + '\n') + parser.suite(src) except (SyntaxError, UnicodeEncodeError): return unhighlighted() else: From buildbot at python.org Thu Feb 21 22:08:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 21:08:33 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080221210833.4C1CE1E4010@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1472 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 21 22:12:31 2008 From: python-checkins at python.org (thomas.heller) Date: Thu, 21 Feb 2008 22:12:31 +0100 (CET) Subject: [Python-checkins] r60940 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Message-ID: <20080221211231.1A35C1E4010@bag.python.org> Author: thomas.heller Date: Thu Feb 21 22:12:30 2008 New Revision: 60940 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Log: Synchronize more files with libffi-3.0.2, while keeping the changes made in Python svn. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Thu Feb 21 22:12:30 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - prep_cif.c - Copyright (c) 1996, 1998 Red Hat, Inc. + prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -12,20 +12,20 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include - /* Round up to FFI_SIZEOF_ARG. */ #define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG) @@ -33,14 +33,12 @@ /* Perform machine independent initialization of aggregate type specifications. */ -static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg) +static ffi_status initialize_aggregate(ffi_type *arg) { - ffi_type **ptr; + ffi_type **ptr; FFI_ASSERT(arg != NULL); - /*@-usedef@*/ - FFI_ASSERT(arg->elements != NULL); FFI_ASSERT(arg->size == 0); FFI_ASSERT(arg->alignment == 0); @@ -51,7 +49,7 @@ { if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK)) return FFI_BAD_TYPEDEF; - + /* Perform a sanity check on the argument type */ FFI_ASSERT_VALID_TYPE(*ptr); @@ -75,7 +73,7 @@ arg->size = ALIGN(arg->size, (*ptr)->alignment); arg->size += (*ptr)->size; - arg->alignment = (arg->alignment > (*ptr)->alignment) ? + arg->alignment = (arg->alignment > (*ptr)->alignment) ? arg->alignment : (*ptr)->alignment; #endif @@ -95,8 +93,6 @@ return FFI_BAD_TYPEDEF; else return FFI_OK; - - /*@=usedef@*/ } #ifndef __CRIS__ @@ -120,10 +116,8 @@ #endif -ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif, - ffi_abi abi, unsigned int nargs, - /*@dependent@*/ /*@out@*/ /*@partial@*/ ffi_type *rtype, - /*@dependent@*/ ffi_type **atypes) +ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, + ffi_type *rtype, ffi_type **atypes) { unsigned bytes = 0; unsigned int i; @@ -140,10 +134,8 @@ cif->flags = 0; /* Initialize the return type if necessary */ - /*@-usedef@*/ if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK)) return FFI_BAD_TYPEDEF; - /*@=usedef@*/ /* Perform a sanity check on the return type */ FFI_ASSERT_VALID_TYPE(cif->rtype); @@ -159,7 +151,7 @@ && (struct_on_stack(cif->rtype->size)) #endif - ) + ) bytes = STACK_ARG_SIZE(sizeof(void*)); #endif @@ -170,7 +162,7 @@ if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK)) return FFI_BAD_TYPEDEF; - /* Perform a sanity check on the argument type, do this + /* Perform a sanity check on the argument type, do this check after the initialization. */ FFI_ASSERT_VALID_TYPE(*ptr); @@ -196,7 +188,7 @@ /* Add any padding if necessary */ if (((*ptr)->alignment - 1) & bytes) bytes = ALIGN(bytes, (*ptr)->alignment); - + bytes += STACK_ARG_SIZE((*ptr)->size); } #endif @@ -208,3 +200,16 @@ return ffi_prep_cif_machdep(cif); } #endif /* not __CRIS__ */ + +#if FFI_CLOSURES + +ffi_status +ffi_prep_closure (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +{ + return ffi_prep_closure_loc (closure, cif, fun, user_data, closure); +} + +#endif From buildbot at python.org Thu Feb 21 22:35:16 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 21 Feb 2008 21:35:16 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080221213516.6E2621E4010@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/620 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_smtplib sincerely, -The Buildbot From python-checkins at python.org Fri Feb 22 04:16:43 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 22 Feb 2008 04:16:43 +0100 (CET) Subject: [Python-checkins] r60942 - in python/trunk: Lib/test/test_itertools.py Modules/itertoolsmodule.c Message-ID: <20080222031643.113051E4016@bag.python.org> Author: raymond.hettinger Date: Fri Feb 22 04:16:42 2008 New Revision: 60942 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Modules/itertoolsmodule.c Log: First draft for itertools.product(). Docs and other updates forthcoming. Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Fri Feb 22 04:16:42 2008 @@ -253,6 +253,28 @@ ids = map(id, list(izip_longest('abc', 'def'))) self.assertEqual(len(dict.fromkeys(ids)), len(ids)) + def test_product(self): + for args, result in [ + ([], []), # zero iterables ??? is this correct + (['ab'], [('a',), ('b',)]), # one iterable + ([range(2), range(3)], [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)]), # two iterables + ([range(0), range(2), range(3)], []), # first iterable with zero length + ([range(2), range(0), range(3)], []), # middle iterable with zero length + ([range(2), range(3), range(0)], []), # last iterable with zero length + ]: + self.assertEqual(list(product(*args)), result) + self.assertEqual(len(list(product(*[range(7)]*6))), 7**6) + self.assertRaises(TypeError, product, range(6), None) + argtypes = ['', 'abc', '', xrange(0), xrange(4), dict(a=1, b=2, c=3), + set('abcdefg'), range(11), tuple(range(13))] + for i in range(100): + args = [random.choice(argtypes) for j in range(random.randrange(5))] + n = reduce(operator.mul, map(len, args), 1) if args else 0 + self.assertEqual(len(list(product(*args))), n) + args = map(iter, args) + self.assertEqual(len(list(product(*args))), n) + + def test_repeat(self): self.assertEqual(zip(xrange(3),repeat('a')), [(0, 'a'), (1, 'a'), (2, 'a')]) @@ -623,6 +645,12 @@ self.assertRaises(TypeError, list, chain(N(s))) self.assertRaises(ZeroDivisionError, list, chain(E(s))) + def test_product(self): + for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + self.assertRaises(TypeError, product, X(s)) + self.assertRaises(TypeError, product, N(s)) + self.assertRaises(ZeroDivisionError, product, E(s)) + def test_cycle(self): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, S, L, R): Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Fri Feb 22 04:16:42 2008 @@ -1741,6 +1741,216 @@ }; +/* product object ************************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *pools; /* tuple of pool tuples */ + Py_ssize_t *maxvec; + Py_ssize_t *indices; + PyObject *result; + int stopped; +} productobject; + +static PyTypeObject product_type; + +static PyObject * +product_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + productobject *lz; + Py_ssize_t npools; + PyObject *pools = NULL; + Py_ssize_t *maxvec = NULL; + Py_ssize_t *indices = NULL; + Py_ssize_t i; + + if (type == &product_type && !_PyArg_NoKeywords("product()", kwds)) + return NULL; + + assert(PyTuple_Check(args)); + npools = PyTuple_GET_SIZE(args); + + maxvec = PyMem_Malloc(npools * sizeof(Py_ssize_t)); + indices = PyMem_Malloc(npools * sizeof(Py_ssize_t)); + if (maxvec == NULL || indices == NULL) { + PyErr_NoMemory(); + goto error; + } + + pools = PyTuple_New(npools); + if (pools == NULL) + goto error; + + for (i=0; i < npools; ++i) { + PyObject *item = PyTuple_GET_ITEM(args, i); + PyObject *pool = PySequence_Tuple(item); + if (pool == NULL) + goto error; + + PyTuple_SET_ITEM(pools, i, pool); + maxvec[i] = PyTuple_GET_SIZE(pool); + indices[i] = 0; + } + + /* create productobject structure */ + lz = (productobject *)type->tp_alloc(type, 0); + if (lz == NULL) { + Py_DECREF(pools); + return NULL; + } + + lz->pools = pools; + lz->maxvec = maxvec; + lz->indices = indices; + lz->result = NULL; + lz->stopped = 0; + + return (PyObject *)lz; + +error: + if (maxvec != NULL) + PyMem_Free(maxvec); + if (indices != NULL) + PyMem_Free(indices); + Py_XDECREF(pools); + return NULL; +} + +static void +product_dealloc(productobject *lz) +{ + PyObject_GC_UnTrack(lz); + Py_XDECREF(lz->pools); + Py_XDECREF(lz->result); + PyMem_Free(lz->maxvec); + PyMem_Free(lz->indices); + Py_TYPE(lz)->tp_free(lz); +} + +static int +product_traverse(productobject *lz, visitproc visit, void *arg) +{ + Py_VISIT(lz->pools); + Py_VISIT(lz->result); + return 0; +} + +static PyObject * +product_next(productobject *lz) +{ + PyObject *pool; + PyObject *elem; + PyObject *tuple_result; + PyObject *pools = lz->pools; + PyObject *result = lz->result; + Py_ssize_t npools = PyTuple_GET_SIZE(pools); + Py_ssize_t i; + + if (lz->stopped) + return NULL; + if (result == NULL) { + if (npools == 0) + goto empty; + result = PyList_New(npools); + if (result == NULL) + goto empty; + lz->result = result; + for (i=0; i < npools; i++) { + pool = PyTuple_GET_ITEM(pools, i); + if (PyTuple_GET_SIZE(pool) == 0) + goto empty; + elem = PyTuple_GET_ITEM(pool, 0); + Py_INCREF(elem); + PyList_SET_ITEM(result, i, elem); + } + } else { + Py_ssize_t *indices = lz->indices; + Py_ssize_t *maxvec = lz->maxvec; + for (i=npools-1 ; i >= 0 ; i--) { + pool = PyTuple_GET_ITEM(pools, i); + indices[i]++; + if (indices[i] == maxvec[i]) { + indices[i] = 0; + elem = PyTuple_GET_ITEM(pool, 0); + Py_INCREF(elem); + PyList_SetItem(result, i, elem); + } else { + elem = PyTuple_GET_ITEM(pool, indices[i]); + Py_INCREF(elem); + PyList_SetItem(result, i, elem); + break; + } + } + if (i < 0) + return NULL; + } + + tuple_result = PySequence_Tuple(result); + if (tuple_result == NULL) + lz->stopped = 1; + return tuple_result; + +empty: + lz->stopped = 1; + return NULL; +} + +PyDoc_STRVAR(product_doc, +"product(*iterables) --> product object\n\ +\n\ +Cartesian product of input interables. Equivalent to nested for-loops.\n\n\ +For example, product(A, B) returns the same as: ((x,y) for x in A for y in B).\n\ +The leftmost iterators are in the outermost for-loop, so the output tuples\n\ +cycle in a manner similar to an odometer (with the rightmost element changing\n\ +on every iteration).\n\n\ +product('ab', range(3)) --> ('a',0) ('a',1) ('a',2) ('b',0) ('b',1) ('b',2)\n\ +product((0,1), (0,1), (0,1)) --> (0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) ..."); + +static PyTypeObject product_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "itertools.product", /* tp_name */ + sizeof(productobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)product_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + product_doc, /* tp_doc */ + (traverseproc)product_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)product_next, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + product_new, /* tp_new */ + PyObject_GC_Del, /* tp_free */ +}; + + /* ifilter object ************************************************************/ typedef struct { @@ -2796,7 +3006,8 @@ &ifilterfalse_type, &count_type, &izip_type, - &iziplongest_type, + &iziplongest_type, + &product_type, &repeat_type, &groupby_type, NULL From buildbot at python.org Fri Feb 22 05:03:06 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 04:03:06 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080222040307.098151E4025@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2882 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Feb 22 06:45:08 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 05:45:08 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080222054509.2DC491E4018@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/94 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: guido.van.rossum,raymond.hettinger,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea-armeabi/trunk.klose-linux-armeabi/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 22 08:36:46 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 08:36:46 +0100 (CET) Subject: [Python-checkins] r60943 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S Message-ID: <20080222073646.742961E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 08:36:45 2008 New Revision: 60943 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c Fri Feb 22 08:36:45 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1998 Geoffrey Keating + Copyright (C) 2007 Free Software Foundation, Inc PowerPC Foreign Function Interface @@ -39,7 +40,8 @@ FLAG_RETURNS_NOTHING = 1 << (31-30), /* These go in cr7 */ FLAG_RETURNS_FP = 1 << (31-29), FLAG_RETURNS_64BITS = 1 << (31-28), - FLAG_RETURNS_128BITS = 1 << (31-27), + + FLAG_RETURNS_128BITS = 1 << (31-27), /* cr6 */ FLAG_ARG_NEEDS_COPY = 1 << (31- 7), FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ @@ -48,10 +50,13 @@ }; /* About the SYSV ABI. */ -enum { - NUM_GPR_ARG_REGISTERS = 8, - NUM_FPR_ARG_REGISTERS = 8 -}; +unsigned int NUM_GPR_ARG_REGISTERS = 8; +#ifndef __NO_FPRS__ +unsigned int NUM_FPR_ARG_REGISTERS = 8; +#else +unsigned int NUM_FPR_ARG_REGISTERS = 0; +#endif + enum { ASM_NEEDS_REGISTERS = 4 }; /* ffi_prep_args_SYSV is called by the assembly routine once stack space @@ -80,10 +85,8 @@ */ -/*@-exportheader@*/ void ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) -/*@=exportheader@*/ { const unsigned bytes = ecif->cif->bytes; const unsigned flags = ecif->cif->flags; @@ -116,7 +119,7 @@ /* 'next_arg' grows up as we put parameters in it. */ valp next_arg; - int i; + int i, ii MAYBE_UNUSED; ffi_type **ptr; double double_tmp; union { @@ -134,6 +137,9 @@ size_t struct_copy_size; unsigned gprvalue; + if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) + NUM_FPR_ARG_REGISTERS = 0; + stacktop.c = (char *) stack + bytes; gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS; intarg_count = 0; @@ -165,6 +171,9 @@ switch ((*ptr)->type) { case FFI_TYPE_FLOAT: + /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */ + if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_float_prep; double_tmp = **p_argv.f; if (fparg_count >= NUM_FPR_ARG_REGISTERS) { @@ -178,6 +187,9 @@ break; case FFI_TYPE_DOUBLE: + /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */ + if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_double_prep; double_tmp = **p_argv.d; if (fparg_count >= NUM_FPR_ARG_REGISTERS) @@ -197,8 +209,77 @@ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((ecif->cif->abi != FFI_LINUX) + && (ecif->cif->abi != FFI_LINUX_SOFT_FLOAT)) + goto do_struct; + /* The soft float ABI for long doubles works like this, + a long double is passed in four consecutive gprs if available. + A maximum of 2 long doubles can be passed in gprs. + If we do not have 4 gprs left, the long double is passed on the + stack, 4-byte aligned. */ + if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) + { + unsigned int int_tmp = (*p_argv.ui)[0]; + if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) + { + if (intarg_count < NUM_GPR_ARG_REGISTERS) + intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count; + *next_arg.u = int_tmp; + next_arg.u++; + for (ii = 1; ii < 4; ii++) + { + int_tmp = (*p_argv.ui)[ii]; + *next_arg.u = int_tmp; + next_arg.u++; + } + } + else + { + *gpr_base.u++ = int_tmp; + for (ii = 1; ii < 4; ii++) + { + int_tmp = (*p_argv.ui)[ii]; + *gpr_base.u++ = int_tmp; + } + } + intarg_count +=4; + } + else + { + double_tmp = (*p_argv.d)[0]; + + if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1) + { + if (intarg_count >= NUM_GPR_ARG_REGISTERS + && intarg_count % 2 != 0) + { + intarg_count++; + next_arg.u++; + } + *next_arg.d = double_tmp; + next_arg.u += 2; + double_tmp = (*p_argv.d)[1]; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + { + *fpr_base.d++ = double_tmp; + double_tmp = (*p_argv.d)[1]; + *fpr_base.d++ = double_tmp; + } + + fparg_count += 2; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + } + break; +#endif + case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: + soft_double_prep: if (intarg_count == NUM_GPR_ARG_REGISTERS-1) intarg_count++; if (intarg_count >= NUM_GPR_ARG_REGISTERS) @@ -232,7 +313,7 @@ case FFI_TYPE_STRUCT: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: + do_struct: #endif struct_copy_size = ((*ptr)->size + 15) & ~0xF; copy_space.c -= struct_copy_size; @@ -261,6 +342,8 @@ case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: + soft_float_prep: + gprvalue = **p_argv.ui; putgpr: @@ -322,10 +405,8 @@ */ -/*@-exportheader@*/ void FFI_HIDDEN ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) -/*@=exportheader@*/ { const unsigned long bytes = ecif->cif->bytes; const unsigned long flags = ecif->cif->flags; @@ -433,6 +514,7 @@ if (fparg_count < NUM_FPR_ARG_REGISTERS64) *fpr_base.d++ = double_tmp; fparg_count++; + FFI_ASSERT (__LDBL_MANT_DIG__ == 106); FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); break; #endif @@ -515,6 +597,9 @@ unsigned type = cif->rtype->type; unsigned size = cif->rtype->size; + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + NUM_FPR_ARG_REGISTERS = 0; + if (cif->abi != FFI_LINUX64) { /* All the machine-independent calculation of cif->bytes will be wrong. @@ -536,11 +621,6 @@ /* Space for the mandatory parm save area and general registers. */ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); - -#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - if (type == FFI_TYPE_LONGDOUBLE) - type = FFI_TYPE_DOUBLE; -#endif } /* Return value handling. The rules for SYSV are as follows: @@ -549,19 +629,33 @@ - 64-bit integer values and structures between 5 and 8 bytes are returned in gpr3 and gpr4; - Single/double FP values are returned in fpr1; - - Larger structures and long double (if not equivalent to double) values - are allocated space and a pointer is passed as the first argument. + - Larger structures are allocated space and a pointer is passed as + the first argument. + - long doubles (if not equivalent to double) are returned in + fpr1,fpr2 for Linux and as for large structs for SysV. For LINUX64: - integer values in gpr3; - Structures/Unions by reference; - - Single/double FP values in fpr1, long double in fpr1,fpr2. */ + - Single/double FP values in fpr1, long double in fpr1,fpr2. + - soft-float float/doubles are treated as UINT32/UINT64 respectivley. + - soft-float long doubles are returned in gpr3-gpr6. */ switch (type) { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64 + && cif->abi != FFI_LINUX_SOFT_FLOAT) + goto byref; + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif case FFI_TYPE_DOUBLE: flags |= FLAG_RETURNS_64BITS; /* Fall through. */ case FFI_TYPE_FLOAT: - flags |= FLAG_RETURNS_FP; + /* With FFI_LINUX_SOFT_FLOAT no fp registers are used. */ + if (cif->abi != FFI_LINUX_SOFT_FLOAT) + flags |= FLAG_RETURNS_FP; break; case FFI_TYPE_UINT64: @@ -598,15 +692,8 @@ } } } - /* else fall through. */ #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: - if (type == FFI_TYPE_LONGDOUBLE && cif->abi == FFI_LINUX64) - { - flags |= FLAG_RETURNS_128BITS; - flags |= FLAG_RETURNS_FP; - break; - } + byref: #endif intarg_count++; flags |= FLAG_RETVAL_REFERENCE; @@ -631,11 +718,36 @@ switch ((*ptr)->type) { case FFI_TYPE_FLOAT: + /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */ + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_float_cif; fparg_count++; /* floating singles are not 8-aligned on stack */ break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT) + goto do_struct; + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + { + if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3 + || intarg_count < NUM_GPR_ARG_REGISTERS) + /* A long double in FFI_LINUX_SOFT_FLOAT can use only + a set of four consecutive gprs. If we have not enough, + we have to adjust the intarg_count value. */ + intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count; + intarg_count += 4; + break; + } + else + fparg_count++; + /* Fall thru */ +#endif case FFI_TYPE_DOUBLE: + /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */ + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_double_cif; fparg_count++; /* If this FP arg is going on the stack, it must be 8-byte-aligned. */ @@ -647,6 +759,7 @@ case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: + soft_double_cif: /* 'long long' arguments are passed as two words, but either both words must fit in registers or both go on the stack. If they go on the stack, they must @@ -664,7 +777,7 @@ case FFI_TYPE_STRUCT: #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: + do_struct: #endif /* We must allocate space for a copy of these to enforce pass-by-value. Pad the space up to a multiple of 16 @@ -674,6 +787,7 @@ /* Fall through (allocate space for the pointer). */ default: + soft_float_cif: /* Everything else is passed as a 4-byte word in a GPR, either the object itself or a pointer to it. */ intarg_count++; @@ -687,8 +801,13 @@ { #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE case FFI_TYPE_LONGDOUBLE: - fparg_count += 2; - intarg_count += 2; + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + intarg_count += 4; + else + { + fparg_count += 2; + intarg_count += 2; + } break; #endif case FFI_TYPE_FLOAT: @@ -751,24 +870,14 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_SYSV(/*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, +extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *, void (*fn)(void)); -extern void FFI_HIDDEN ffi_call_LINUX64(/*@out@*/ extended_cif *, - unsigned long, unsigned long, - /*@out@*/ unsigned long *, +extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, + unsigned long, unsigned long *, void (*fn)(void)); -/*@=declundef@*/ -/*@=exportheader@*/ void -ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -780,9 +889,7 @@ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -793,15 +900,13 @@ #ifndef POWERPC64 case FFI_SYSV: case FFI_GCC_SYSV: - /*@-usedef@*/ + case FFI_LINUX: + case FFI_LINUX_SOFT_FLOAT: ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ break; #else case FFI_LINUX64: - /*@-usedef@*/ ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ break; #endif default: @@ -815,27 +920,24 @@ #define MIN_CACHE_LINE_SIZE 8 static void -flush_icache (char *addr1, int size) +flush_icache (char *wraddr, char *xaddr, int size) { int i; - char * addr; for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) - { - addr = addr1 + i; - __asm__ volatile ("icbi 0,%0;" "dcbf 0,%0;" - : : "r" (addr) : "memory"); - } - addr = addr1 + size - 1; - __asm__ volatile ("icbi 0,%0;" "dcbf 0,%0;" "sync;" "isync;" - : : "r"(addr) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" + : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" + : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) + : "memory"); } #endif ffi_status -ffi_prep_closure (ffi_closure *closure, - ffi_cif *cif, - void (*fun) (ffi_cif *, void *, void **, void *), - void *user_data) +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) { #ifdef POWERPC64 void **tramp = (void **) &closure->tramp[0]; @@ -843,7 +945,7 @@ FFI_ASSERT (cif->abi == FFI_LINUX64); /* Copy function address and TOC from ffi_closure_LINUX64. */ memcpy (tramp, (char *) ffi_closure_LINUX64, 16); - tramp[2] = (void *) closure; + tramp[2] = codeloc; #else unsigned int *tramp; @@ -859,10 +961,10 @@ tramp[8] = 0x7c0903a6; /* mtctr r0 */ tramp[9] = 0x4e800420; /* bctr */ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */ - *(void **) &tramp[3] = (void *) closure; /* context */ + *(void **) &tramp[3] = codeloc; /* context */ /* Flush the icache. */ - flush_icache (&closure->tramp[0],FFI_TRAMPOLINE_SIZE); + flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); #endif closure->cif = cif; @@ -920,14 +1022,17 @@ For FFI_SYSV the result is passed in r3/r4 if the struct size is less or equal 8 bytes. */ - if (cif->rtype->type == FFI_TYPE_STRUCT) + if ((cif->rtype->type == FFI_TYPE_STRUCT + && !((cif->abi == FFI_SYSV) && (size <= 8))) +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + || (cif->rtype->type == FFI_TYPE_LONGDOUBLE + && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT) +#endif + ) { - if (!((cif->abi == FFI_SYSV) && (size <= 8))) - { - rvalue = (void *) *pgr; - ng++; - pgr++; - } + rvalue = (void *) *pgr; + ng++; + pgr++; } i = 0; @@ -974,6 +1079,7 @@ case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: + soft_float_closure: /* there are 8 gpr registers used to pass values */ if (ng < 8) { @@ -989,6 +1095,9 @@ break; case FFI_TYPE_STRUCT: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + do_struct: +#endif /* Structs are passed by reference. The address will appear in a gpr if it is one of the first 8 arguments. */ if (ng < 8) @@ -1006,6 +1115,7 @@ case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: + soft_double_closure: /* passing long long ints are complex, they must * be passed in suitable register pairs such as * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) @@ -1037,6 +1147,9 @@ break; case FFI_TYPE_FLOAT: + /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */ + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_float_closure; /* unfortunately float values are stored as doubles * in the ffi_closure_SYSV code (since we don't check * the type in that routine). @@ -1060,12 +1173,14 @@ * naughty thing to do but... */ avalue[i] = pst; - nf++; pst += 1; } break; case FFI_TYPE_DOUBLE: + /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */ + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + goto soft_double_closure; /* On the outgoing stack all values are aligned to 8 */ /* there are 8 64bit floating point registers */ @@ -1080,11 +1195,47 @@ if (((long) pst) & 4) pst++; avalue[i] = pst; - nf++; pst += 2; } break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT) + goto do_struct; + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + { /* Test if for the whole long double, 4 gprs are available. + otherwise the stuff ends up on the stack. */ + if (ng < 5) + { + avalue[i] = pgr; + pgr += 4; + ng += 4; + } + else + { + avalue[i] = pst; + pst += 4; + } + break; + } + if (nf < 7) + { + avalue[i] = pfr; + pfr += 2; + nf += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 4; + nf = 8; + } + break; +#endif + default: FFI_ASSERT (0); } @@ -1101,8 +1252,36 @@ if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT && size <= 8) return FFI_SYSV_TYPE_SMALL_STRUCT + size; - return cif->rtype->type; - +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE + && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT) + return FFI_TYPE_STRUCT; +#endif + /* With FFI_LINUX_SOFT_FLOAT floats and doubles are handled like UINT32 + respectivley UINT64. */ + if (cif->abi == FFI_LINUX_SOFT_FLOAT) + { + switch (cif->rtype->type) + { + case FFI_TYPE_FLOAT: + return FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + return FFI_TYPE_UINT64; + break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + return FFI_TYPE_UINT128; + break; +#endif + default: + return cif->rtype->type; + } + } + else + { + return cif->rtype->type; + } } int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *, Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffitarget.h Fri Feb 22 08:36:45 2008 @@ -1,5 +1,6 @@ /* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. + Copyright (C) 2007 Free Software Foundation, Inc Target configuration macros for PowerPC. Permission is hereby granted, free of charge, to any person obtaining @@ -13,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -43,10 +45,20 @@ FFI_SYSV, FFI_GCC_SYSV, FFI_LINUX64, + FFI_LINUX, + FFI_LINUX_SOFT_FLOAT, # ifdef POWERPC64 FFI_DEFAULT_ABI = FFI_LINUX64, # else +# if (!defined(__NO_FPRS__) && (__LDBL_MANT_DIG__ == 106)) + FFI_DEFAULT_ABI = FFI_LINUX, +# else +# ifdef __NO_FPRS__ + FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT, +# else FFI_DEFAULT_ABI = FFI_GCC_SYSV, +# endif +# endif # endif #endif @@ -69,7 +81,7 @@ FFI_DEFAULT_ABI = FFI_SYSV, #endif - FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 + FFI_LAST_ABI } ffi_abi; #endif @@ -78,8 +90,14 @@ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 +/* For additional types like the below, take care about the order in + ppc_closures.S. They must follow after the FFI_TYPE_LAST. */ + +/* Needed for soft-float long-double-128 support. */ +#define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1) + /* Needed for FFI_SYSV small structure returns. */ -#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST) +#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2) #if defined(POWERPC64) || defined(POWERPC_AIX) #define FFI_TRAMPOLINE_SIZE 24 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S Fri Feb 22 08:36:45 2008 @@ -47,8 +47,8 @@ std %r0, 16(%r1) mr %r28, %r1 /* our AP. */ - stdux %r1, %r1, %r4 .LCFI0: + stdux %r1, %r1, %r4 mr %r31, %r5 /* flags, */ mr %r30, %r6 /* rvalue, */ mr %r29, %r7 /* function address. */ @@ -100,6 +100,10 @@ /* Make the call. */ bctrl + /* This must follow the call immediately, the unwinder + uses this to find out if r2 has been saved or not. */ + ld %r2, 40(%r1) + /* Now, deal with the return value. */ mtcrf 0x01, %r31 bt- 30, .Ldone_return_value @@ -109,7 +113,6 @@ .Ldone_return_value: /* Restore the registers we used and return. */ - ld %r2, 40(%r1) mr %r1, %r28 ld %r0, 16(%r28) ld %r28, -32(%r1) @@ -120,12 +123,10 @@ blr .Lfp_return_value: - bt 27, .Lfd_return_value bf 28, .Lfloat_return_value stfd %f1, 0(%r30) - b .Ldone_return_value -.Lfd_return_value: - stfd %f1, 0(%r30) + mtcrf 0x02, %r31 /* cr6 */ + bf 27, .Ldone_return_value stfd %f2, 8(%r30) b .Ldone_return_value .Lfloat_return_value: Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S Fri Feb 22 08:36:45 2008 @@ -28,6 +28,7 @@ stw %r9, 40(%r1) stw %r10,44(%r1) +#ifndef __NO_FPRS__ # next save fpr 1 to fpr 8 (aligned to 8) stfd %f1, 48(%r1) stfd %f2, 56(%r1) @@ -37,6 +38,7 @@ stfd %f6, 88(%r1) stfd %f7, 96(%r1) stfd %f8, 104(%r1) +#endif # set up registers for the routine that actually does the work # get the context pointer from the trampoline @@ -58,218 +60,190 @@ # make the call bl ffi_closure_helper_SYSV at local - +.Lret: # now r3 contains the return type # so use it to look up in a table # so we know how to deal with each type # look up the proper starting point in table # by using return type as offset - addi %r6,%r1,112 # get pointer to results area - bl .Lget_ret_type0_addr # get pointer to .Lret_type0 into LR - mflr %r4 # move to r4 - slwi %r3,%r3,4 # now multiply return type by 16 - add %r3,%r3,%r4 # add contents of table to table address + + mflr %r4 # move address of .Lret to r4 + slwi %r3,%r3,4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + lwz %r0,148(%r1) + add %r3,%r3,%r4 # add contents of table to table address mtctr %r3 - bctr # jump to it + bctr # jump to it .LFE1: # Each of the ret_typeX code fragments has to be exactly 16 bytes long # (4 instructions). For cache effectiveness we align to a 16 byte boundary # first. .align 4 - - nop - nop - nop -.Lget_ret_type0_addr: - blrl - # case FFI_TYPE_VOID .Lret_type0: - b .Lfinish - nop - nop + mtlr %r0 + addi %r1,%r1,144 + blr nop # case FFI_TYPE_INT -.Lret_type1: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 +.Lfinish: + addi %r1,%r1,144 + blr # case FFI_TYPE_FLOAT -.Lret_type2: - lfs %f1,0(%r6) - b .Lfinish - nop - nop + lfs %f1,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_DOUBLE -.Lret_type3: - lfd %f1,0(%r6) - b .Lfinish - nop - nop + lfd %f1,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_LONGDOUBLE -.Lret_type4: - lfd %f1,0(%r6) + lfd %f1,112+0(%r1) + lfd %f2,112+8(%r1) + mtlr %r0 b .Lfinish - nop - nop # case FFI_TYPE_UINT8 -.Lret_type5: - lbz %r3,3(%r6) - b .Lfinish - nop - nop + lbz %r3,112+3(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT8 -.Lret_type6: - lbz %r3,3(%r6) + lbz %r3,112+3(%r1) extsb %r3,%r3 + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_UINT16 -.Lret_type7: - lhz %r3,2(%r6) - b .Lfinish - nop - nop + lhz %r3,112+2(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT16 -.Lret_type8: - lha %r3,2(%r6) - b .Lfinish - nop - nop + lha %r3,112+2(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_UINT32 -.Lret_type9: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_SINT32 -.Lret_type10: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_TYPE_UINT64 -.Lret_type11: - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_SINT64 -.Lret_type12: - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop # case FFI_TYPE_STRUCT -.Lret_type13: - b .Lfinish - nop - nop + mtlr %r0 + addi %r1,%r1,144 + blr nop # case FFI_TYPE_POINTER -.Lret_type14: - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr + +# case FFI_TYPE_UINT128 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + lwz %r5,112+8(%r1) + bl .Luint128 # The return types below are only used when the ABI type is FFI_SYSV. # case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct. -.Lret_type15: -# fall through. - lbz %r3,0(%r6) - b .Lfinish - nop - nop + lbz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct. -.Lret_type16: -# fall through. - lhz %r3,0(%r6) - b .Lfinish - nop - nop + lhz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct. -.Lret_type17: -# fall through. - lwz %r3,0(%r6) + lwz %r3,112+0(%r1) srwi %r3,%r3,8 + mtlr %r0 b .Lfinish - nop # case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct. -.Lret_type18: -# this one handles the structs from above too. - lwz %r3,0(%r6) - b .Lfinish - nop - nop + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + blr # case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct. -.Lret_type19: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,24 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct. -.Lret_type20: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,16 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct. -.Lret_type21: -# fall through. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) li %r5,8 b .Lstruct567 # case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct. -.Lret_type22: -# this one handles the above unhandled structs. - lwz %r3,0(%r6) - lwz %r4,4(%r6) + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 b .Lfinish - nop -# case done -.Lfinish: +.Lstruct567: + subfic %r6,%r5,32 + srw %r4,%r4,%r5 + slw %r6,%r3,%r6 + srw %r3,%r3,%r5 + or %r4,%r6,%r4 + mtlr %r0 + addi %r1,%r1,144 + blr - lwz %r0,148(%r1) +.Luint128: + lwz %r6,112+12(%r1) mtlr %r0 addi %r1,%r1,144 blr -.Lstruct567: - subfic %r0,%r5,32 - srw %r4,%r4,%r5 - slw %r0,%r3,%r0 - srw %r3,%r3,%r5 - or %r4,%r0,%r4 - b .Lfinish END(ffi_closure_SYSV) .section ".eh_frame",EH_FRAME_FLAGS, at progbits Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S Fri Feb 22 08:36:45 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- - sysv.h - Copyright (c) 1998 Geoffrey Keating + sysv.S - Copyright (c) 1998 Geoffrey Keating + Copyright (C) 2007 Free Software Foundation, Inc PowerPC Assembly glue. @@ -98,13 +99,17 @@ bctrl /* Now, deal with the return value. */ - mtcrf 0x01,%r31 + mtcrf 0x01,%r31 /* cr7 */ bt- 31,L(small_struct_return_value) bt- 30,L(done_return_value) bt- 29,L(fp_return_value) stw %r3,0(%r30) bf+ 28,L(done_return_value) stw %r4,4(%r30) + mtcrf 0x02,%r31 /* cr6 */ + bf 27,L(done_return_value) + stw %r5,8(%r30) + stw %r6,12(%r30) /* Fall through... */ L(done_return_value): @@ -121,6 +126,9 @@ L(fp_return_value): bf 28,L(float_return_value) stfd %f1,0(%r30) + mtcrf 0x02,%r31 /* cr6 */ + bf 27,L(done_return_value) + stfd %f2,8(%r30) b L(done_return_value) L(float_return_value): stfs %f1,0(%r30) From python-checkins at python.org Fri Feb 22 08:44:46 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 08:44:46 +0100 (CET) Subject: [Python-checkins] r60944 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi_darwin.c Message-ID: <20080222074446.0C4D11E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 08:44:45 2008 New Revision: 60944 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi_darwin.c Log: More files from libffi-3.0.2 (added function prototypes). Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi_darwin.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi_darwin.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi_darwin.c Fri Feb 22 08:44:45 2008 @@ -1,12 +1,13 @@ #if !(defined(__APPLE__) && !defined(__ppc__)) /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998 Geoffrey Keating + ffi_darwin.c - PowerPC Foreign Function Interface - - Darwin ABI support (c) 2001 John Hornkvist - AIX ABI support (c) 2002 Free Software Foundation, Inc. + Copyright (C) 1998 Geoffrey Keating + Copyright (C) 2001 John Hornkvist + Copyright (C) 2002, 2006, 2007 Free Software Foundation, Inc. + FFI support for Darwin and AIX. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including @@ -80,9 +81,7 @@ */ -/*@-exportheader@*/ void ffi_prep_args(extended_cif *ecif, unsigned *const stack) -/*@=exportheader@*/ { const unsigned bytes = ecif->cif->bytes; const unsigned flags = ecif->cif->flags; @@ -228,6 +227,48 @@ //FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); } +/* Adjust the size of S to be correct for Darwin. + On Darwin, the first field of a structure has natural alignment. */ + +static void +darwin_adjust_aggregate_sizes (ffi_type *s) +{ + int i; + + if (s->type != FFI_TYPE_STRUCT) + return; + + s->size = 0; + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p; + int align; + + p = s->elements[i]; + darwin_adjust_aggregate_sizes (p); + if (i == 0 + && (p->type == FFI_TYPE_UINT64 + || p->type == FFI_TYPE_SINT64 + || p->type == FFI_TYPE_DOUBLE + || p->alignment == 8)) + align = 8; + else if (p->alignment == 16 || p->alignment < 4) + align = p->alignment; + else + align = 4; + s->size = ALIGN(s->size, align) + p->size; + } + + s->size = ALIGN(s->size, s->alignment); + + if (s->elements[0]->type == FFI_TYPE_UINT64 + || s->elements[0]->type == FFI_TYPE_SINT64 + || s->elements[0]->type == FFI_TYPE_DOUBLE + || s->elements[0]->alignment == 8) + s->alignment = s->alignment > 8 ? s->alignment : 8; + /* Do not add additional tail padding. */ +} + /* Perform machine dependent cif processing. */ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { @@ -240,8 +281,16 @@ unsigned size_al = 0; /* All the machine-independent calculation of cif->bytes will be wrong. + All the calculation of structure sizes will also be wrong. Redo the calculation for DARWIN. */ + if (cif->abi == FFI_DARWIN) + { + darwin_adjust_aggregate_sizes (cif->rtype); + for (i = 0; i < cif->nargs; i++) + darwin_adjust_aggregate_sizes (cif->arg_types[i]); + } + /* Space for the frame pointer, callee's LR, CR, etc, and for the asm's temp regs. */ @@ -376,25 +425,12 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_AIX(/*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void), - void (*fn2)(extended_cif *, unsigned *const)); -extern void ffi_call_DARWIN(/*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void), - void (*fn2)(extended_cif *, unsigned *const)); -/*@=declundef@*/ -/*@=exportheader@*/ - -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +extern void ffi_call_AIX(extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void)); +extern void ffi_call_DARWIN(extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -407,9 +443,7 @@ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -417,16 +451,12 @@ switch (cif->abi) { case FFI_AIX: - /*@-usedef@*/ - ffi_call_AIX(&ecif, -cif->bytes, - cif->flags, ecif.rvalue, fn, ffi_prep_args); - /*@=usedef@*/ + ffi_call_AIX(&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn, + ffi_prep_args); break; case FFI_DARWIN: - /*@-usedef@*/ - ffi_call_DARWIN(&ecif, -cif->bytes, - cif->flags, ecif.rvalue, fn, ffi_prep_args); - /*@=usedef@*/ + ffi_call_DARWIN(&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn, + ffi_prep_args); break; default: FFI_ASSERT(0); @@ -499,10 +529,11 @@ */ ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { unsigned int *tramp; struct ffi_aix_trampoline_struct *tramp_aix; @@ -524,14 +555,14 @@ tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ tramp[9] = 0x4e800420; /* bctr */ tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ - tramp[3] = (unsigned long) closure; /* context */ + tramp[3] = (unsigned long) codeloc; /* context */ closure->cif = cif; closure->fun = fun; closure->user_data = user_data; /* Flush the icache. Only necessary on Darwin. */ - flush_range(&closure->tramp[0],FFI_TRAMPOLINE_SIZE); + flush_range(codeloc, FFI_TRAMPOLINE_SIZE); break; @@ -544,7 +575,7 @@ tramp_aix->code_pointer = fd->code_pointer; tramp_aix->toc = fd->toc; - tramp_aix->static_chain = closure; + tramp_aix->static_chain = codeloc; closure->cif = cif; closure->fun = fun; closure->user_data = user_data; From python-checkins at python.org Fri Feb 22 08:53:11 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 08:53:11 +0100 (CET) Subject: [Python-checkins] r60945 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S Message-ID: <20080222075311.4A84C1E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 08:53:10 2008 New Revision: 60945 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c Fri Feb 22 08:53:10 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998, 2001 Red Hat, Inc. + ffi.c - Copyright (c) 1998, 2001, 2007 Red Hat, Inc. Alpha Foreign Function Interface @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -169,10 +170,11 @@ ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { unsigned int *tramp; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffitarget.h Fri Feb 22 08:53:10 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -33,8 +34,8 @@ typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_OSF, - FFI_DEFAULT_ABI = FFI_OSF, - FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_OSF } ffi_abi; #endif @@ -45,4 +46,3 @@ #define FFI_NATIVE_RAW_API 0 #endif - Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S Fri Feb 22 08:53:10 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From python-checkins at python.org Fri Feb 22 08:54:57 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 08:54:57 +0100 (CET) Subject: [Python-checkins] r60946 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S Message-ID: <20080222075457.2D4711E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 08:54:56 2008 New Revision: 60946 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c Fri Feb 22 08:54:56 2008 @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -31,9 +32,7 @@ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ -/*@-exportheader@*/ void ffi_prep_args(char *stack, extended_cif *ecif) -/*@=exportheader@*/ { register unsigned int i; register void **p_argv; @@ -42,7 +41,7 @@ argp = stack; - if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) { + if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { *(void **) argp = ecif->rvalue; argp += 4; } @@ -60,6 +59,9 @@ argp = (char *) ALIGN(argp, (*p_arg)->alignment); } + if ((*p_arg)->type == FFI_TYPE_STRUCT) + argp = (char *) ALIGN(argp, 4); + z = (*p_arg)->size; if (z < sizeof(int)) { @@ -83,7 +85,7 @@ break; case FFI_TYPE_STRUCT: - *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + memcpy(argp, *p_argv, (*p_arg)->size); break; default: @@ -117,7 +119,6 @@ switch (cif->rtype->type) { case FFI_TYPE_VOID: - case FFI_TYPE_STRUCT: case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: cif->flags = (unsigned) cif->rtype->type; @@ -128,6 +129,17 @@ cif->flags = (unsigned) FFI_TYPE_SINT64; break; + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4) + /* A Composite Type not larger than 4 bytes is returned in r0. */ + cif->flags = (unsigned)FFI_TYPE_INT; + else + /* A Composite Type larger than 4 bytes, or whose size cannot + be determined statically ... is stored in memory at an + address passed [in r0]. */ + cif->flags = (unsigned)FFI_TYPE_STRUCT; + break; + default: cif->flags = FFI_TYPE_INT; break; @@ -136,50 +148,162 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_SYSV(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)()); -/*@=declundef@*/ -/*@=exportheader@*/ +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; + int small_struct = (cif->flags == FFI_TYPE_INT + && cif->rtype->type == FFI_TYPE_STRUCT); + ecif.cif = cif; ecif.avalue = avalue; + + unsigned int temp; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ if ((rvalue == NULL) && - (cif->rtype->type == FFI_TYPE_STRUCT)) + (cif->flags == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } + else if (small_struct) + ecif.rvalue = &temp; else ecif.rvalue = rvalue; - - + switch (cif->abi) { case FFI_SYSV: - /*@-usedef@*/ - ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, + fn); + break; default: FFI_ASSERT(0); break; } + if (small_struct) + memcpy (rvalue, &temp, cif->rtype->size); +} + +/** private members **/ + +static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, + void** args, ffi_cif* cif); + +void ffi_closure_SYSV (ffi_closure *); + +/* This function is jumped to by the trampoline */ + +unsigned int +ffi_closure_SYSV_inner (closure, respp, args) + ffi_closure *closure; + void **respp; + void *args; +{ + // our various things... + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void*)); + + /* this call will initialize ARG_AREA, such that each + * element in that array points to the corresponding + * value on the stack; and if the function returns + * a structure, it will re-set RESP to point to the + * structure return address. */ + + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); + + (closure->fun) (cif, *respp, arg_area, closure->user_data); + + return cif->flags; +} + +/*@-exportheader@*/ +static void +ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif) +/*@=exportheader@*/ +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + if ( cif->flags == FFI_TYPE_STRUCT ) { + *rvalue = *(void **) argp; + argp += 4; + } + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) + { + size_t z; + + size_t alignment = (*p_arg)->alignment; + if (alignment < 4) + alignment = 4; + /* Align if necessary */ + if ((alignment - 1) & (unsigned) argp) { + argp = (char *) ALIGN(argp, alignment); + } + + z = (*p_arg)->size; + + /* because we're little endian, this is what it turns into. */ + + *p_argv = (void*) argp; + + p_argv++; + argp += z; + } + + return; +} + +/* How to make a trampoline. */ + +#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ +({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ + unsigned int __fun = (unsigned int)(FUN); \ + unsigned int __ctx = (unsigned int)(CTX); \ + *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \ + *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ + *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ + *(unsigned int*) &__tramp[12] = __ctx; \ + *(unsigned int*) &__tramp[16] = __fun; \ + __clear_cache((&__tramp[0]), (&__tramp[19])); \ + }) + + +/* the cif must already be prep'ed */ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + FFI_ASSERT (cif->abi == FFI_SYSV); + + FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ + &ffi_closure_SYSV, \ + codeloc); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; } Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffitarget.h Fri Feb 22 08:54:56 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -40,7 +41,8 @@ /* ---- Definitions for closures ----------------------------------------- */ -#define FFI_CLOSURES 0 +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 20 #define FFI_NATIVE_RAW_API 0 #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S Fri Feb 22 08:54:56 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -82,6 +83,14 @@ # define call_reg(x) mov lr, pc ; mov pc, x #endif +/* Conditionally compile unwinder directives. */ +#ifdef __ARM_EABI__ +#define UNWIND +#else +#define UNWIND @ +#endif + + #if defined(__thumb__) && !defined(__THUMB_INTERWORK__) .macro ARM_FUNC_START name .text @@ -92,6 +101,7 @@ bx pc nop .arm + UNWIND .fnstart /* A hook to tell gdb that we've switched to ARM mode. Also used to call directly from other local arm routines. */ _L__\name: @@ -102,6 +112,7 @@ .align 0 .arm ENTRY(\name) + UNWIND .fnstart .endm #endif @@ -134,8 +145,11 @@ ARM_FUNC_START ffi_call_SYSV @ Save registers stmfd sp!, {r0-r3, fp, lr} + UNWIND .save {r0-r3, fp, lr} mov fp, sp + UNWIND .setfp fp, sp + @ Make room for all of the new args. sub sp, fp, r2 @@ -205,5 +219,78 @@ RETLDM "r0-r3,fp" .ffi_call_SYSV_end: + UNWIND .fnend .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) +/* + unsigned int FFI_HIDDEN + ffi_closure_SYSV_inner (closure, respp, args) + ffi_closure *closure; + void **respp; + void *args; +*/ + +ARM_FUNC_START ffi_closure_SYSV + UNWIND .pad #16 + add ip, sp, #16 + stmfd sp!, {ip, lr} + UNWIND .save {r0, lr} + add r2, sp, #8 + .pad #16 + sub sp, sp, #16 + str sp, [sp, #8] + add r1, sp, #8 + bl ffi_closure_SYSV_inner + cmp r0, #FFI_TYPE_INT + beq .Lretint + + cmp r0, #FFI_TYPE_FLOAT +#ifdef __SOFTFP__ + beq .Lretint +#else + beq .Lretfloat +#endif + + cmp r0, #FFI_TYPE_DOUBLE +#ifdef __SOFTFP__ + beq .Lretlonglong +#else + beq .Lretdouble +#endif + + cmp r0, #FFI_TYPE_LONGDOUBLE +#ifdef __SOFTFP__ + beq .Lretlonglong +#else + beq .Lretlongdouble +#endif + + cmp r0, #FFI_TYPE_SINT64 + beq .Lretlonglong +.Lclosure_epilogue: + add sp, sp, #16 + ldmfd sp, {sp, pc} +.Lretint: + ldr r0, [sp] + b .Lclosure_epilogue +.Lretlonglong: + ldr r0, [sp] + ldr r1, [sp, #4] + b .Lclosure_epilogue + +#ifndef __SOFTFP__ +.Lretfloat: + ldfs f0, [sp] + b .Lclosure_epilogue +.Lretdouble: + ldfd f0, [sp] + b .Lclosure_epilogue +.Lretlongdouble: + ldfd f0, [sp] + b .Lclosure_epilogue +#endif + +.ffi_closure_SYSV_end: + UNWIND .fnend + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + From python-checkins at python.org Fri Feb 22 09:12:15 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:12:15 +0100 (CET) Subject: [Python-checkins] r60947 - python/branches/libffi3-branch/configure python/branches/libffi3-branch/configure.in Message-ID: <20080222081215.07ABA1E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:12:14 2008 New Revision: 60947 Modified: python/branches/libffi3-branch/configure python/branches/libffi3-branch/configure.in Log: Testing: Remove the automatic --with-system-ffi configure argument for alpha, arm, ppc, and s390 platforms. Modified: python/branches/libffi3-branch/configure ============================================================================== --- python/branches/libffi3-branch/configure (original) +++ python/branches/libffi3-branch/configure Fri Feb 22 09:12:14 2008 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 60536 . +# From configure.in Revision: 60765 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -13223,138 +13223,6 @@ # Check for use of the system libffi library -if test "${ac_cv_header_ffi_h+set}" = set; then - { echo "$as_me:$LINENO: checking for ffi.h" >&5 -echo $ECHO_N "checking for ffi.h... $ECHO_C" >&6; } -if test "${ac_cv_header_ffi_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_ffi_h" >&5 -echo "${ECHO_T}$ac_cv_header_ffi_h" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking ffi.h usability" >&5 -echo $ECHO_N "checking ffi.h usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking ffi.h presence" >&5 -echo $ECHO_N "checking ffi.h presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: ffi.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: ffi.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: ffi.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: ffi.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: ffi.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: ffi.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: ffi.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: ffi.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: ffi.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: ffi.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: ffi.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------------------------ ## -## Report this to http://www.python.org/python-bugs ## -## ------------------------------------------------ ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for ffi.h" >&5 -echo $ECHO_N "checking for ffi.h... $ECHO_C" >&6; } -if test "${ac_cv_header_ffi_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_ffi_h=$ac_header_preproc -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_ffi_h" >&5 -echo "${ECHO_T}$ac_cv_header_ffi_h" >&6; } - -fi - - { echo "$as_me:$LINENO: checking for --with-system-ffi" >&5 echo $ECHO_N "checking for --with-system-ffi... $ECHO_C" >&6; } @@ -13364,15 +13232,6 @@ fi -if test -z "$with_system_ffi" && test "$ac_cv_header_ffi_h" = yes; then - case "$ac_sys_system/`uname -m`" in - Linux/alpha*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/arm*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/ppc*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/s390*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - *) with_system_ffi="no" - esac -fi { echo "$as_me:$LINENO: result: $with_system_ffi" >&5 echo "${ECHO_T}$with_system_ffi" >&6; } Modified: python/branches/libffi3-branch/configure.in ============================================================================== --- python/branches/libffi3-branch/configure.in (original) +++ python/branches/libffi3-branch/configure.in Fri Feb 22 09:12:14 2008 @@ -1754,20 +1754,10 @@ [AC_MSG_RESULT(no)]) # Check for use of the system libffi library -AC_CHECK_HEADER(ffi.h) AC_MSG_CHECKING(for --with-system-ffi) AC_ARG_WITH(system_ffi, AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library)) -if test -z "$with_system_ffi" && test "$ac_cv_header_ffi_h" = yes; then - case "$ac_sys_system/`uname -m`" in - Linux/alpha*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/arm*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/ppc*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - Linux/s390*) with_system_ffi="yes"; CONFIG_ARGS="$CONFIG_ARGS --with-system-ffi";; - *) with_system_ffi="no" - esac -fi AC_MSG_RESULT($with_system_ffi) # Determine if signalmodule should be used. From python-checkins at python.org Fri Feb 22 09:22:21 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:22:21 +0100 (CET) Subject: [Python-checkins] r60948 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S Message-ID: <20080222082221.05DA31E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:22:20 2008 New Revision: 60948 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c Fri Feb 22 09:22:20 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 2003, 2004 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 2003, 2004, 2007 Red Hat, Inc. SPARC Foreign Function Interface @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -425,10 +426,11 @@ #endif ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; unsigned long fn; @@ -443,7 +445,7 @@ tramp[3] = 0x01000000; /* nop */ *((unsigned long *) &tramp[4]) = fn; #else - unsigned long ctx = (unsigned long) closure; + unsigned long ctx = (unsigned long) codeloc; FFI_ASSERT (cif->abi == FFI_V8); fn = (unsigned long) ffi_closure_v8; tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffitarget.h Fri Feb 22 09:22:20 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S Fri Feb 22 09:22:20 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S Fri Feb 22 09:22:20 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From python-checkins at python.org Fri Feb 22 09:29:00 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:29:00 +0100 (CET) Subject: [Python-checkins] r60949 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S Message-ID: <20080222082900.2E87E1E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:28:59 2008 New Revision: 60949 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c Fri Feb 22 09:28:59 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2000 Software AG + ffi.c - Copyright (c) 2000, 2007 Software AG S390 Foreign Function Interface @@ -207,6 +207,12 @@ void *arg = *p_argv; int type = (*ptr)->type; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT) { @@ -364,6 +370,12 @@ cif->flags = FFI390_RET_DOUBLE; break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + cif->flags = FFI390_RET_STRUCT; + n_gpr++; + break; +#endif /* Integer values are returned in gpr 2 (and gpr 3 for 64-bit values on 31-bit machines). */ case FFI_TYPE_UINT64: @@ -400,6 +412,12 @@ { int type = (*ptr)->type; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT) { @@ -562,6 +580,12 @@ int deref_struct_pointer = 0; int type = (*ptr)->type; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + /* Check how a structure type is passed. */ if (type == FFI_TYPE_STRUCT) { @@ -662,6 +686,9 @@ /* Void is easy, and so is struct. */ case FFI_TYPE_VOID: case FFI_TYPE_STRUCT: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: +#endif break; /* Floating point values are returned in fpr 0. */ @@ -709,17 +736,18 @@ /*====================================================================*/ /* */ -/* Name - ffi_prep_closure. */ +/* Name - ffi_prep_closure_loc. */ /* */ /* Function - Prepare a FFI closure. */ /* */ /*====================================================================*/ ffi_status -ffi_prep_closure (ffi_closure *closure, - ffi_cif *cif, - void (*fun) (ffi_cif *, void *, void **, void *), - void *user_data) +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) { FFI_ASSERT (cif->abi == FFI_SYSV); @@ -728,7 +756,7 @@ *(short *)&closure->tramp [2] = 0x9801; /* lm %r0,%r1,6(%r1) */ *(short *)&closure->tramp [4] = 0x1006; *(short *)&closure->tramp [6] = 0x07f1; /* br %r1 */ - *(long *)&closure->tramp [8] = (long)closure; + *(long *)&closure->tramp [8] = (long)codeloc; *(long *)&closure->tramp[12] = (long)&ffi_closure_SYSV; #else *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ @@ -736,7 +764,7 @@ *(short *)&closure->tramp [4] = 0x100e; *(short *)&closure->tramp [6] = 0x0004; *(short *)&closure->tramp [8] = 0x07f1; /* br %r1 */ - *(long *)&closure->tramp[16] = (long)closure; + *(long *)&closure->tramp[16] = (long)codeloc; *(long *)&closure->tramp[24] = (long)&ffi_closure_SYSV; #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffitarget.h Fri Feb 22 09:28:59 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S Fri Feb 22 09:28:59 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From python-checkins at python.org Fri Feb 22 09:37:07 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:37:07 +0100 (CET) Subject: [Python-checkins] r60950 - in python/branches/libffi3-branch/Modules/_ctypes/libffi/src: cris/ffi.c cris/ffitarget.h frv/eabi.S frv/ffi.c frv/ffitarget.h m32r/ffi.c m68k/ffi.c m68k/ffitarget.h m68k/sysv.S pa/ffi.c pa/ffitarget.h pa/linux.S sh/ffi.c sh/ffitarget.h sh/sysv.S sh64/ffi.c sh64/ffitarget.h sh64/sysv.S Message-ID: <20080222083707.E1D0C1E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:37:07 2008 New Revision: 60950 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/eabi.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/sysv.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffi.c Fri Feb 22 09:37:07 2008 @@ -2,6 +2,7 @@ ffi.c - Copyright (c) 1998 Cygnus Solutions Copyright (c) 2004 Simon Posnjak Copyright (c) 2005 Axis Communications AB + Copyright (C) 2007 Free Software Foundation, Inc. CRIS Foreign Function Interface @@ -235,11 +236,11 @@ extern void ffi_call_SYSV (int (*)(char *, extended_cif *), extended_cif *, - unsigned, unsigned, unsigned *, void (*fn) ()) + unsigned, unsigned, unsigned *, void (*fn)(void)) __attribute__ ((__visibility__ ("hidden"))); void -ffi_call (ffi_cif * cif, void (*fn) (), void *rvalue, void **avalue) +ffi_call (ffi_cif * cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -360,10 +361,11 @@ /* API function: Prepare the trampoline. */ ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif *, void *, void **, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif *, void *, void **, void*), + void *user_data, + void *codeloc) { void *innerfn = ffi_prep_closure_inner; FFI_ASSERT (cif->abi == FFI_SYSV); @@ -375,7 +377,7 @@ memcpy (closure->tramp + ffi_cris_trampoline_fn_offset, &innerfn, sizeof (void *)); memcpy (closure->tramp + ffi_cris_trampoline_closure_offset, - &closure, sizeof (void *)); + &codeloc, sizeof (void *)); return FFI_OK; } Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/cris/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/eabi.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/eabi.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/eabi.S Fri Feb 22 09:37:07 2008 @@ -3,8 +3,6 @@ FR-V Assembly glue. - $Id: eabi.S,v 1.2 2006/03/03 20:24:46 theller Exp $ - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c Fri Feb 22 09:37:07 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2004 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc. FR-V Foreign Function Interface @@ -14,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -124,10 +126,10 @@ extended_cif *, unsigned, unsigned, unsigned *, - void (*fn)()); + void (*fn)(void)); void ffi_call(ffi_cif *cif, - void (*fn)(), + void (*fn)(void), void *rvalue, void **avalue) { @@ -243,14 +245,15 @@ } ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; unsigned long fn = (long) ffi_closure_eabi; - unsigned long cls = (long) closure; + unsigned long cls = (long) codeloc; #ifdef __FRV_FDPIC__ register void *got __asm__("gr15"); #endif @@ -259,7 +262,7 @@ fn = (unsigned long) ffi_closure_eabi; #ifdef __FRV_FDPIC__ - tramp[0] = &tramp[2]; + tramp[0] = &((unsigned int *)codeloc)[2]; tramp[1] = got; tramp[2] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ tramp[3] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ @@ -281,7 +284,8 @@ /* Cache flushing. */ for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++) - __asm__ volatile ("dcf @(%0,%1)\n\tici @(%0,%1)" :: "r" (tramp), "r" (i)); + __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i), + "r" (codeloc)); return FFI_OK; } Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c Fri Feb 22 09:37:07 2008 @@ -31,9 +31,7 @@ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ -/*@-exportheader@*/ void ffi_prep_args(char *stack, extended_cif *ecif) -/*@=exportheader@*/ { unsigned int i; int tmp; @@ -173,20 +171,10 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_SYSV(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)()); -/*@=declundef@*/ -/*@=exportheader@*/ - -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -198,9 +186,7 @@ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca (cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -208,7 +194,6 @@ switch (cif->abi) { case FFI_SYSV: - /*@-usedef@*/ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); if (cif->rtype->type == FFI_TYPE_STRUCT) @@ -237,7 +222,6 @@ } } } - /*@=usedef@*/ break; default: Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffi.c Fri Feb 22 09:37:07 2008 @@ -8,11 +8,23 @@ #include #include +#include +#include +#include + +void ffi_call_SYSV (extended_cif *, + unsigned, unsigned, + void *, void (*fn)(void)); +void *ffi_prep_args (void *stack, extended_cif *ecif); +void ffi_closure_SYSV (ffi_closure *); +void ffi_closure_struct_SYSV (ffi_closure *); +unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, + void *resp, void *args); /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments. */ -static void * +void * ffi_prep_args (void *stack, extended_cif *ecif) { unsigned int i; @@ -24,7 +36,7 @@ argp = stack; if (ecif->cif->rtype->type == FFI_TYPE_STRUCT - && ecif->cif->rtype->size > 8) + && !ecif->cif->flags) struct_value_ptr = ecif->rvalue; else struct_value_ptr = NULL; @@ -37,44 +49,47 @@ { size_t z; - /* Align if necessary. */ - if (((*p_arg)->alignment - 1) & (unsigned) argp) - argp = (char *) ALIGN (argp, (*p_arg)->alignment); - - z = (*p_arg)->size; - if (z < sizeof (int)) + z = (*p_arg)->size; + if (z < sizeof (int)) + { + switch ((*p_arg)->type) { - switch ((*p_arg)->type) - { - case FFI_TYPE_SINT8: - *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; - break; - - case FFI_TYPE_UINT8: - *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; - break; - - case FFI_TYPE_SINT16: - *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; - break; - - case FFI_TYPE_UINT16: - *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; - break; - - case FFI_TYPE_STRUCT: - memcpy (argp + sizeof (int) - z, *p_argv, z); - break; - - default: - FFI_ASSERT (0); - } - z = sizeof (int); + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_STRUCT: + memcpy (argp + sizeof (int) - z, *p_argv, z); + break; + + default: + FFI_ASSERT (0); } - else - memcpy (argp, *p_argv, z); - p_argv++; - argp += z; + z = sizeof (int); + } + else + { + memcpy (argp, *p_argv, z); + + /* Align if necessary. */ + if ((sizeof(int) - 1) & z) + z = ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; } return struct_value_ptr; @@ -86,7 +101,8 @@ #define CIF_FLAGS_DOUBLE 8 #define CIF_FLAGS_LDOUBLE 16 #define CIF_FLAGS_POINTER 32 -#define CIF_FLAGS_STRUCT 64 +#define CIF_FLAGS_STRUCT1 64 +#define CIF_FLAGS_STRUCT2 128 /* Perform machine dependent cif processing */ ffi_status @@ -100,12 +116,24 @@ break; case FFI_TYPE_STRUCT: - if (cif->rtype->size > 4 && cif->rtype->size <= 8) - cif->flags = CIF_FLAGS_DINT; - else if (cif->rtype->size <= 4) - cif->flags = CIF_FLAGS_STRUCT; - else - cif->flags = 0; + switch (cif->rtype->size) + { + case 1: + cif->flags = CIF_FLAGS_STRUCT1; + break; + case 2: + cif->flags = CIF_FLAGS_STRUCT2; + break; + case 4: + cif->flags = CIF_FLAGS_INT; + break; + case 8: + cif->flags = CIF_FLAGS_DINT; + break; + default: + cif->flags = 0; + break; + } break; case FFI_TYPE_FLOAT: @@ -137,19 +165,14 @@ return FFI_OK; } -extern void ffi_call_SYSV (void *(*) (void *, extended_cif *), - extended_cif *, - unsigned, unsigned, unsigned, - void *, void (*fn) ()); - void -ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ecif.cif = cif; ecif.avalue = avalue; - + /* If the return value is a struct and we don't have a return value address then we need to make one. */ @@ -159,13 +182,11 @@ ecif.rvalue = alloca (cif->rtype->size); else ecif.rvalue = rvalue; - - - switch (cif->abi) + + switch (cif->abi) { case FFI_SYSV: - ffi_call_SYSV (ffi_prep_args, &ecif, cif->bytes, - cif->flags, cif->rtype->size * 8, + ffi_call_SYSV (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); break; @@ -174,3 +195,84 @@ break; } } + +static void +ffi_prep_incoming_args_SYSV (char *stack, void **avalue, ffi_cif *cif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z <= 4) + { + *p_argv = (void *) (argp + 4 - z); + + z = 4; + } + else + { + *p_argv = (void *) argp; + + /* Align if necessary */ + if ((sizeof(int) - 1) & z) + z = ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } +} + +unsigned int +ffi_closure_SYSV_inner (ffi_closure *closure, void *resp, void *args) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_incoming_args_SYSV(args, arg_area, cif); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + FFI_ASSERT (cif->abi == FFI_SYSV); + + *(unsigned short *)closure->tramp = 0x207c; + *(void **)(closure->tramp + 2) = codeloc; + *(unsigned short *)(closure->tramp + 6) = 0x4ef9; + if (cif->rtype->type == FFI_TYPE_STRUCT + && !cif->flags) + *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV; + else + *(void **)(closure->tramp + 8) = ffi_closure_SYSV; + + syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE, + FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -40,7 +41,8 @@ /* ---- Definitions for closures ----------------------------------------- */ -#define FFI_CLOSURES 0 +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 16 #define FFI_NATIVE_RAW_API 0 #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S Fri Feb 22 09:37:07 2008 @@ -8,40 +8,60 @@ #include #include +#ifdef HAVE_AS_CFI_PSEUDO_OP +#define CFI_STARTPROC() .cfi_startproc +#define CFI_OFFSET(reg,off) .cfi_offset reg,off +#define CFI_DEF_CFA(reg,off) .cfi_def_cfa reg,off +#define CFI_ENDPROC() .cfi_endproc +#else +#define CFI_STARTPROC() +#define CFI_OFFSET(reg,off) +#define CFI_DEF_CFA(reg,off) +#define CFI_ENDPROC() +#endif + .text .globl ffi_call_SYSV .type ffi_call_SYSV, at function + .align 4 ffi_call_SYSV: + CFI_STARTPROC() link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) move.l %d2,-(%sp) + CFI_OFFSET(2,-12) | Make room for all of the new args. - sub.l 16(%fp),%sp + sub.l 12(%fp),%sp | Call ffi_prep_args - move.l 12(%fp),-(%sp) + move.l 8(%fp),-(%sp) pea 4(%sp) - move.l 8(%fp),%a0 - jsr (%a0) +#if !defined __PIC__ + jsr ffi_prep_args +#else + bsr.l ffi_prep_args at PLTPC +#endif addq.l #8,%sp | Pass pointer to struct value, if any move.l %a0,%a1 | Call the function - move.l 32(%fp),%a0 + move.l 24(%fp),%a0 jsr (%a0) | Remove the space we pushed for the args - add.l 16(%fp),%sp + add.l 12(%fp),%sp | Load the pointer to storage for the return value - move.l 28(%fp),%a1 + move.l 20(%fp),%a1 | Load the return type code - move.l 20(%fp),%d2 + move.l 16(%fp),%d2 | If the return value pointer is NULL, assume no return value. tst.l %a1 @@ -79,19 +99,111 @@ retpointer: btst #5,%d2 - jbeq retstruct + jbeq retstruct1 move.l %a0,(%a1) jbra epilogue -retstruct: +retstruct1: btst #6,%d2 + jbeq retstruct2 + move.b %d0,(%a1) + jbra epilogue + +retstruct2: + btst #7,%d2 jbeq noretval - move.l 24(%fp),%d2 - bfins %d0,(%a1){#0,%d2} + move.w %d0,(%a1) noretval: epilogue: move.l (%sp)+,%d2 - unlk %a6 + unlk %fp rts + CFI_ENDPROC() .size ffi_call_SYSV,.-ffi_call_SYSV + + .globl ffi_closure_SYSV + .type ffi_closure_SYSV, @function + .align 4 + +ffi_closure_SYSV: + CFI_STARTPROC() + link %fp,#-12 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + pea -12(%fp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr ffi_closure_SYSV_inner +#else + bsr.l ffi_closure_SYSV_inner at PLTPC +#endif + + lsr.l #1,%d0 + jne 1f + jcc .Lcls_epilogue + move.l -12(%fp),%d0 +.Lcls_epilogue: + unlk %fp + rts +1: + lea -12(%fp),%a0 + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_float + move.l (%a0)+,%d0 + move.l (%a0),%d1 + jra .Lcls_epilogue +.Lcls_ret_float: + fmove.s (%a0),%fp0 + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_ldouble + fmove.d (%a0),%fp0 + jra .Lcls_epilogue +.Lcls_ret_ldouble: + fmove.x (%a0),%fp0 + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne .Lcls_ret_struct2 + jcs .Lcls_ret_struct1 + move.l (%a0),%a0 + move.l %a0,%d0 + jra .Lcls_epilogue +.Lcls_ret_struct1: + move.b (%a0),%d0 + jra .Lcls_epilogue +.Lcls_ret_struct2: + move.w (%a0),%d0 + jra .Lcls_epilogue + CFI_ENDPROC() + + .size ffi_closure_SYSV,.-ffi_closure_SYSV + + .globl ffi_closure_struct_SYSV + .type ffi_closure_struct_SYSV, @function + .align 4 + +ffi_closure_struct_SYSV: + CFI_STARTPROC() + link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + move.l %a1,-(%sp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr ffi_closure_SYSV_inner +#else + bsr.l ffi_closure_SYSV_inner at PLTPC +#endif + unlk %fp + rts + CFI_ENDPROC() + .size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c Fri Feb 22 09:37:07 2008 @@ -2,6 +2,7 @@ ffi.c - (c) 2003-2004 Randolph Chung HPPA Foreign Function Interface + HP-UX PA ABI support (c) 2006 Free Software Foundation, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -14,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -30,15 +32,19 @@ #include #define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) -#define ROUND_DOWN(v, a) (((size_t)(v) - (a) + 1) & ~((a) - 1)) + #define MIN_STACK_SIZE 64 #define FIRST_ARG_SLOT 9 #define DEBUG_LEVEL 0 -#define fldw(addr, fpreg) asm volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) -#define fstw(fpreg, addr) asm volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) -#define fldd(addr, fpreg) asm volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) -#define fstd(fpreg, addr) asm volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) +#define fldw(addr, fpreg) \ + __asm__ volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) +#define fstw(fpreg, addr) \ + __asm__ volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) +#define fldd(addr, fpreg) \ + __asm__ volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) +#define fstd(fpreg, addr) \ + __asm__ volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) #define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) @@ -47,16 +53,19 @@ size_t sz = t->size; /* Small structure results are passed in registers, - larger ones are passed by pointer. */ + larger ones are passed by pointer. Note that + small structures of size 2, 4 and 8 differ from + the corresponding integer types in that they have + different alignment requirements. */ if (sz <= 1) return FFI_TYPE_UINT8; else if (sz == 2) - return FFI_TYPE_UINT16; + return FFI_TYPE_SMALL_STRUCT2; else if (sz == 3) return FFI_TYPE_SMALL_STRUCT3; else if (sz == 4) - return FFI_TYPE_UINT32; + return FFI_TYPE_SMALL_STRUCT4; else if (sz == 5) return FFI_TYPE_SMALL_STRUCT5; else if (sz == 6) @@ -64,61 +73,80 @@ else if (sz == 7) return FFI_TYPE_SMALL_STRUCT7; else if (sz <= 8) - return FFI_TYPE_UINT64; + return FFI_TYPE_SMALL_STRUCT8; else return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ } /* PA has a downward growing stack, which looks like this: - + Offset - [ Variable args ] + [ Variable args ] SP = (4*(n+9)) arg word N ... SP-52 arg word 4 - [ Fixed args ] + [ Fixed args ] SP-48 arg word 3 SP-44 arg word 2 SP-40 arg word 1 SP-36 arg word 0 - [ Frame marker ] + [ Frame marker ] ... SP-20 RP SP-4 previous SP - - First 4 non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23 - First 2 non-FP 64-bit args are passed in register pairs, starting - on an even numbered register (i.e. r26/r25 and r24+r23) - First 4 FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L - First 2 FP 64-bit arguments are passed in fr5 and fr7 - The rest are passed on the stack starting at SP-52, but 64-bit - arguments need to be aligned to an 8-byte boundary - + + The first four argument words on the stack are reserved for use by + the callee. Instead, the general and floating registers replace + the first four argument slots. Non FP arguments are passed solely + in the general registers. FP arguments are passed in both general + and floating registers when using libffi. + + Non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23. + Non-FP 64-bit args are passed in register pairs, starting + on an odd numbered register (i.e. r25+r26 and r23+r24). + FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L. + FP 64-bit arguments are passed in fr5 and fr7. + + The registers are allocated in the same manner as stack slots. + This allows the callee to save its arguments on the stack if + necessary: + + arg word 3 -> gr23 or fr7L + arg word 2 -> gr24 or fr6L or fr7R + arg word 1 -> gr25 or fr5L + arg word 0 -> gr26 or fr4L or fr5R + + Note that fr4R and fr6R are never used for arguments (i.e., + doubles are not passed in fr4 or fr6). + + The rest of the arguments are passed on the stack starting at SP-52, + but 64-bit arguments need to be aligned to an 8-byte boundary + This means we can have holes either in the register allocation, or in the stack. */ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments - + The following code will put everything into the stack frame (which was allocated by the asm routine), and on return the asm routine will load the arguments that should be passed by register into the appropriate registers - + NOTE: We load floating point args in this function... that means we assume gcc will not mess with fp regs in here. */ -/*@-exportheader@*/ -void ffi_prep_args_LINUX(UINT32 *stack, extended_cif *ecif, unsigned bytes) -/*@=exportheader@*/ +void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes) { register unsigned int i; register ffi_type **p_arg; register void **p_argv; - unsigned int slot = FIRST_ARG_SLOT - 1; + unsigned int slot = FIRST_ARG_SLOT; char *dest_cpy; + size_t len; - debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, ecif, bytes); + debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, + ecif, bytes); p_arg = ecif->cif->arg_types; p_argv = ecif->avalue; @@ -130,116 +158,105 @@ switch (type) { case FFI_TYPE_SINT8: - slot++; *(SINT32 *)(stack - slot) = *(SINT8 *)(*p_argv); break; case FFI_TYPE_UINT8: - slot++; *(UINT32 *)(stack - slot) = *(UINT8 *)(*p_argv); break; case FFI_TYPE_SINT16: - slot++; *(SINT32 *)(stack - slot) = *(SINT16 *)(*p_argv); break; case FFI_TYPE_UINT16: - slot++; *(UINT32 *)(stack - slot) = *(UINT16 *)(*p_argv); break; case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: case FFI_TYPE_POINTER: - slot++; - debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), slot); + debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), + slot); *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: - slot += 2; - if (slot & 1) - slot++; - - *(UINT32 *)(stack - slot) = (*(UINT64 *)(*p_argv)) >> 32; - *(UINT32 *)(stack - slot + 1) = (*(UINT64 *)(*p_argv)) & 0xffffffffUL; + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); break; case FFI_TYPE_FLOAT: - /* First 4 args go in fr4L - fr7L */ - slot++; + /* First 4 args go in fr4L - fr7L. */ + debug(3, "Storing UINT32(float) in slot %u\n", slot); + *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); switch (slot - FIRST_ARG_SLOT) { - case 0: fldw(*p_argv, fr4); break; - case 1: fldw(*p_argv, fr5); break; - case 2: fldw(*p_argv, fr6); break; - case 3: fldw(*p_argv, fr7); break; - default: - /* Other ones are just passed on the stack. */ - debug(3, "Storing UINT32(float) in slot %u\n", slot); - *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); - break; + /* First 4 args go in fr4L - fr7L. */ + case 0: fldw(stack - slot, fr4); break; + case 1: fldw(stack - slot, fr5); break; + case 2: fldw(stack - slot, fr6); break; + case 3: fldw(stack - slot, fr7); break; } - break; + break; case FFI_TYPE_DOUBLE: - slot += 2; - if (slot & 1) - slot++; - switch (slot - FIRST_ARG_SLOT + 1) + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + debug(3, "Storing UINT64(double) at slot %u\n", slot); + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) { - /* First 2 args go in fr5, fr7 */ - case 2: fldd(*p_argv, fr5); break; - case 4: fldd(*p_argv, fr7); break; - default: - debug(3, "Storing UINT64(double) at slot %u\n", slot); - *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); - break; + /* First 2 args go in fr5, fr7. */ + case 1: fldd(stack - slot, fr5); break; + case 3: fldd(stack - slot, fr7); break; } break; +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are passed in the same manner as structures + larger than 8 bytes. */ + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + break; +#endif + case FFI_TYPE_STRUCT: /* Structs smaller or equal than 4 bytes are passed in one register. Structs smaller or equal 8 bytes are passed in two registers. Larger structures are passed by pointer. */ - if((*p_arg)->size <= 4) + len = (*p_arg)->size; + if (len <= 4) { - slot++; - dest_cpy = (char *)(stack - slot); - dest_cpy += 4 - (*p_arg)->size; - memcpy((char *)dest_cpy, (char *)*p_argv, (*p_arg)->size); + dest_cpy = (char *)(stack - slot) + 4 - len; + memcpy(dest_cpy, (char *)*p_argv, len); } - else if ((*p_arg)->size <= 8) + else if (len <= 8) { - slot += 2; - if (slot & 1) - slot++; - dest_cpy = (char *)(stack - slot); - dest_cpy += 8 - (*p_arg)->size; - memcpy((char *)dest_cpy, (char *)*p_argv, (*p_arg)->size); - } - else - { - slot++; - *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + slot += (slot & 1) ? 1 : 2; + dest_cpy = (char *)(stack - slot) + 8 - len; + memcpy(dest_cpy, (char *)*p_argv, len); } + else + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); break; default: FFI_ASSERT(0); } + slot++; p_arg++; p_argv++; } /* Make sure we didn't mess up and scribble on the stack. */ { - int n; + unsigned int n; debug(5, "Stack setup:\n"); for (n = 0; n < (bytes + 3) / 4; n++) @@ -255,7 +272,7 @@ return; } -static void ffi_size_stack_LINUX(ffi_cif *cif) +static void ffi_size_stack_pa32(ffi_cif *cif) { ffi_type **ptr; int i; @@ -273,6 +290,9 @@ z += 2 + (z & 1); /* must start on even regs, so we may waste one */ break; +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: +#endif case FFI_TYPE_STRUCT: z += 1; /* pass by ptr, callee will copy */ break; @@ -304,6 +324,13 @@ cif->flags = (unsigned) cif->rtype->type; break; +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a structure. */ + cif->flags = FFI_TYPE_STRUCT; + break; +#endif + case FFI_TYPE_STRUCT: /* For the return type we have to check the size of the structures. If the size is smaller or equal 4 bytes, the result is given back @@ -327,8 +354,8 @@ own stack sizing. */ switch (cif->abi) { - case FFI_LINUX: - ffi_size_stack_LINUX(cif); + case FFI_PA32: + ffi_size_stack_pa32(cif); break; default: @@ -339,20 +366,11 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_LINUX(void (*)(UINT32 *, extended_cif *, unsigned), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)(void)); -/*@=declundef@*/ -/*@=exportheader@*/ - -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(void), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), + extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; @@ -362,12 +380,15 @@ /* If the return value is a struct and we don't have a return value address then we need to make one. */ - if ((rvalue == NULL) && - (cif->rtype->type == FFI_TYPE_STRUCT)) + if (rvalue == NULL +#ifdef PA_HPUX + && (cif->rtype->type == FFI_TYPE_STRUCT + || cif->rtype->type == FFI_TYPE_LONGDOUBLE)) +#else + && cif->rtype->type == FFI_TYPE_STRUCT) +#endif { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -375,12 +396,10 @@ switch (cif->abi) { - case FFI_LINUX: - /*@-usedef@*/ - debug(2, "Calling ffi_call_LINUX: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); - ffi_call_LINUX(ffi_prep_args_LINUX, &ecif, cif->bytes, + case FFI_PA32: + debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); + ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ break; default: @@ -394,7 +413,7 @@ the stack, and we need to fill them into a cif structure and invoke the user function. This really ought to be in asm to make sure the compiler doesn't do things we don't expect. */ -UINT32 ffi_closure_inner_LINUX(ffi_closure *closure, UINT32 *stack) +ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) { ffi_cif *cif; void **avalue; @@ -402,7 +421,8 @@ UINT32 ret[2]; /* function can return up to 64-bits in registers */ ffi_type **p_arg; char *tmp; - int i, avn, slot = FIRST_ARG_SLOT - 1; + int i, avn; + unsigned int slot = FIRST_ARG_SLOT; register UINT32 r28 asm("r28"); cif = closure->cif; @@ -430,20 +450,23 @@ case FFI_TYPE_SINT32: case FFI_TYPE_UINT32: case FFI_TYPE_POINTER: - slot++; avalue[i] = (char *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; break; case FFI_TYPE_SINT64: case FFI_TYPE_UINT64: - slot += 2; - if (slot & 1) - slot++; + slot += (slot & 1) ? 1 : 2; avalue[i] = (void *)(stack - slot); break; case FFI_TYPE_FLOAT: - slot++; +#ifdef PA_LINUX + /* The closure call is indirect. In Linux, floating point + arguments in indirect calls with a prototype are passed + in the floating point registers instead of the general + registers. So, we need to replace what was previously + stored in the current slot with the value in the + corresponding floating point register. */ switch (slot - FIRST_ARG_SLOT) { case 0: fstw(fr4, (void *)(stack - slot)); break; @@ -451,18 +474,20 @@ case 2: fstw(fr6, (void *)(stack - slot)); break; case 3: fstw(fr7, (void *)(stack - slot)); break; } +#endif avalue[i] = (void *)(stack - slot); break; case FFI_TYPE_DOUBLE: - slot += 2; - if (slot & 1) - slot++; - switch (slot - FIRST_ARG_SLOT + 1) + slot += (slot & 1) ? 1 : 2; +#ifdef PA_LINUX + /* See previous comment for FFI_TYPE_FLOAT. */ + switch (slot - FIRST_ARG_SLOT) { - case 2: fstd(fr5, (void *)(stack - slot)); break; - case 4: fstd(fr7, (void *)(stack - slot)); break; + case 1: fstd(fr5, (void *)(stack - slot)); break; + case 3: fstd(fr7, (void *)(stack - slot)); break; } +#endif avalue[i] = (void *)(stack - slot); break; @@ -470,35 +495,36 @@ /* Structs smaller or equal than 4 bytes are passed in one register. Structs smaller or equal 8 bytes are passed in two registers. Larger structures are passed by pointer. */ - if((*p_arg)->size <= 4) { - slot++; - avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - - (*p_arg)->size; - } else if ((*p_arg)->size <= 8) { - slot += 2; - if (slot & 1) - slot++; - avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - - (*p_arg)->size; - } else { - slot++; + if((*p_arg)->size <= 4) + { + avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - + (*p_arg)->size; + } + else if ((*p_arg)->size <= 8) + { + slot += (slot & 1) ? 1 : 2; + avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - + (*p_arg)->size; + } + else avalue[i] = (void *) *(stack - slot); - } break; default: FFI_ASSERT(0); } + slot++; p_arg++; } /* Invoke the closure. */ (closure->fun) (cif, rvalue, avalue, closure->user_data); - debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", ret[0], ret[1]); + debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", ret[0], + ret[1]); - /* Store the result */ + /* Store the result using the lower 2 bytes of the flags. */ switch (cif->flags) { case FFI_TYPE_UINT8: @@ -536,7 +562,9 @@ /* Don't need a return value, done by caller. */ break; + case FFI_TYPE_SMALL_STRUCT2: case FFI_TYPE_SMALL_STRUCT3: + case FFI_TYPE_SMALL_STRUCT4: tmp = (void*)(stack - FIRST_ARG_SLOT); tmp += 4 - cif->rtype->size; memcpy((void*)tmp, &ret[0], cif->rtype->size); @@ -545,6 +573,7 @@ case FFI_TYPE_SMALL_STRUCT5: case FFI_TYPE_SMALL_STRUCT6: case FFI_TYPE_SMALL_STRUCT7: + case FFI_TYPE_SMALL_STRUCT8: { unsigned int ret2[2]; int off; @@ -582,39 +611,93 @@ cif specifies the argument and result types for fun. The cif must already be prep'ed. */ -void ffi_closure_LINUX(void); +extern void ffi_closure_pa32(void); ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) { UINT32 *tramp = (UINT32 *)(closure->tramp); +#ifdef PA_HPUX + UINT32 *tmp; +#endif - FFI_ASSERT (cif->abi == FFI_LINUX); + FFI_ASSERT (cif->abi == FFI_PA32); /* Make a small trampoline that will branch to our handler function. Use PC-relative addressing. */ - tramp[0] = 0xeaa00000; /* b,l .+8, %r21 ; %r21 <- pc+8 */ - tramp[1] = 0xd6a01c1e; /* depi 0,31,2, %r21 ; mask priv bits */ - tramp[2] = 0x4aa10028; /* ldw 20(%r21), %r1 ; load plabel */ - tramp[3] = 0x36b53ff1; /* ldo -8(%r21), %r21 ; get closure addr */ - tramp[4] = 0x0c201096; /* ldw 0(%r1), %r22 ; address of handler */ - tramp[5] = 0xeac0c000; /* bv %r0(%r22) ; branch to handler */ - tramp[6] = 0x0c281093; /* ldw 4(%r1), %r19 ; GP of handler */ - tramp[7] = ((UINT32)(ffi_closure_LINUX) & ~2); +#ifdef PA_LINUX + tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ + tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ + tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1 ; load plabel */ + tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ + tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ + tramp[5] = 0xeac0c000; /* bv%r0(%r22) ; branch to handler */ + tramp[6] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ + tramp[7] = ((UINT32)(ffi_closure_pa32) & ~2); /* Flush d/icache -- have to flush up 2 two lines because of alignment. */ - asm volatile ( - "fdc 0(%0)\n" - "fdc %1(%0)\n" - "fic 0(%%sr4, %0)\n" - "fic %1(%%sr4, %0)\n" - "sync\n" - : : "r"((unsigned long)tramp & ~31), "r"(32 /* stride */)); + __asm__ volatile( + "fdc 0(%0)\n\t" + "fdc %1(%0)\n\t" + "fic 0(%%sr4, %0)\n\t" + "fic %1(%%sr4, %0)\n\t" + "sync\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n" + : + : "r"((unsigned long)tramp & ~31), + "r"(32 /* stride */) + : "memory"); +#endif + +#ifdef PA_HPUX + tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ + tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ + tramp[2] = 0x4aa10038; /* ldw 28(%r21),%r1 ; load plabel */ + tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ + tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ + tramp[5] = 0x02c010b4; /* ldsid (%r22),%r20 ; load space id */ + tramp[6] = 0x00141820; /* mtsp %r20,%sr0 ; into %sr0 */ + tramp[7] = 0xe2c00000; /* be 0(%sr0,%r22) ; branch to handler */ + tramp[8] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ + tramp[9] = ((UINT32)(ffi_closure_pa32) & ~2); + + /* Flush d/icache -- have to flush three lines because of alignment. */ + __asm__ volatile( + "copy %1,%0\n\t" + "fdc,m %2(%0)\n\t" + "fdc,m %2(%0)\n\t" + "fdc,m %2(%0)\n\t" + "ldsid (%1),%0\n\t" + "mtsp %0,%%sr0\n\t" + "copy %1,%0\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "sync\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n" + : "=&r" ((unsigned long)tmp) + : "r" ((unsigned long)tramp & ~31), + "r" (32/* stride */) + : "memory"); +#endif closure->cif = cif; closure->user_data = user_data; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -35,9 +36,20 @@ typedef enum ffi_abi { FFI_FIRST_ABI = 0, -#ifdef PA - FFI_LINUX, - FFI_DEFAULT_ABI = FFI_LINUX, +#ifdef PA_LINUX + FFI_PA32, + FFI_DEFAULT_ABI = FFI_PA32, +#endif + +#ifdef PA_HPUX + FFI_PA32, + FFI_DEFAULT_ABI = FFI_PA32, +#endif + +#ifdef PA64_HPUX +#error "PA64_HPUX FFI is not yet implemented" + FFI_PA64, + FFI_DEFAULT_ABI = FFI_PA64, #endif FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 @@ -49,11 +61,17 @@ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 +#ifdef PA_LINUX #define FFI_TRAMPOLINE_SIZE 32 - -#define FFI_TYPE_SMALL_STRUCT3 -1 -#define FFI_TYPE_SMALL_STRUCT5 -2 -#define FFI_TYPE_SMALL_STRUCT6 -3 -#define FFI_TYPE_SMALL_STRUCT7 -4 +#else +#define FFI_TRAMPOLINE_SIZE 40 #endif +#define FFI_TYPE_SMALL_STRUCT2 -1 +#define FFI_TYPE_SMALL_STRUCT3 -2 +#define FFI_TYPE_SMALL_STRUCT4 -3 +#define FFI_TYPE_SMALL_STRUCT5 -4 +#define FFI_TYPE_SMALL_STRUCT6 -5 +#define FFI_TYPE_SMALL_STRUCT7 -6 +#define FFI_TYPE_SMALL_STRUCT8 -7 +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S Fri Feb 22 09:37:07 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +32,7 @@ .level 1.1 .align 4 - /* void ffi_call_LINUX(void (*)(char *, extended_cif *), + /* void ffi_call_pa32(void (*)(char *, extended_cif *), extended_cif *ecif, unsigned bytes, unsigned flags, @@ -39,12 +40,12 @@ void (*fn)()); */ - .export ffi_call_LINUX,code - .import ffi_prep_args_LINUX,code + .export ffi_call_pa32,code + .import ffi_prep_args_pa32,code - .type ffi_call_LINUX, @function + .type ffi_call_pa32, @function .LFB1: -ffi_call_LINUX: +ffi_call_pa32: .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 .entry @@ -63,7 +64,7 @@ [ 64-bytes register save area ] <- %r4 [ Stack space for actual call, passed as ] <- %arg0 - [ arg0 to ffi_prep_args_LINUX ] + [ arg0 to ffi_prep_args_pa32 ] [ Stack for calling prep_args ] <- %sp */ @@ -73,14 +74,14 @@ .LCFI13: copy %sp, %r4 - addl %arg2, %r4, %arg0 /* arg stack */ - stw %arg3, -48(%r3) /* save flags; we need it later */ + addl %arg2, %r4, %arg0 /* arg stack */ + stw %arg3, -48(%r3) /* save flags; we need it later */ /* Call prep_args: %arg0(stack) -- set up above %arg1(ecif) -- same as incoming param %arg2(bytes) -- same as incoming param */ - bl ffi_prep_args_LINUX,%r2 + bl ffi_prep_args_pa32,%r2 ldo 64(%arg0), %sp ldo -64(%sp), %sp @@ -106,90 +107,139 @@ /* Store the result according to the return type. */ -checksmst3: - comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, checksmst567 - /* 3-byte structs are returned in ret0 as ??xxyyzz. Shift - left 8 bits to write to the result structure. */ - zdep %ret0, 23, 24, %r22 - b done - stw %r22, 0(%r20) - -checksmst567: - /* 5-7 byte values are returned right justified: +.Lcheckint: + comib,<>,n FFI_TYPE_INT, %r21, .Lcheckint8 + b .Ldone + stw %ret0, 0(%r20) + +.Lcheckint8: + comib,<>,n FFI_TYPE_UINT8, %r21, .Lcheckint16 + b .Ldone + stb %ret0, 0(%r20) + +.Lcheckint16: + comib,<>,n FFI_TYPE_UINT16, %r21, .Lcheckdbl + b .Ldone + sth %ret0, 0(%r20) + +.Lcheckdbl: + comib,<>,n FFI_TYPE_DOUBLE, %r21, .Lcheckfloat + b .Ldone + fstd %fr4,0(%r20) + +.Lcheckfloat: + comib,<>,n FFI_TYPE_FLOAT, %r21, .Lcheckll + b .Ldone + fstw %fr4L,0(%r20) + +.Lcheckll: + comib,<>,n FFI_TYPE_UINT64, %r21, .Lchecksmst2 + stw %ret0, 0(%r20) + b .Ldone + stw %ret1, 4(%r20) + +.Lchecksmst2: + comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, .Lchecksmst3 + /* 2-byte structs are returned in ret0 as ????xxyy. */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst3: + comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, .Lchecksmst4 + /* 3-byte structs are returned in ret0 as ??xxyyzz. */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst4: + comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, .Lchecksmst5 + /* 4-byte structs are returned in ret0 as wwxxyyzz. */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst5: + comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, .Lchecksmst6 + /* 5 byte values are returned right justified: + ret0 ret1 + 5: ??????aa bbccddee */ + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst6: + comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, .Lchecksmst7 + /* 6 byte values are returned right justified: + ret0 ret1 + 6: ????aabb ccddeeff */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst7: + comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, .Lchecksmst8 + /* 7 byte values are returned right justified: ret0 ret1 - 5: ??????aa bbccddee - 6: ????aabb ccddeeff - 7: ??aabbcc ddeeffgg - - To store this in the result, write the first 4 bytes into a temp - register using shrpw (t1 = aabbccdd), followed by a rotation of - ret1: - - ret0 ret1 ret1 - 5: ??????aa bbccddee -> eebbccdd (rotate 8) - 6: ????aabb ccddeeff -> eeffccdd (rotate 16) - 7: ??aabbcc ddeeffgg -> eeffggdd (rotate 24) - - then we write (t1, ret1) into the result. */ - - addi,<> -FFI_TYPE_SMALL_STRUCT5,%r21,%r0 - ldi 8, %r22 - addi,<> -FFI_TYPE_SMALL_STRUCT6,%r21,%r0 - ldi 16, %r22 - addi,<> -FFI_TYPE_SMALL_STRUCT7,%r21,%r0 - ldi 24, %r22 - - /* This relies on all the FFI_TYPE_*_STRUCT* defines being <0 */ - cmpib,<=,n 0, %r21, checkint8 - mtsar %r22 - - shrpw %ret0, %ret1, %sar, %ret0 /* ret0 = aabbccdd */ - shrpw %ret1, %ret1, %sar, %ret1 /* rotate ret1 */ - - stw %ret0, 0(%r20) - b done - stw %ret1, 4(%r20) - -checkint8: - comib,<>,n FFI_TYPE_UINT8, %r21, checkint16 - b done - stb %ret0, 0(%r20) - -checkint16: - comib,<>,n FFI_TYPE_UINT16, %r21, checkint32 - b done - sth %ret0, 0(%r20) - -checkint32: - comib,<>,n FFI_TYPE_UINT32, %r21, checkint - b done - stw %ret0, 0(%r20) - -checkint: - comib,<>,n FFI_TYPE_INT, %r21, checkll - b done - stw %ret0, 0(%r20) - -checkll: - comib,<>,n FFI_TYPE_UINT64, %r21, checkdbl - stw %ret0, 0(%r20) - b done - stw %ret1, 4(%r20) - -checkdbl: - comib,<>,n FFI_TYPE_DOUBLE, %r21, checkfloat - b done - fstd %fr4,0(%r20) - -checkfloat: - comib,<>,n FFI_TYPE_FLOAT, %r21, done - fstw %fr4L,0(%r20) - - /* structure returns are either handled by one of the - INT/UINT64 cases above, or, if passed by pointer, - is handled by the callee. */ + 7: ??aabbcc ddeeffgg */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst8: + comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, .Ldone + /* 8 byte values are returned right justified: + ret0 ret1 + 8: aabbccdd eeffgghh */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stb %ret1, 0(%r20) -done: +.Ldone: /* all done, return */ copy %r4, %sp /* pop arg stack */ ldw 12(%r3), %r4 @@ -201,14 +251,14 @@ .procend .LFE1: - /* void ffi_closure_LINUX(void); + /* void ffi_closure_pa32(void); Called with closure argument in %r21 */ - .export ffi_closure_LINUX,code - .import ffi_closure_inner_LINUX,code + .export ffi_closure_pa32,code + .import ffi_closure_inner_pa32,code - .type ffi_closure_LINUX, @function + .type ffi_closure_pa32, @function .LFB2: -ffi_closure_LINUX: +ffi_closure_pa32: .proc .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 .entry @@ -228,7 +278,7 @@ stw %arg3, -48(%r3) copy %r21, %arg0 - bl ffi_closure_inner_LINUX, %r2 + bl ffi_closure_inner_pa32, %r2 copy %r3, %arg1 ldwm -64(%sp), %r3 @@ -299,7 +349,7 @@ .sleb128 -5 .byte 0x4 ;# DW_CFA_advance_loc4 - .word .LCFI12-.LCFI11 + .word .LCFI22-.LCFI21 .byte 0xd ;# DW_CFA_def_cfa_register = r3 .uleb128 0x3 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c Fri Feb 22 09:37:07 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2002, 2003, 2004, 2005 Kaz Kojima + ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Kaz Kojima SuperH Foreign Function Interface @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -106,9 +107,7 @@ /* ffi_prep_args is called by the assembly routine once stack space has been allocated for the function's arguments */ -/*@-exportheader@*/ void ffi_prep_args(char *stack, extended_cif *ecif) -/*@=exportheader@*/ { register unsigned int i; register int tmp; @@ -406,20 +405,10 @@ return FFI_OK; } -/*@-declundef@*/ -/*@-exportheader@*/ -extern void ffi_call_SYSV(void (*)(char *, extended_cif *), - /*@out@*/ extended_cif *, - unsigned, unsigned, - /*@out@*/ unsigned *, - void (*fn)()); -/*@=declundef@*/ -/*@=exportheader@*/ - -void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), - /*@out@*/ void *rvalue, - /*@dependent@*/ void **avalue) +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; UINT64 trvalue; @@ -436,9 +425,7 @@ else if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { - /*@-sysunrecog@*/ ecif.rvalue = alloca(cif->rtype->size); - /*@=sysunrecog@*/ } else ecif.rvalue = rvalue; @@ -446,10 +433,8 @@ switch (cif->abi) { case FFI_SYSV: - /*@-usedef@*/ - ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, + fn); break; default: FFI_ASSERT(0); @@ -468,10 +453,11 @@ #endif ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) { unsigned int *tramp; unsigned short insn; @@ -491,7 +477,7 @@ tramp[0] = 0xd102d301; tramp[1] = 0x412b0000 | insn; #endif - *(void **) &tramp[2] = (void *)closure; /* ctx */ + *(void **) &tramp[2] = (void *)codeloc; /* ctx */ *(void **) &tramp[3] = (void *)ffi_closure_SYSV; /* funaddr */ closure->cif = cif; @@ -500,7 +486,7 @@ #if defined(__SH4__) /* Flush the icache. */ - __ic_invalidate(&closure->tramp[0]); + __ic_invalidate(codeloc); #endif return FFI_OK; @@ -535,7 +521,6 @@ int freg = 0; #endif ffi_cif *cif; - double temp; cif = closure->cif; avalue = alloca(cif->nargs * sizeof(void *)); @@ -544,7 +529,7 @@ returns the data directly to the caller. */ if (cif->rtype->type == FFI_TYPE_STRUCT && STRUCT_VALUE_ADDRESS_WITH_ARG) { - rvalue = *pgr++; + rvalue = (void *) *pgr++; ireg = 1; } else @@ -611,6 +596,8 @@ { if (freg + 1 >= NFREGARG) continue; + if (freg & 1) + pfr++; freg = (freg + 1) & ~1; freg += 2; avalue[i] = pfr; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/sysv.S Fri Feb 22 09:37:07 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 2002, 2003, 2004 Kaz Kojima + sysv.S - Copyright (c) 2002, 2003, 2004, 2006 Kaz Kojima SuperH Foreign Function Interface @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -829,13 +830,13 @@ .byte 0x6 /* uleb128 0x6 */ .byte 0x8e /* DW_CFA_offset, column 0xe */ .byte 0x5 /* uleb128 0x5 */ - .byte 0x8b /* DW_CFA_offset, column 0xb */ + .byte 0x84 /* DW_CFA_offset, column 0x4 */ .byte 0x4 /* uleb128 0x4 */ - .byte 0x8a /* DW_CFA_offset, column 0xa */ + .byte 0x85 /* DW_CFA_offset, column 0x5 */ .byte 0x3 /* uleb128 0x3 */ - .byte 0x89 /* DW_CFA_offset, column 0x9 */ + .byte 0x86 /* DW_CFA_offset, column 0x6 */ .byte 0x2 /* uleb128 0x2 */ - .byte 0x88 /* DW_CFA_offset, column 0x8 */ + .byte 0x87 /* DW_CFA_offset, column 0x7 */ .byte 0x1 /* uleb128 0x1 */ .byte 0x4 /* DW_CFA_advance_loc4 */ .4byte .LCFIE-.LCFID Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c Fri Feb 22 09:37:07 2008 @@ -14,13 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -238,12 +239,12 @@ /*@out@*/ extended_cif *, unsigned, unsigned, long long, /*@out@*/ unsigned *, - void (*fn)()); + void (*fn)(void)); /*@=declundef@*/ /*@=exportheader@*/ void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), + void (*fn)(void), /*@out@*/ void *rvalue, /*@dependent@*/ void **avalue) { Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffitarget.h Fri Feb 22 09:37:07 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/sysv.S Fri Feb 22 09:37:07 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From python-checkins at python.org Fri Feb 22 09:43:24 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:43:24 +0100 (CET) Subject: [Python-checkins] r60951 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ia64_flags.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S Message-ID: <20080222084324.D5AB31E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:43:24 2008 New Revision: 60951 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ia64_flags.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c Fri Feb 22 09:43:24 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998 Red Hat, Inc. + ffi.c - Copyright (c) 1998, 2007 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company IA64 Foreign Function Interface @@ -15,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include @@ -69,24 +70,19 @@ #endif } -/* Store VALUE to ADDR in the current cpu implementation's fp spill format. */ +/* Store VALUE to ADDR in the current cpu implementation's fp spill format. + This is a macro instead of a function, so that it works for all 3 floating + point types without type conversions. Type conversion to long double breaks + the denorm support. */ -static inline void -stf_spill(fpreg *addr, __float80 value) -{ +#define stf_spill(addr, value) \ asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); -} /* Load a value from ADDR, which is in the current cpu implementation's - fp spill format. */ + fp spill format. As above, this must also be a macro. */ -static inline __float80 -ldf_fill(fpreg *addr) -{ - __float80 ret; - asm ("ldf.fill %0 = %1%P1" : "=f"(ret) : "m"(*addr)); - return ret; -} +#define ldf_fill(result, addr) \ + asm ("ldf.fill %0 = %1%P1" : "=f"(result) : "m"(*addr)); /* Return the size of the C type associated with with TYPE. Which will be one of the FFI_IA64_TYPE_HFA_* values. */ @@ -110,17 +106,20 @@ /* Load from ADDR a value indicated by TYPE. Which will be one of the FFI_IA64_TYPE_HFA_* values. */ -static __float80 -hfa_type_load (int type, void *addr) +static void +hfa_type_load (fpreg *fpaddr, int type, void *addr) { switch (type) { case FFI_IA64_TYPE_HFA_FLOAT: - return *(float *) addr; + stf_spill (fpaddr, *(float *) addr); + return; case FFI_IA64_TYPE_HFA_DOUBLE: - return *(double *) addr; + stf_spill (fpaddr, *(double *) addr); + return; case FFI_IA64_TYPE_HFA_LDOUBLE: - return *(__float80 *) addr; + stf_spill (fpaddr, *(__float80 *) addr); + return; default: abort (); } @@ -130,19 +129,31 @@ the FFI_IA64_TYPE_HFA_* values. */ static void -hfa_type_store (int type, void *addr, __float80 value) +hfa_type_store (int type, void *addr, fpreg *fpaddr) { switch (type) { case FFI_IA64_TYPE_HFA_FLOAT: - *(float *) addr = value; - break; + { + float result; + ldf_fill (result, fpaddr); + *(float *) addr = result; + break; + } case FFI_IA64_TYPE_HFA_DOUBLE: - *(double *) addr = value; - break; + { + double result; + ldf_fill (result, fpaddr); + *(double *) addr = result; + break; + } case FFI_IA64_TYPE_HFA_LDOUBLE: - *(__float80 *) addr = value; - break; + { + __float80 result; + ldf_fill (result, fpaddr); + *(__float80 *) addr = result; + break; + } default: abort (); } @@ -351,8 +362,8 @@ && offset < size && gp_offset < 8 * 8) { - stf_spill (&stack->fp_regs[fpcount], - hfa_type_load (hfa_type, avalue[i] + offset)); + hfa_type_load (&stack->fp_regs[fpcount], hfa_type, + avalue[i] + offset); offset += hfa_size; gp_offset += hfa_size; fpcount += 1; @@ -387,13 +398,14 @@ gp pointer to the closure. This allows the function entry code to both retrieve the user data, and to restire the correct gp pointer. */ -extern void ffi_closure_unix (void); +extern void ffi_closure_unix (); ffi_status -ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) { /* The layout of a function descriptor. A C function pointer really points to one of these. */ @@ -420,7 +432,7 @@ tramp->code_pointer = fd->code_pointer; tramp->real_gp = fd->gp; - tramp->fake_gp = (UINT64)(PTR64)closure; + tramp->fake_gp = (UINT64)(PTR64)codeloc; closure->cif = cif; closure->user_data = user_data; closure->fun = fun; @@ -475,9 +487,11 @@ case FFI_TYPE_FLOAT: if (gpcount < 8 && fpcount < 8) { - void *addr = &stack->fp_regs[fpcount++]; + fpreg *addr = &stack->fp_regs[fpcount++]; + float result; avalue[i] = addr; - *(float *)addr = ldf_fill (addr); + ldf_fill (result, addr); + *(float *)addr = result; } else avalue[i] = endian_adjust(&stack->gp_regs[gpcount], 4); @@ -487,9 +501,11 @@ case FFI_TYPE_DOUBLE: if (gpcount < 8 && fpcount < 8) { - void *addr = &stack->fp_regs[fpcount++]; + fpreg *addr = &stack->fp_regs[fpcount++]; + double result; avalue[i] = addr; - *(double *)addr = ldf_fill (addr); + ldf_fill (result, addr); + *(double *)addr = result; } else avalue[i] = &stack->gp_regs[gpcount]; @@ -501,9 +517,11 @@ gpcount++; if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) { - void *addr = &stack->fp_regs[fpcount++]; + fpreg *addr = &stack->fp_regs[fpcount++]; + __float80 result; avalue[i] = addr; - *(__float80 *)addr = ldf_fill (addr); + ldf_fill (result, addr); + *(__float80 *)addr = result; } else avalue[i] = &stack->gp_regs[gpcount]; @@ -533,8 +551,8 @@ && offset < size && gp_offset < 8 * 8) { - hfa_type_store (hfa_type, addr + offset, - ldf_fill (&stack->fp_regs[fpcount])); + hfa_type_store (hfa_type, addr + offset, + &stack->fp_regs[fpcount]); offset += hfa_size; gp_offset += hfa_size; fpcount += 1; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffitarget.h Fri Feb 22 09:43:24 2008 @@ -13,13 +13,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ia64_flags.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ia64_flags.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ia64_flags.h Fri Feb 22 09:43:24 2008 @@ -16,13 +16,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* "Type" codes used between assembly and C. When used as a part of Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S Fri Feb 22 09:43:24 2008 @@ -22,7 +22,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From python-checkins at python.org Fri Feb 22 09:44:57 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 09:44:57 +0100 (CET) Subject: [Python-checkins] r60952 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/n32.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/o32.S Message-ID: <20080222084457.A32441E4016@bag.python.org> Author: thomas.heller Date: Fri Feb 22 09:44:57 2008 New Revision: 60952 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffitarget.h python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/n32.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/o32.S Log: More files from libffi-3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c Fri Feb 22 09:44:57 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 2007 Red Hat, Inc. + Copyright (c) 2008 David Daney MIPS Foreign Function Interface @@ -14,28 +15,44 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #include #include #include + +#ifdef __GNUC__ +# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) +# define USE__BUILTIN___CLEAR_CACHE 1 +# endif +#endif + +#ifndef USE__BUILTIN___CLEAR_CACHE #include +#endif -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_DEBUG +# define FFI_MIPS_STOP_HERE() ffi_stop_here() +#else +# define FFI_MIPS_STOP_HERE() do {} while(0) +#endif + +#ifdef FFI_MIPS_N32 #define FIX_ARGP \ FFI_ASSERT(argp <= &stack[bytes]); \ if (argp == &stack[bytes]) \ { \ argp = stack; \ - ffi_stop_here(); \ + FFI_MIPS_STOP_HERE(); \ } #else #define FIX_ARGP @@ -55,7 +72,7 @@ char *argp; ffi_type **p_arg; -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_MIPS_N32 /* If more than 8 double words are used, the remainder go on the stack. We reorder stuff on the stack here to support this easily. */ @@ -69,7 +86,7 @@ memset(stack, 0, bytes); -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_MIPS_N32 if ( ecif->cif->rstruct_flag != 0 ) #else if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) @@ -92,7 +109,7 @@ if (a < sizeof(ffi_arg)) a = sizeof(ffi_arg); - if ((a - 1) & (unsigned int) argp) + if ((a - 1) & (unsigned long) argp) { argp = (char *) ALIGN(argp, a); FIX_ARGP; @@ -101,9 +118,15 @@ z = (*p_arg)->size; if (z <= sizeof(ffi_arg)) { + int type = (*p_arg)->type; z = sizeof(ffi_arg); - switch ((*p_arg)->type) + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = + (ecif->cif->abi == FFI_N64) ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; + + switch (type) { case FFI_TYPE_SINT8: *(ffi_arg *)argp = *(SINT8 *)(* p_argv); @@ -126,7 +149,6 @@ break; case FFI_TYPE_UINT32: - case FFI_TYPE_POINTER: *(ffi_arg *)argp = *(UINT32 *)(* p_argv); break; @@ -135,8 +157,7 @@ *(float *) argp = *(float *)(* p_argv); break; - /* Handle small structures. */ - case FFI_TYPE_STRUCT: + /* Handle structures. */ default: memcpy(argp, *p_argv, (*p_arg)->size); break; @@ -144,12 +165,12 @@ } else { -#if _MIPS_SIM == _ABIO32 +#ifdef FFI_MIPS_O32 memcpy(argp, *p_argv, z); #else { - unsigned end = (unsigned) argp+z; - unsigned cap = (unsigned) stack+bytes; + unsigned long end = (unsigned long) argp + z; + unsigned long cap = (unsigned long) stack + bytes; /* Check if the data will fit within the register space. Handle it if it doesn't. */ @@ -158,12 +179,13 @@ memcpy(argp, *p_argv, z); else { - unsigned portion = end - cap; + unsigned long portion = cap - (unsigned long)argp; memcpy(argp, *p_argv, portion); argp = stack; - memcpy(argp, - (void*)((unsigned)(*p_argv)+portion), z - portion); + z -= portion; + memcpy(argp, (void*)((unsigned long)(*p_argv) + portion), + z); } } #endif @@ -174,7 +196,7 @@ } } -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_MIPS_N32 /* The n32 spec says that if "a chunk consists solely of a double float field (but not a double, which is part of a union), it @@ -182,35 +204,41 @@ passed in an integer register". This code traverses structure definitions and generates the appropriate flags. */ -unsigned calc_n32_struct_flags(ffi_type *arg, unsigned *shift) +static unsigned +calc_n32_struct_flags(ffi_type *arg, unsigned *loc, unsigned *arg_reg) { unsigned flags = 0; unsigned index = 0; ffi_type *e; - while (e = arg->elements[index]) + while ((e = arg->elements[index])) { + /* Align this object. */ + *loc = ALIGN(*loc, e->alignment); if (e->type == FFI_TYPE_DOUBLE) { - flags += (FFI_TYPE_DOUBLE << *shift); - *shift += FFI_FLAG_BITS; + /* Already aligned to FFI_SIZEOF_ARG. */ + *arg_reg = *loc / FFI_SIZEOF_ARG; + if (*arg_reg > 7) + break; + flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); + *loc += e->size; } - else if (e->type == FFI_TYPE_STRUCT) - flags += calc_n32_struct_flags(e, shift); else - *shift += FFI_FLAG_BITS; - + *loc += e->size; index++; } + /* Next Argument register at alignment of FFI_SIZEOF_ARG. */ + *arg_reg = ALIGN(*loc, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; return flags; } -unsigned calc_n32_return_struct_flags(ffi_type *arg) +static unsigned +calc_n32_return_struct_flags(ffi_type *arg) { unsigned flags = 0; - unsigned index = 0; unsigned small = FFI_TYPE_SMALLSTRUCT; ffi_type *e; @@ -229,16 +257,16 @@ e = arg->elements[0]; if (e->type == FFI_TYPE_DOUBLE) - flags = FFI_TYPE_DOUBLE << FFI_FLAG_BITS; + flags = FFI_TYPE_DOUBLE; else if (e->type == FFI_TYPE_FLOAT) - flags = FFI_TYPE_FLOAT << FFI_FLAG_BITS; + flags = FFI_TYPE_FLOAT; if (flags && (e = arg->elements[1])) { if (e->type == FFI_TYPE_DOUBLE) - flags += FFI_TYPE_DOUBLE; + flags += FFI_TYPE_DOUBLE << FFI_FLAG_BITS; else if (e->type == FFI_TYPE_FLOAT) - flags += FFI_TYPE_FLOAT; + flags += FFI_TYPE_FLOAT << FFI_FLAG_BITS; else return small; @@ -263,7 +291,7 @@ { cif->flags = 0; -#if _MIPS_SIM == _ABIO32 +#ifdef FFI_MIPS_O32 /* Set the flags necessary for O32 processing. FFI_O32_SOFT_FLOAT * does not have special handling for floating point args. */ @@ -351,10 +379,11 @@ } #endif -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_MIPS_N32 /* Set the flags necessary for N32 processing */ { - unsigned shift = 0; + unsigned arg_reg = 0; + unsigned loc = 0; unsigned count = (cif->nargs < 8) ? cif->nargs : 8; unsigned index = 0; @@ -369,7 +398,7 @@ /* This means that the structure is being passed as a hidden argument */ - shift = FFI_FLAG_BITS; + arg_reg = 1; count = (cif->nargs < 7) ? cif->nargs : 7; cif->rstruct_flag = !0; @@ -380,23 +409,37 @@ else cif->rstruct_flag = 0; - while (count-- > 0) + while (count-- > 0 && arg_reg < 8) { switch ((cif->arg_types)[index]->type) { case FFI_TYPE_FLOAT: case FFI_TYPE_DOUBLE: - cif->flags += ((cif->arg_types)[index]->type << shift); - shift += FFI_FLAG_BITS; + cif->flags += + ((cif->arg_types)[index]->type << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; break; + case FFI_TYPE_LONGDOUBLE: + /* Align it. */ + arg_reg = ALIGN(arg_reg, 2); + /* Treat it as two adjacent doubles. */ + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + break; case FFI_TYPE_STRUCT: + loc = arg_reg * FFI_SIZEOF_ARG; cif->flags += calc_n32_struct_flags((cif->arg_types)[index], - &shift); + &loc, &arg_reg); break; default: - shift += FFI_FLAG_BITS; + arg_reg++; + break; } index++; @@ -431,7 +474,13 @@ case FFI_TYPE_DOUBLE: cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8); break; - + case FFI_TYPE_LONGDOUBLE: + /* Long double is returned as if it were a struct containing + two doubles. */ + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += (FFI_TYPE_DOUBLE + (FFI_TYPE_DOUBLE << FFI_FLAG_BITS)) + << (4 + (FFI_FLAG_BITS * 8)); + break; default: cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); break; @@ -470,7 +519,7 @@ switch (cif->abi) { -#if _MIPS_SIM == _ABIO32 +#ifdef FFI_MIPS_O32 case FFI_O32: case FFI_O32_SOFT_FLOAT: ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, @@ -478,10 +527,25 @@ break; #endif -#if _MIPS_SIM == _ABIN32 +#ifdef FFI_MIPS_N32 case FFI_N32: - ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); + case FFI_N64: + { + int copy_rvalue = 0; + void *rvalue_copy = ecif.rvalue; + if (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size < 16) + { + /* For structures smaller than 16 bytes we clobber memory + in 8 byte increments. Make a copy so we don't clobber + the callers memory outside of the struct bounds. */ + rvalue_copy = alloca(16); + copy_rvalue = 1; + } + ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, rvalue_copy, fn); + if (copy_rvalue) + memcpy(ecif.rvalue, rvalue_copy, cif->rtype->size); + } break; #endif @@ -491,42 +555,83 @@ } } -#if FFI_CLOSURES /* N32 not implemented yet, FFI_CLOSURES not defined */ +#if FFI_CLOSURES #if defined(FFI_MIPS_O32) extern void ffi_closure_O32(void); +#else +extern void ffi_closure_N32(void); #endif /* FFI_MIPS_O32 */ ffi_status -ffi_prep_closure (ffi_closure *closure, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) { unsigned int *tramp = (unsigned int *) &closure->tramp[0]; - unsigned int fn; - unsigned int ctx = (unsigned int) closure; + void * fn; + char *clear_location = (char *) codeloc; #if defined(FFI_MIPS_O32) FFI_ASSERT(cif->abi == FFI_O32 || cif->abi == FFI_O32_SOFT_FLOAT); - fn = (unsigned int) ffi_closure_O32; + fn = ffi_closure_O32; #else /* FFI_MIPS_N32 */ - FFI_ASSERT(cif->abi == FFI_N32); - FFI_ASSERT(!"not implemented"); + FFI_ASSERT(cif->abi == FFI_N32 || cif->abi == FFI_N64); + fn = ffi_closure_N32; #endif /* FFI_MIPS_O32 */ - tramp[0] = 0x3c190000 | (fn >> 16); /* lui $25,high(fn) */ - tramp[1] = 0x37390000 | (fn & 0xffff); /* ori $25,low(fn) */ - tramp[2] = 0x3c080000 | (ctx >> 16); /* lui $8,high(ctx) */ - tramp[3] = 0x03200008; /* jr $25 */ - tramp[4] = 0x35080000 | (ctx & 0xffff); /* ori $8,low(ctx) */ +#if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned)fn >> 16); + /* ori $25,low(fn) */ + tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff); + /* lui $12,high(codeloc) */ + tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); + /* jr $25 */ + tramp[3] = 0x03200008; + /* ori $12,low(codeloc) */ + tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); +#else + /* N64 has a somewhat larger trampoline. */ + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned long)fn >> 48); + /* lui $12,high(codeloc) */ + tramp[1] = 0x3c0c0000 | ((unsigned long)codeloc >> 48); + /* ori $25,mid-high(fn) */ + tramp[2] = 0x37390000 | (((unsigned long)fn >> 32 ) & 0xffff); + /* ori $12,mid-high(codeloc) */ + tramp[3] = 0x358c0000 | (((unsigned long)codeloc >> 32) & 0xffff); + /* dsll $25,$25,16 */ + tramp[4] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[5] = 0x000c6438; + /* ori $25,mid-low(fn) */ + tramp[6] = 0x37390000 | (((unsigned long)fn >> 16 ) & 0xffff); + /* ori $12,mid-low(codeloc) */ + tramp[7] = 0x358c0000 | (((unsigned long)codeloc >> 16) & 0xffff); + /* dsll $25,$25,16 */ + tramp[8] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[9] = 0x000c6438; + /* ori $25,low(fn) */ + tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); + /* jr $25 */ + tramp[11] = 0x03200008; + /* ori $12,low(codeloc) */ + tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); + +#endif closure->cif = cif; closure->fun = fun; closure->user_data = user_data; - /* XXX this is available on Linux, but anything else? */ - cacheflush (tramp, FFI_TRAMPOLINE_SIZE, ICACHE); - +#ifdef USE__BUILTIN___CLEAR_CACHE + __builtin___clear_cache(clear_location, clear_location + FFI_TRAMPOLINE_SIZE); +#else + cacheflush (clear_location, FFI_TRAMPOLINE_SIZE, ICACHE); +#endif return FFI_OK; } @@ -567,7 +672,7 @@ if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_STRUCT) { - rvalue = (void *) ar[0]; + rvalue = (void *)(UINT32)ar[0]; argn = 1; } @@ -645,4 +750,177 @@ } } +#if defined(FFI_MIPS_N32) + +static void +copy_struct_N32(char *target, unsigned offset, ffi_abi abi, ffi_type *type, + int argn, unsigned arg_offset, ffi_arg *ar, + ffi_arg *fpr) +{ + ffi_type **elt_typep = type->elements; + while(*elt_typep) + { + ffi_type *elt_type = *elt_typep; + unsigned o; + char *tp; + char *argp; + char *fpp; + + o = ALIGN(offset, elt_type->alignment); + arg_offset += o - offset; + offset = o; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + + argp = (char *)(ar + argn); + fpp = (char *)(argn >= 8 ? ar + argn : fpr + argn); + + tp = target + offset; + + if (elt_type->type == FFI_TYPE_DOUBLE) + *(double *)tp = *(double *)fpp; + else + memcpy(tp, argp + arg_offset, elt_type->size); + + offset += elt_type->size; + arg_offset += elt_type->size; + elt_typep++; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + } +} + +/* + * Decodes the arguments to a function, which will be stored on the + * stack. AR is the pointer to the beginning of the integer + * arguments. FPR is a pointer to the area where floating point + * registers have been saved. + * + * RVALUE is the location where the function return value will be + * stored. CLOSURE is the prepared closure to invoke. + * + * This function should only be called from assembly, which is in + * turn called from a trampoline. + * + * Returns the function return flags. + * + */ +int +ffi_closure_mips_inner_N32 (ffi_closure *closure, + void *rvalue, ffi_arg *ar, + ffi_arg *fpr) +{ + ffi_cif *cif; + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn; + + cif = closure->cif; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + + argn = 0; + + if (cif->rstruct_flag) + { +#if _MIPS_SIM==_ABIN32 + rvalue = (void *)(UINT32)ar[0]; +#else /* N64 */ + rvalue = (void *)ar[0]; +#endif + argn = 1; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + while (i < avn) + { + if (arg_types[i]->type == FFI_TYPE_FLOAT + || arg_types[i]->type == FFI_TYPE_DOUBLE) + { + ffi_arg *argp = argn >= 8 ? ar + argn : fpr + argn; +#ifdef __MIPSEB__ + if (arg_types[i]->type == FFI_TYPE_FLOAT && argn < 8) + avaluep[i] = ((char *) argp) + sizeof (float); + else +#endif + avaluep[i] = (char *) argp; + } + else + { + unsigned type = arg_types[i]->type; + + if (arg_types[i]->alignment > sizeof(ffi_arg)) + argn = ALIGN(argn, arg_types[i]->alignment / sizeof(ffi_arg)); + + ffi_arg *argp = ar + argn; + + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (cif->abi == FFI_N64) ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; + + switch (type) + { + case FFI_TYPE_SINT8: + avaluep[i] = &avalue[i]; + *(SINT8 *) &avalue[i] = (SINT8) *argp; + break; + + case FFI_TYPE_UINT8: + avaluep[i] = &avalue[i]; + *(UINT8 *) &avalue[i] = (UINT8) *argp; + break; + + case FFI_TYPE_SINT16: + avaluep[i] = &avalue[i]; + *(SINT16 *) &avalue[i] = (SINT16) *argp; + break; + + case FFI_TYPE_UINT16: + avaluep[i] = &avalue[i]; + *(UINT16 *) &avalue[i] = (UINT16) *argp; + break; + + case FFI_TYPE_SINT32: + avaluep[i] = &avalue[i]; + *(SINT32 *) &avalue[i] = (SINT32) *argp; + break; + + case FFI_TYPE_UINT32: + avaluep[i] = &avalue[i]; + *(UINT32 *) &avalue[i] = (UINT32) *argp; + break; + + case FFI_TYPE_STRUCT: + if (argn < 8) + { + /* Allocate space for the struct as at least part of + it was passed in registers. */ + avaluep[i] = alloca(arg_types[i]->size); + copy_struct_N32(avaluep[i], 0, cif->abi, arg_types[i], + argn, 0, ar, fpr); + + break; + } + /* Else fall through. */ + default: + avaluep[i] = (char *) argp; + break; + } + } + argn += ALIGN(arg_types[i]->size, sizeof(ffi_arg)) / sizeof(ffi_arg); + i++; + } + + /* Invoke the closure. */ + (closure->fun) (cif, rvalue, avaluep, closure->user_data); + + return cif->flags >> (FFI_FLAG_BITS * 8); +} + +#endif /* FFI_MIPS_N32 */ + #endif /* FFI_CLOSURES */ Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffitarget.h ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffitarget.h (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffitarget.h Fri Feb 22 09:44:57 2008 @@ -13,19 +13,33 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H +#ifdef linux +#include +# ifndef _ABIN32 +# define _ABIN32 _MIPS_SIM_NABI32 +# endif +# ifndef _ABI64 +# define _ABI64 _MIPS_SIM_ABI64 +# endif +# ifndef _ABIO32 +# define _ABIO32 _MIPS_SIM_ABI32 +# endif +#endif + #if !defined(_MIPS_SIM) -- something is very wrong -- #else @@ -42,10 +56,13 @@ #ifdef FFI_MIPS_O32 /* O32 stack frames have 32bit integer args */ -#define FFI_SIZEOF_ARG 4 +# define FFI_SIZEOF_ARG 4 #else /* N32 and N64 frames have 64bit integer args */ -#define FFI_SIZEOF_ARG 8 +# define FFI_SIZEOF_ARG 8 +# if _MIPS_SIM == _ABIN32 +# define FFI_SIZEOF_JAVA_RAW 4 +# endif #endif #define FFI_FLAG_BITS 2 @@ -104,19 +121,28 @@ #define ra $31 #ifdef FFI_MIPS_O32 -#define REG_L lw -#define REG_S sw -#define SUBU subu -#define ADDU addu -#define SRL srl -#define LI li +# define REG_L lw +# define REG_S sw +# define SUBU subu +# define ADDU addu +# define SRL srl +# define LI li #else /* !FFI_MIPS_O32 */ -#define REG_L ld -#define REG_S sd -#define SUBU dsubu -#define ADDU daddu -#define SRL dsrl -#define LI dli +# define REG_L ld +# define REG_S sd +# define SUBU dsubu +# define ADDU daddu +# define SRL dsrl +# define LI dli +# if (_MIPS_SIM==_ABI64) +# define LA dla +# define EH_FRAME_ALIGN 3 +# define FDE_ADDR_BYTES .8byte +# else +# define LA la +# define EH_FRAME_ALIGN 2 +# define FDE_ADDR_BYTES .4byte +# endif /* _MIPS_SIM==_ABI64 */ #endif /* !FFI_MIPS_O32 */ #else /* !LIBFFI_ASM */ #ifdef FFI_MIPS_O32 @@ -143,7 +169,11 @@ FFI_DEFAULT_ABI = FFI_O32, #endif #else +# if _MIPS_SIM==_ABI64 + FFI_DEFAULT_ABI = FFI_N64, +# else FFI_DEFAULT_ABI = FFI_N32, +# endif #endif FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 @@ -158,8 +188,13 @@ #define FFI_CLOSURES 1 #define FFI_TRAMPOLINE_SIZE 20 #else -/* N32/N64 not implemented yet. */ -#define FFI_CLOSURES 0 +/* N32/N64. */ +# define FFI_CLOSURES 1 +#if _MIPS_SIM==_ABI64 +#define FFI_TRAMPOLINE_SIZE 52 +#else +#define FFI_TRAMPOLINE_SIZE 20 +#endif #endif /* FFI_MIPS_O32 */ #define FFI_NATIVE_RAW_API 0 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/n32.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/n32.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/n32.S Fri Feb 22 09:44:57 2008 @@ -17,7 +17,8 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -45,13 +46,19 @@ .globl ffi_call_N32 .ent ffi_call_N32 ffi_call_N32: +.LFB3: + .frame $fp, SIZEOF_FRAME, ra + .mask 0xc0000000,-FFI_SIZEOF_ARG + .fmask 0x00000000,0 # Prologue SUBU $sp, SIZEOF_FRAME # Frame size +.LCFI0: REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address +.LCFI1: move $fp, $sp - +.LCFI3: move t9, callback # callback function pointer REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags @@ -72,14 +79,12 @@ SUBU $sp, $sp, v0 # move the stack pointer to reflect the # arg space - ADDU a0, $sp, 0 # 4 * FFI_SIZEOF_ARG + move a0, $sp # 4 * FFI_SIZEOF_ARG ADDU a3, $fp, 3 * FFI_SIZEOF_ARG # Call ffi_prep_args jal t9 - # ADDU $sp, $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args - # Copy the stack pointer to t9 move t9, $sp @@ -90,18 +95,16 @@ REG_L t6, 2*FFI_SIZEOF_ARG($fp) # Is it bigger than 8 * FFI_SIZEOF_ARG? - dadd t7, $0, 8 * FFI_SIZEOF_ARG - dsub t8, t6, t7 + daddiu t8, t6, -(8 * FFI_SIZEOF_ARG) bltz t8, loadregs - add t9, t9, t8 + ADDU t9, t9, t8 loadregs: - REG_L t4, 3*FFI_SIZEOF_ARG($fp) # load the flags word - add t6, t4, 0 # and copy it into t6 + REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. - and t4, ((1< Author: martin.v.loewis Date: Fri Feb 22 10:15:14 2008 New Revision: 60953 Modified: python/branches/release25-maint/Doc/commontex/boilerplate.tex Log: Fix typo Modified: python/branches/release25-maint/Doc/commontex/boilerplate.tex ============================================================================== --- python/branches/release25-maint/Doc/commontex/boilerplate.tex (original) +++ python/branches/release25-maint/Doc/commontex/boilerplate.tex Fri Feb 22 10:15:14 2008 @@ -5,5 +5,5 @@ Email: \email{docs at python.org} } -\date{21th February, 2008} % XXX update before final release! +\date{21st February, 2008} % XXX update before final release! \input{patchlevel} % include Python version information From python-checkins at python.org Fri Feb 22 10:17:14 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 22 Feb 2008 10:17:14 +0100 (CET) Subject: [Python-checkins] r60954 - python/tags/r252/Doc/commontex/boilerplate.tex Message-ID: <20080222091714.48CBC1E4017@bag.python.org> Author: martin.v.loewis Date: Fri Feb 22 10:17:13 2008 New Revision: 60954 Modified: python/tags/r252/Doc/commontex/boilerplate.tex Log: Fix typo. Modified: python/tags/r252/Doc/commontex/boilerplate.tex ============================================================================== --- python/tags/r252/Doc/commontex/boilerplate.tex (original) +++ python/tags/r252/Doc/commontex/boilerplate.tex Fri Feb 22 10:17:13 2008 @@ -5,5 +5,5 @@ Email: \email{docs at python.org} } -\date{21th February, 2008} % XXX update before final release! +\date{21st February, 2008} % XXX update before final release! \input{patchlevel} % include Python version information From buildbot at python.org Fri Feb 22 10:45:46 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 09:45:46 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080222094546.422751E4018@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2571 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: The web-page 'force build' button was pressed by 'theller': try the libffi3-branch Build Source Stamp: [branch branches/libffi3-branch] 60948 Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_signal test_smtplib ====================================================================== FAIL: test_main (test.test_signal.InterProcessSignalTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_signal.py", line 117, in test_main self.assert_(self.b_called) AssertionError sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 22 11:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 05:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222102002.GA18681@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From nnorwitz at gmail.com Fri Feb 22 11:23:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 05:23:03 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080222102303.GA18792@python.psfb.org> More important issues: ---------------------- test_threadedtempfile leaked [0, 0, 77] references, sum=77 Less important issues: ---------------------- test_cmd_line leaked [23, -23, 0] references, sum=0 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [3, 127, -121] references, sum=9 From nnorwitz at gmail.com Fri Feb 22 12:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 06:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222112003.GA22094@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Fri Feb 22 11:54:07 2008 From: python-checkins at python.org (nick.coghlan) Date: Fri, 22 Feb 2008 11:54:07 +0100 (CET) Subject: [Python-checkins] r60955 - python/trunk/Lib/runpy.py Message-ID: <20080222105407.68E811E400E@bag.python.org> Author: nick.coghlan Date: Fri Feb 22 11:54:06 2008 New Revision: 60955 Modified: python/trunk/Lib/runpy.py Log: Try to make command line error messages from runpy easier to understand (and suppress traceback cruft from the implicitly invoked runpy machinery) Modified: python/trunk/Lib/runpy.py ============================================================================== --- python/trunk/Lib/runpy.py (original) +++ python/trunk/Lib/runpy.py Fri Feb 22 11:54:06 2008 @@ -89,6 +89,9 @@ # XXX ncoghlan: Should this be documented and made public? +# (Current thoughts: don't repeat the mistake that lead to its +# creation when run_module() no longer met the needs of +# mainmodule.c, but couldn't be changed because it was public) def _run_module_as_main(mod_name, set_argv0=True): """Runs the designated module in the __main__ namespace @@ -96,7 +99,20 @@ __file__ __loader__ """ - loader, code, fname = _get_module_details(mod_name) + try: + loader, code, fname = _get_module_details(mod_name) + except ImportError as exc: + # Try to provide a good error message + # for directories, zip files and the -m switch + if set_argv0: + # For -m switch, just disply the exception + info = str(exc) + else: + # For directories/zipfiles, let the user + # know what the code was looking for + info = "can't find '__main__.py' in %r" % sys.argv[0] + msg = "%s: %s" % (sys.executable, info) + sys.exit(msg) pkg_name = mod_name.rpartition('.')[0] main_globals = sys.modules["__main__"].__dict__ if set_argv0: From buildbot at python.org Fri Feb 22 12:10:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 11:10:10 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080222111011.28B541E4019@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/247 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,eric.smith,georg.brandl,guido.van.rossum,raymond.hettinger,thomas.heller BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 22 12:13:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 11:13:33 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080222111333.9A2351E4017@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/951 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: nick.coghlan BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Fri Feb 22 12:41:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 11:41:40 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080222114141.23B3F1E4017@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/853 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: nick.coghlan BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Fri Feb 22 12:45:27 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 11:45:27 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080222114528.219C81E4018@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2826 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: nick.coghlan BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 22 13:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 07:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222122002.GA22298@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Fri Feb 22 12:56:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 11:56:31 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080222115632.674491E4024@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1476 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: nick.coghlan BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_shelve ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/home/pybot/buildarea/trunk.klose-debian-ia64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'gdbm.gdbm' is not iterable make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Fri Feb 22 13:31:46 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 22 Feb 2008 13:31:46 +0100 (CET) Subject: [Python-checkins] r60956 - in python/trunk/Doc: c-api/long.rst c-api/objbuffer.rst c-api/typeobj.rst distutils/builtdist.rst distutils/packageindex.rst howto/advocacy.rst howto/doanddont.rst howto/functional.rst howto/sockets.rst library/codecs.rst library/collections.rst library/decimal.rst library/logging.rst library/mailbox.rst library/platform.rst library/profile.rst library/random.rst library/re.rst library/socket.rst library/tokenize.rst library/xml.etree.elementtree.rst reference/compound_stmts.rst reference/expressions.rst reference/index.rst whatsnew/2.6.rst Message-ID: <20080222123146.2F2C31E402F@bag.python.org> Author: georg.brandl Date: Fri Feb 22 13:31:45 2008 New Revision: 60956 Modified: python/trunk/Doc/c-api/long.rst python/trunk/Doc/c-api/objbuffer.rst python/trunk/Doc/c-api/typeobj.rst python/trunk/Doc/distutils/builtdist.rst python/trunk/Doc/distutils/packageindex.rst python/trunk/Doc/howto/advocacy.rst python/trunk/Doc/howto/doanddont.rst python/trunk/Doc/howto/functional.rst python/trunk/Doc/howto/sockets.rst python/trunk/Doc/library/codecs.rst python/trunk/Doc/library/collections.rst python/trunk/Doc/library/decimal.rst python/trunk/Doc/library/logging.rst python/trunk/Doc/library/mailbox.rst python/trunk/Doc/library/platform.rst python/trunk/Doc/library/profile.rst python/trunk/Doc/library/random.rst python/trunk/Doc/library/re.rst python/trunk/Doc/library/socket.rst python/trunk/Doc/library/tokenize.rst python/trunk/Doc/library/xml.etree.elementtree.rst python/trunk/Doc/reference/compound_stmts.rst python/trunk/Doc/reference/expressions.rst python/trunk/Doc/reference/index.rst python/trunk/Doc/whatsnew/2.6.rst Log: A lot more typo fixes by Ori Avtalion. Modified: python/trunk/Doc/c-api/long.rst ============================================================================== --- python/trunk/Doc/c-api/long.rst (original) +++ python/trunk/Doc/c-api/long.rst Fri Feb 22 13:31:45 2008 @@ -174,6 +174,6 @@ .. versionadded:: 1.5.2 .. versionchanged:: 2.5 - For values outside 0..LONG_MAX, both signed and unsigned integers are acccepted. + For values outside 0..LONG_MAX, both signed and unsigned integers are accepted. Modified: python/trunk/Doc/c-api/objbuffer.rst ============================================================================== --- python/trunk/Doc/c-api/objbuffer.rst (original) +++ python/trunk/Doc/c-api/objbuffer.rst Fri Feb 22 13:31:45 2008 @@ -8,7 +8,7 @@ .. cfunction:: int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len) - Returns a pointer to a read-only memory location useable as character- based + Returns a pointer to a read-only memory location usable as character-based input. The *obj* argument must support the single-segment character buffer interface. On success, returns ``0``, sets *buffer* to the memory location and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:`TypeError` Modified: python/trunk/Doc/c-api/typeobj.rst ============================================================================== --- python/trunk/Doc/c-api/typeobj.rst (original) +++ python/trunk/Doc/c-api/typeobj.rst Fri Feb 22 13:31:45 2008 @@ -573,7 +573,7 @@ The :attr:`tp_traverse` pointer is used by the garbage collector to detect reference cycles. A typical implementation of a :attr:`tp_traverse` function simply calls :cfunc:`Py_VISIT` on each of the instance's members that are Python - objects. For exampe, this is function :cfunc:`local_traverse` from the + objects. For example, this is function :cfunc:`local_traverse` from the :mod:`thread` extension module:: static int @@ -1160,7 +1160,7 @@ binaryfunc nb_and; binaryfunc nb_xor; binaryfunc nb_or; - coercion nb_coerce; /* Used by the coerce() funtion */ + coercion nb_coerce; /* Used by the coerce() function */ unaryfunc nb_int; unaryfunc nb_long; unaryfunc nb_float; Modified: python/trunk/Doc/distutils/builtdist.rst ============================================================================== --- python/trunk/Doc/distutils/builtdist.rst (original) +++ python/trunk/Doc/distutils/builtdist.rst Fri Feb 22 13:31:45 2008 @@ -195,7 +195,7 @@ | | or --- & :option:`maintainer` and | | | :option:`maintainer_email` | +------------------------------------------+----------------------------------------------+ -| Copyright | :option:`licence` | +| Copyright | :option:`license` | +------------------------------------------+----------------------------------------------+ | Url | :option:`url` | +------------------------------------------+----------------------------------------------+ Modified: python/trunk/Doc/distutils/packageindex.rst ============================================================================== --- python/trunk/Doc/distutils/packageindex.rst (original) +++ python/trunk/Doc/distutils/packageindex.rst Fri Feb 22 13:31:45 2008 @@ -53,13 +53,13 @@ The .pypirc file ================ -The format of the :file:`.pypirc` file is formated as follows:: +The format of the :file:`.pypirc` file is as follows:: [server-login] repository: username: password: -*repository* can be ommitted and defaults to ``http://www.python.org/pypi``. +*repository* can be omitted and defaults to ``http://www.python.org/pypi``. Modified: python/trunk/Doc/howto/advocacy.rst ============================================================================== --- python/trunk/Doc/howto/advocacy.rst (original) +++ python/trunk/Doc/howto/advocacy.rst Fri Feb 22 13:31:45 2008 @@ -276,7 +276,7 @@ product in any way. * If something goes wrong, you can't sue for damages. Practically all software - licences contain this condition. + licenses contain this condition. Notice that you don't have to provide source code for anything that contains Python or is built with it. Also, the Python interpreter and accompanying Modified: python/trunk/Doc/howto/doanddont.rst ============================================================================== --- python/trunk/Doc/howto/doanddont.rst (original) +++ python/trunk/Doc/howto/doanddont.rst Fri Feb 22 13:31:45 2008 @@ -114,7 +114,7 @@ This is a "don't" which is much weaker then the previous "don't"s but is still something you should not do if you don't have good reasons to do that. The reason it is usually bad idea is because you suddenly have an object which lives -in two seperate namespaces. When the binding in one namespace changes, the +in two separate namespaces. When the binding in one namespace changes, the binding in the other will not, so there will be a discrepancy between them. This happens when, for example, one module is reloaded, or changes the definition of a function at runtime. Modified: python/trunk/Doc/howto/functional.rst ============================================================================== --- python/trunk/Doc/howto/functional.rst (original) +++ python/trunk/Doc/howto/functional.rst Fri Feb 22 13:31:45 2008 @@ -905,7 +905,7 @@ itertools.izip(['a', 'b', 'c'], (1, 2, 3)) => ('a', 1), ('b', 2), ('c', 3) -It's similiar to the built-in :func:`zip` function, but doesn't construct an +It's similar to the built-in :func:`zip` function, but doesn't construct an in-memory list and exhaust all the input iterators before returning; instead tuples are constructed and returned only if they're requested. (The technical term for this behaviour is `lazy evaluation Modified: python/trunk/Doc/howto/sockets.rst ============================================================================== --- python/trunk/Doc/howto/sockets.rst (original) +++ python/trunk/Doc/howto/sockets.rst Fri Feb 22 13:31:45 2008 @@ -357,7 +357,7 @@ reason to do otherwise. In return, you will get three lists. They have the sockets that are actually -readable, writable and in error. Each of these lists is a subset (possbily +readable, writable and in error. Each of these lists is a subset (possibly empty) of the corresponding list you passed in. And if you put a socket in more than one input list, it will only be (at most) in one output list. @@ -371,7 +371,7 @@ If you have a "server" socket, put it in the potential_readers list. If it comes out in the readable list, your ``accept`` will (almost certainly) work. If you have created a new socket to ``connect`` to someone else, put it in the -ptoential_writers list. If it shows up in the writable list, you have a decent +potential_writers list. If it shows up in the writable list, you have a decent chance that it has connected. One very nasty problem with ``select``: if somewhere in those input lists of Modified: python/trunk/Doc/library/codecs.rst ============================================================================== --- python/trunk/Doc/library/codecs.rst (original) +++ python/trunk/Doc/library/codecs.rst Fri Feb 22 13:31:45 2008 @@ -1001,7 +1001,7 @@ +-----------------+--------------------------------+--------------------------------+ | iso8859_3 | iso-8859-3, latin3, L3 | Esperanto, Maltese | +-----------------+--------------------------------+--------------------------------+ -| iso8859_4 | iso-8859-4, latin4, L4 | Baltic languagues | +| iso8859_4 | iso-8859-4, latin4, L4 | Baltic languages | +-----------------+--------------------------------+--------------------------------+ | iso8859_5 | iso-8859-5, cyrillic | Bulgarian, Byelorussian, | | | | Macedonian, Russian, Serbian | Modified: python/trunk/Doc/library/collections.rst ============================================================================== --- python/trunk/Doc/library/collections.rst (original) +++ python/trunk/Doc/library/collections.rst Fri Feb 22 13:31:45 2008 @@ -470,7 +470,7 @@ .. function:: namedtuple(typename, fieldnames, [verbose]) Returns a new tuple subclass named *typename*. The new subclass is used to - create tuple-like objects that have fields accessable by attribute lookup as + create tuple-like objects that have fields accessible by attribute lookup as well as being indexable and iterable. Instances of the subclass also have a helpful docstring (with typename and fieldnames) and a helpful :meth:`__repr__` method which lists the tuple contents in a ``name=value`` format. @@ -536,7 +536,7 @@ >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) - >>> p.x + p.y # fields also accessable by name + >>> p.x + p.y # fields also accessible by name 33 >>> p # readable __repr__ with a name=value style Point(x=11, y=22) Modified: python/trunk/Doc/library/decimal.rst ============================================================================== --- python/trunk/Doc/library/decimal.rst (original) +++ python/trunk/Doc/library/decimal.rst Fri Feb 22 13:31:45 2008 @@ -1609,7 +1609,7 @@ original's two-place significance. If an application does not care about tracking significance, it is easy to -remove the exponent and trailing zeroes, losing signficance, but keeping the +remove the exponent and trailing zeroes, losing significance, but keeping the value unchanged:: >>> def remove_exponent(d): Modified: python/trunk/Doc/library/logging.rst ============================================================================== --- python/trunk/Doc/library/logging.rst (original) +++ python/trunk/Doc/library/logging.rst Fri Feb 22 13:31:45 2008 @@ -43,7 +43,7 @@ It is, of course, possible to log messages with different verbosity levels or to different destinations. Support for writing log messages to files, HTTP GET/POST locations, email via SMTP, generic sockets, or OS-specific logging -mechnisms are all supported by the standard module. You can also create your +mechanisms are all supported by the standard module. You can also create your own log destination class if you have special requirements not met by any of the built-in classes. @@ -267,7 +267,7 @@ with an :func:`addHandler` method. As an example scenario, an application may want to send all log messages to a log file, all log messages of error or higher to stdout, and all messages of critical to an email address. This scenario -requires three individual handlers where each hander is responsible for sending +requires three individual handlers where each handler is responsible for sending messages of a specific severity to a specific location. The standard library includes quite a few handler types; this tutorial uses only Modified: python/trunk/Doc/library/mailbox.rst ============================================================================== --- python/trunk/Doc/library/mailbox.rst (original) +++ python/trunk/Doc/library/mailbox.rst Fri Feb 22 13:31:45 2008 @@ -433,7 +433,7 @@ original format, which is sometimes referred to as :dfn:`mboxo`. This means that the :mailheader:`Content-Length` header, if present, is ignored and that any occurrences of "From " at the beginning of a line in a message body are -transformed to ">From " when storing the message, although occurences of ">From +transformed to ">From " when storing the message, although occurrences of ">From " are not transformed to "From " when reading the message. Some :class:`Mailbox` methods implemented by :class:`mbox` deserve special @@ -581,7 +581,7 @@ .. method:: MH.close() - :class:`MH` instances do not keep any open files, so this method is equivelant + :class:`MH` instances do not keep any open files, so this method is equivalent to :meth:`unlock`. Modified: python/trunk/Doc/library/platform.rst ============================================================================== --- python/trunk/Doc/library/platform.rst (original) +++ python/trunk/Doc/library/platform.rst Fri Feb 22 13:31:45 2008 @@ -245,7 +245,7 @@ version)`` which default to the given parameters in case the lookup fails. Note that this function has intimate knowledge of how different libc versions - add symbols to the executable is probably only useable for executables compiled + add symbols to the executable is probably only usable for executables compiled using :program:`gcc`. The file is read and scanned in chunks of *chunksize* bytes. Modified: python/trunk/Doc/library/profile.rst ============================================================================== --- python/trunk/Doc/library/profile.rst (original) +++ python/trunk/Doc/library/profile.rst Fri Feb 22 13:31:45 2008 @@ -531,7 +531,7 @@ non-parenthesized number repeats the cumulative time spent in the function at the right. - * With :mod:`cProfile`, each caller is preceeded by three numbers: the number of + * With :mod:`cProfile`, each caller is preceded by three numbers: the number of times this specific call was made, and the total and cumulative times spent in the current function while it was invoked by this specific caller. Modified: python/trunk/Doc/library/random.rst ============================================================================== --- python/trunk/Doc/library/random.rst (original) +++ python/trunk/Doc/library/random.rst Fri Feb 22 13:31:45 2008 @@ -98,7 +98,7 @@ Change the internal state to one different from and likely far away from the current state. *n* is a non-negative integer which is used to scramble the current state vector. This is most useful in multi-threaded programs, in - conjuction with multiple instances of the :class:`Random` class: + conjunction with multiple instances of the :class:`Random` class: :meth:`setstate` or :meth:`seed` can be used to force all instances into the same internal state, and then :meth:`jumpahead` can be used to force the instances' states far apart. Modified: python/trunk/Doc/library/re.rst ============================================================================== --- python/trunk/Doc/library/re.rst (original) +++ python/trunk/Doc/library/re.rst Fri Feb 22 13:31:45 2008 @@ -1102,7 +1102,7 @@ 'Heather Albrecht 548.326.4584 919 Park Place'] Finally, split each entry into a list with first name, last name, telephone -number, and address. We use the ``maxsplit`` paramater of :func:`split` +number, and address. We use the ``maxsplit`` parameter of :func:`split` because the address has spaces, our splitting pattern, in it:: >>> [re.split(":? ", entry, 3) for entry in entries] @@ -1112,7 +1112,7 @@ ['Heather', 'Albrecht', '548.326.4584', '919 Park Place']] The ``:?`` pattern matches the colon after the last name, so that it does not -occur in the result list. With a ``maxsplit`` of ``4``, we could seperate the +occur in the result list. With a ``maxsplit`` of ``4``, we could separate the house number from the street name:: >>> [re.split(":? ", entry, 4) for entry in entries] @@ -1144,7 +1144,7 @@ Finding all Adverbs ^^^^^^^^^^^^^^^^^^^ -:func:`findall` matches *all* occurences of a pattern, not just the first +:func:`findall` matches *all* occurrences of a pattern, not just the first one as :func:`search` does. For example, if one was a writer and wanted to find all of the adverbs in some text, he or she might use :func:`findall` in the following manner:: Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Fri Feb 22 13:31:45 2008 @@ -929,5 +929,5 @@ # receive a package print s.recvfrom(65565) - # disabled promiscous mode + # disabled promiscuous mode s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) Modified: python/trunk/Doc/library/tokenize.rst ============================================================================== --- python/trunk/Doc/library/tokenize.rst (original) +++ python/trunk/Doc/library/tokenize.rst Fri Feb 22 13:31:45 2008 @@ -18,7 +18,7 @@ .. function:: generate_tokens(readline) - The :func:`generate_tokens` generator requires one argment, *readline*, which + The :func:`generate_tokens` generator requires one argument, *readline*, which must be a callable object which provides the same interface as the :meth:`readline` method of built-in file objects (see section :ref:`bltin-file-objects`). Each call to the function should return one line of Modified: python/trunk/Doc/library/xml.etree.elementtree.rst ============================================================================== --- python/trunk/Doc/library/xml.etree.elementtree.rst (original) +++ python/trunk/Doc/library/xml.etree.elementtree.rst Fri Feb 22 13:31:45 2008 @@ -421,7 +421,7 @@ .. method:: TreeBuilder.close() - Flushes the parser buffers, and returns the toplevel documen element. Returns an + Flushes the parser buffers, and returns the toplevel document element. Returns an Element instance. Modified: python/trunk/Doc/reference/compound_stmts.rst ============================================================================== --- python/trunk/Doc/reference/compound_stmts.rst (original) +++ python/trunk/Doc/reference/compound_stmts.rst Fri Feb 22 13:31:45 2008 @@ -531,7 +531,7 @@ .. rubric:: Footnotes -.. [#] The exception is propogated to the invocation stack only if there is no +.. [#] The exception is propagated to the invocation stack only if there is no :keyword:`finally` clause that negates the exception. .. [#] Currently, control "flows off the end" except in the case of an exception or the Modified: python/trunk/Doc/reference/expressions.rst ============================================================================== --- python/trunk/Doc/reference/expressions.rst (original) +++ python/trunk/Doc/reference/expressions.rst Fri Feb 22 13:31:45 2008 @@ -395,7 +395,7 @@ generator, or raises :exc:`StopIteration` if the generator exits without yielding another value. When :meth:`send` is called to start the generator, it must be called with :const:`None` as the argument, because there is no - :keyword:`yield` expression that could receieve the value. + :keyword:`yield` expression that could receive the value. .. method:: generator.throw(type[, value[, traceback]]) @@ -677,7 +677,7 @@ If the syntax ``*expression`` appears in the function call, ``expression`` must evaluate to a sequence. Elements from this sequence are treated as if they were -additional positional arguments; if there are postional arguments *x1*,...,*xN* +additional positional arguments; if there are positional arguments *x1*,...,*xN* , and ``expression`` evaluates to a sequence *y1*,...,*yM*, this is equivalent to a call with M+N positional arguments *x1*,...,*xN*,*y1*,...,*yM*. Modified: python/trunk/Doc/reference/index.rst ============================================================================== --- python/trunk/Doc/reference/index.rst (original) +++ python/trunk/Doc/reference/index.rst Fri Feb 22 13:31:45 2008 @@ -17,7 +17,7 @@ interfaces available to C/C++ programmers in detail. .. toctree:: - :maxdepth: 3 + :maxdepth: 2 introduction.rst lexical_analysis.rst Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Fri Feb 22 13:31:45 2008 @@ -560,7 +560,7 @@ Numbers are further divided into :class:`Exact` and :class:`Inexact`. Exact numbers can represent values precisely and operations never round off the results or introduce tiny errors that may break the -communtativity and associativity properties; inexact numbers may +commutativity and associativity properties; inexact numbers may perform such rounding or introduce small errors. Integers, long integers, and rational numbers are exact, while floating-point and complex numbers are inexact. @@ -1395,7 +1395,7 @@ .. Issue 1534 * Python's C API now includes two functions for case-insensitive string - comparisions, ``PyOS_stricmp(char*, char*)`` + comparisons, ``PyOS_stricmp(char*, char*)`` and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``. (Contributed by Christian Heimes.) From buildbot at python.org Fri Feb 22 13:33:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 12:33:57 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080222123357.AB8DD1E4018@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/97 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: The web-page 'force build' button was pressed by 'theller': try the libffi3-branch Build Source Stamp: [branch branches/libffi3-branch] HEAD Blamelist: BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=20224 and list=[21757] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 22 14:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 08:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222132003.GA22480@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Fri Feb 22 13:56:34 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 22 Feb 2008 13:56:34 +0100 (CET) Subject: [Python-checkins] r60957 - python/trunk/Doc/tutorial/stdlib2.rst Message-ID: <20080222125634.CB8441E4018@bag.python.org> Author: georg.brandl Date: Fri Feb 22 13:56:34 2008 New Revision: 60957 Modified: python/trunk/Doc/tutorial/stdlib2.rst Log: Don't reference pyshell. Modified: python/trunk/Doc/tutorial/stdlib2.rst ============================================================================== --- python/trunk/Doc/tutorial/stdlib2.rst (original) +++ python/trunk/Doc/tutorial/stdlib2.rst Fri Feb 22 13:56:34 2008 @@ -269,7 +269,7 @@ 0 >>> d['primary'] # entry was automatically removed Traceback (most recent call last): - File "", line 1, in -toplevel- + File "", line 1, in d['primary'] # entry was automatically removed File "C:/python26/lib/weakref.py", line 46, in __getitem__ o = self.data[key]() From python-checkins at python.org Fri Feb 22 13:57:05 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 22 Feb 2008 13:57:05 +0100 (CET) Subject: [Python-checkins] r60958 - python/trunk/Doc/library/weakref.rst Message-ID: <20080222125705.C4A161E4018@bag.python.org> Author: georg.brandl Date: Fri Feb 22 13:57:05 2008 New Revision: 60958 Modified: python/trunk/Doc/library/weakref.rst Log: Another fix. Modified: python/trunk/Doc/library/weakref.rst ============================================================================== --- python/trunk/Doc/library/weakref.rst (original) +++ python/trunk/Doc/library/weakref.rst Fri Feb 22 13:57:05 2008 @@ -63,7 +63,7 @@ class Dict(dict): pass - obj = Dict(red=1, green=2, blue=3) # this object is weak referencable + obj = Dict(red=1, green=2, blue=3) # this object is weak referenceable Extension types can easily be made to support weak references; see :ref:`weakref-support`. From nnorwitz at gmail.com Fri Feb 22 15:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 09:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222142002.GA22717@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Fri Feb 22 15:35:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 14:35:29 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080222143529.8544B1E4018@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/62 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: georg.brandl BUILD FAILED: failed compile sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 22 16:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 10:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222152003.GA3645@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Fri Feb 22 16:05:57 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 16:05:57 +0100 (CET) Subject: [Python-checkins] r60960 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Message-ID: <20080222150557.6A1BC1E4019@bag.python.org> Author: thomas.heller Date: Fri Feb 22 16:05:57 2008 New Revision: 60960 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Log: Another file from libffi-3.0.2. Tested on OS X g4 (is this POWERPC_DARWIN?). Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/prep_cif.c Fri Feb 22 16:05:57 2008 @@ -53,29 +53,11 @@ /* Perform a sanity check on the argument type */ FFI_ASSERT_VALID_TYPE(*ptr); -#ifdef POWERPC_DARWIN - { - int curalign; - - curalign = (*ptr)->alignment; - if (ptr != &(arg->elements[0])) { - if (curalign > 4 && curalign != 16) { - curalign = 4; - } - } - arg->size = ALIGN(arg->size, curalign); - arg->size += (*ptr)->size; - - arg->alignment = (arg->alignment > curalign) ? - arg->alignment : curalign; - } -#else arg->size = ALIGN(arg->size, (*ptr)->alignment); arg->size += (*ptr)->size; arg->alignment = (arg->alignment > (*ptr)->alignment) ? arg->alignment : (*ptr)->alignment; -#endif ptr++; } @@ -103,19 +85,6 @@ /* Perform machine independent ffi_cif preparation, then call machine dependent routine. */ -#ifdef X86_DARWIN -static inline int struct_on_stack(int size) -{ - if (size > 8) return 1; - /* This is not what the ABI says, but is what is really implemented */ - switch (size) { - case 1: case 2: case 4: case 8: return 0; - } - return 1; -} -#endif - - ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes) { @@ -148,8 +117,7 @@ && (cif->abi != FFI_V9 || cif->rtype->size > 32) #endif #ifdef X86_DARWIN - - && (struct_on_stack(cif->rtype->size)) + && (cif->rtype->size > 8) #endif ) bytes = STACK_ARG_SIZE(sizeof(void*)); @@ -166,16 +134,7 @@ check after the initialization. */ FFI_ASSERT_VALID_TYPE(*ptr); -#if defined(X86_DARWIN) - { - int align = (*ptr)->alignment; - if (align > 4) align = 4; - if ((align - 1) & bytes) - bytes = ALIGN(bytes, align); - bytes += STACK_ARG_SIZE((*ptr)->size); - } - -#elif !defined __x86_64__ && !defined S390 && !defined PA +#if !defined __x86_64__ && !defined S390 && !defined PA #ifdef SPARC if (((*ptr)->type == FFI_TYPE_STRUCT && ((*ptr)->size > 16 || cif->abi != FFI_V9)) From python-checkins at python.org Fri Feb 22 16:07:01 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 16:07:01 +0100 (CET) Subject: [Python-checkins] r60961 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/darwin.S Message-ID: <20080222150701.EE5401E4018@bag.python.org> Author: thomas.heller Date: Fri Feb 22 16:07:01 2008 New Revision: 60961 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/darwin.S Log: Another file from libffi-3.0.2. Untested; I do not have a darwin x86 machine, also there's no buildbot IIUC. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/darwin.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/darwin.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/darwin.S Fri Feb 22 16:07:01 2008 @@ -1,8 +1,9 @@ #ifdef __i386__ /* ----------------------------------------------------------------------- - darwin.S - Copyright (c) 1996, 1998, 2001, 2002, 2003 Red Hat, Inc. - - X86 Foreign Function Interface + darwin.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. + + X86 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -18,16 +19,12 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ - -/* - * This file is based on sysv.S and then hacked up by Ronald who hasn't done - * assembly programming in 8 years. - */ #ifndef __x86_64__ @@ -35,18 +32,11 @@ #include #include -#ifdef PyObjC_STRICT_DEBUGGING - /* XXX: Debugging of stack alignment, to be removed */ -#define ASSERT_STACK_ALIGNED movdqa -16(%esp), %xmm0 -#else -#define ASSERT_STACK_ALIGNED -#endif - .text .globl _ffi_prep_args -.align 4 + .align 4 .globl _ffi_call_SYSV _ffi_call_SYSV: @@ -54,15 +44,12 @@ pushl %ebp .LCFI0: movl %esp,%ebp - subl $8,%esp - ASSERT_STACK_ALIGNED .LCFI1: + subl $8,%esp /* Make room for all of the new args. */ movl 16(%ebp),%ecx subl %ecx,%esp - ASSERT_STACK_ALIGNED - movl %esp,%eax /* Place all of the ffi_prep_args in position */ @@ -71,27 +58,20 @@ pushl %eax call *8(%ebp) - ASSERT_STACK_ALIGNED - /* Return stack to previous state and call the function */ - addl $16,%esp - - ASSERT_STACK_ALIGNED + addl $16,%esp call *28(%ebp) - - /* XXX: return returns return with 'ret $4', that upsets the stack! */ - movl 16(%ebp),%ecx - addl %ecx,%esp - /* Load %ecx with the return type code */ movl 20(%ebp),%ecx + /* Protect %esi. We're going to pop it in the epilogue. */ + pushl %esi /* If the return value pointer is NULL, assume no return value. */ cmpl $0,24(%ebp) - jne retint + jne 0f /* Even if there is no space for the return value, we are obliged to handle floating-point values. */ @@ -99,143 +79,366 @@ jne noretval fstp %st(0) - jmp epilogue - -retint: - cmpl $FFI_TYPE_INT,%ecx - jne retfloat - /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx - movl %eax,0(%ecx) jmp epilogue +0: + .align 4 + call 1f +.Lstore_table: + .long noretval-.Lstore_table /* FFI_TYPE_VOID */ + .long retint-.Lstore_table /* FFI_TYPE_INT */ + .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ + .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ + .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ + .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ + .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ + .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ + .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ + .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ + .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ + .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ + .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ + .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ + .long retint-.Lstore_table /* FFI_TYPE_POINTER */ + .long retstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */ + .long retstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */ +1: + pop %esi + add (%esi, %ecx, 4), %esi + jmp *%esi + + /* Sign/zero extend as appropriate. */ +retsint8: + movsbl %al, %eax + jmp retint + +retsint16: + movswl %ax, %eax + jmp retint + +retuint8: + movzbl %al, %eax + jmp retint + +retuint16: + movzwl %ax, %eax + jmp retint retfloat: - cmpl $FFI_TYPE_FLOAT,%ecx - jne retdouble /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx + movl 24(%ebp),%ecx fstps (%ecx) jmp epilogue retdouble: - cmpl $FFI_TYPE_DOUBLE,%ecx - jne retlongdouble /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx + movl 24(%ebp),%ecx fstpl (%ecx) jmp epilogue retlongdouble: - cmpl $FFI_TYPE_LONGDOUBLE,%ecx - jne retint64 /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx + movl 24(%ebp),%ecx fstpt (%ecx) jmp epilogue - -retint64: - cmpl $FFI_TYPE_SINT64,%ecx - jne retstruct1b + +retint64: /* Load %ecx with the pointer to storage for the return value */ - movl 24(%ebp),%ecx + movl 24(%ebp),%ecx movl %eax,0(%ecx) movl %edx,4(%ecx) jmp epilogue retstruct1b: - cmpl $FFI_TYPE_SINT8,%ecx - jne retstruct2b - movl 24(%ebp),%ecx - movb %al,0(%ecx) - jmp epilogue + /* Load %ecx with the pointer to storage for the return value */ + movl 24(%ebp),%ecx + movb %al,0(%ecx) + jmp epilogue retstruct2b: - cmpl $FFI_TYPE_SINT16,%ecx - jne retstruct - movl 24(%ebp),%ecx - movw %ax,0(%ecx) - jmp epilogue - -retstruct: - cmpl $FFI_TYPE_STRUCT,%ecx - jne noretval - /* Nothing to do! */ - - subl $4,%esp + /* Load %ecx with the pointer to storage for the return value */ + movl 24(%ebp),%ecx + movw %ax,0(%ecx) + jmp epilogue - ASSERT_STACK_ALIGNED +retint: + /* Load %ecx with the pointer to storage for the return value */ + movl 24(%ebp),%ecx + movl %eax,0(%ecx) - addl $8,%esp - movl %ebp, %esp - popl %ebp - ret +retstruct: + /* Nothing to do! */ noretval: epilogue: - ASSERT_STACK_ALIGNED - addl $8, %esp - + popl %esi + movl %ebp,%esp + popl %ebp + ret - movl %ebp,%esp - popl %ebp - ret .LFE1: .ffi_call_SYSV_end: -#if 0 - .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV -#endif -#if 0 - .section .eh_frame,EH_FRAME_FLAGS, at progbits -.Lframe1: - .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */ -.LSCIE1: - .long 0x0 /* CIE Identifier Tag */ - .byte 0x1 /* CIE Version */ -#ifdef __PIC__ - .ascii "zR\0" /* CIE Augmentation */ -#else - .ascii "\0" /* CIE Augmentation */ -#endif - .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ - .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ - .byte 0x8 /* CIE RA Column */ -#ifdef __PIC__ - .byte 0x1 /* .uleb128 0x1; Augmentation size */ - .byte 0x1b /* FDE Encoding (pcrel sdata4) */ -#endif - .byte 0xc /* DW_CFA_def_cfa */ - .byte 0x4 /* .uleb128 0x4 */ - .byte 0x4 /* .uleb128 0x4 */ - .byte 0x88 /* DW_CFA_offset, column 0x8 */ - .byte 0x1 /* .uleb128 0x1 */ - .align 4 -.LECIE1: -.LSFDE1: - .long .LEFDE1-.LASFDE1 /* FDE Length */ -.LASFDE1: - .long .LASFDE1-.Lframe1 /* FDE CIE offset */ -#ifdef __PIC__ - .long .LFB1-. /* FDE initial location */ -#else - .long .LFB1 /* FDE initial location */ -#endif - .long .LFE1-.LFB1 /* FDE address range */ -#ifdef __PIC__ - .byte 0x0 /* .uleb128 0x0; Augmentation size */ + .align 4 +FFI_HIDDEN (ffi_closure_SYSV) +.globl _ffi_closure_SYSV + +_ffi_closure_SYSV: +.LFB2: + pushl %ebp +.LCFI2: + movl %esp, %ebp +.LCFI3: + subl $40, %esp + leal -24(%ebp), %edx + movl %edx, -12(%ebp) /* resp */ + leal 8(%ebp), %edx + movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ + leal -12(%ebp), %edx + movl %edx, (%esp) /* &resp */ + movl %ebx, 8(%esp) +.LCFI7: + call L_ffi_closure_SYSV_inner$stub + movl 8(%esp), %ebx + movl -12(%ebp), %ecx + cmpl $FFI_TYPE_INT, %eax + je .Lcls_retint + + /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, + FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ + cmpl $FFI_TYPE_UINT64, %eax + jge 0f + cmpl $FFI_TYPE_UINT8, %eax + jge .Lcls_retint + +0: cmpl $FFI_TYPE_FLOAT, %eax + je .Lcls_retfloat + cmpl $FFI_TYPE_DOUBLE, %eax + je .Lcls_retdouble + cmpl $FFI_TYPE_LONGDOUBLE, %eax + je .Lcls_retldouble + cmpl $FFI_TYPE_SINT64, %eax + je .Lcls_retllong + cmpl $FFI_TYPE_SMALL_STRUCT_1B, %eax + je .Lcls_retstruct1b + cmpl $FFI_TYPE_SMALL_STRUCT_2B, %eax + je .Lcls_retstruct2b + cmpl $FFI_TYPE_STRUCT, %eax + je .Lcls_retstruct +.Lcls_epilogue: + movl %ebp, %esp + popl %ebp + ret +.Lcls_retint: + movl (%ecx), %eax + jmp .Lcls_epilogue +.Lcls_retfloat: + flds (%ecx) + jmp .Lcls_epilogue +.Lcls_retdouble: + fldl (%ecx) + jmp .Lcls_epilogue +.Lcls_retldouble: + fldt (%ecx) + jmp .Lcls_epilogue +.Lcls_retllong: + movl (%ecx), %eax + movl 4(%ecx), %edx + jmp .Lcls_epilogue +.Lcls_retstruct1b: + movsbl (%ecx), %eax + jmp .Lcls_epilogue +.Lcls_retstruct2b: + movswl (%ecx), %eax + jmp .Lcls_epilogue +.Lcls_retstruct: + lea -8(%ebp),%esp + movl %ebp, %esp + popl %ebp + ret $4 +.LFE2: + +#if !FFI_NO_RAW_API + +#define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) +#define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) +#define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) +#define CIF_FLAGS_OFFSET 20 + + .align 4 +FFI_HIDDEN (ffi_closure_raw_SYSV) +.globl _ffi_closure_raw_SYSV + +_ffi_closure_raw_SYSV: +.LFB3: + pushl %ebp +.LCFI4: + movl %esp, %ebp +.LCFI5: + pushl %esi +.LCFI6: + subl $36, %esp + movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ + movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ + movl %edx, 12(%esp) /* user_data */ + leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ + movl %edx, 8(%esp) /* raw_args */ + leal -24(%ebp), %edx + movl %edx, 4(%esp) /* &res */ + movl %esi, (%esp) /* cif */ + call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ + movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ + cmpl $FFI_TYPE_INT, %eax + je .Lrcls_retint + + /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, + FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ + cmpl $FFI_TYPE_UINT64, %eax + jge 0f + cmpl $FFI_TYPE_UINT8, %eax + jge .Lrcls_retint +0: + cmpl $FFI_TYPE_FLOAT, %eax + je .Lrcls_retfloat + cmpl $FFI_TYPE_DOUBLE, %eax + je .Lrcls_retdouble + cmpl $FFI_TYPE_LONGDOUBLE, %eax + je .Lrcls_retldouble + cmpl $FFI_TYPE_SINT64, %eax + je .Lrcls_retllong +.Lrcls_epilogue: + addl $36, %esp + popl %esi + popl %ebp + ret +.Lrcls_retint: + movl -24(%ebp), %eax + jmp .Lrcls_epilogue +.Lrcls_retfloat: + flds -24(%ebp) + jmp .Lrcls_epilogue +.Lrcls_retdouble: + fldl -24(%ebp) + jmp .Lrcls_epilogue +.Lrcls_retldouble: + fldt -24(%ebp) + jmp .Lrcls_epilogue +.Lrcls_retllong: + movl -24(%ebp), %eax + movl -20(%ebp), %edx + jmp .Lrcls_epilogue +.LFE3: #endif - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI0-.LFB1 - .byte 0xe /* DW_CFA_def_cfa_offset */ - .byte 0x8 /* .uleb128 0x8 */ - .byte 0x85 /* DW_CFA_offset, column 0x5 */ - .byte 0x2 /* .uleb128 0x2 */ - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI1-.LCFI0 - .byte 0xd /* DW_CFA_def_cfa_register */ - .byte 0x5 /* .uleb128 0x5 */ - .align 4 -.LEFDE1: + +.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 +L_ffi_closure_SYSV_inner$stub: + .indirect_symbol _ffi_closure_SYSV_inner + hlt ; hlt ; hlt ; hlt ; hlt + + +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$0,LECIE1-LSCIE1 + .long L$set$0 +LSCIE1: + .long 0x0 + .byte 0x1 + .ascii "zR\0" + .byte 0x1 + .byte 0x7c + .byte 0x8 + .byte 0x1 + .byte 0x10 + .byte 0xc + .byte 0x5 + .byte 0x4 + .byte 0x88 + .byte 0x1 + .align 2 +LECIE1: +.globl _ffi_call_SYSV.eh +_ffi_call_SYSV.eh: +LSFDE1: + .set L$set$1,LEFDE1-LASFDE1 + .long L$set$1 +LASFDE1: + .long LASFDE1-EH_frame1 + .long .LFB1-. + .set L$set$2,.LFE1-.LFB1 + .long L$set$2 + .byte 0x0 + .byte 0x4 + .set L$set$3,.LCFI0-.LFB1 + .long L$set$3 + .byte 0xe + .byte 0x8 + .byte 0x84 + .byte 0x2 + .byte 0x4 + .set L$set$4,.LCFI1-.LCFI0 + .long L$set$4 + .byte 0xd + .byte 0x4 + .align 2 +LEFDE1: +.globl _ffi_closure_SYSV.eh +_ffi_closure_SYSV.eh: +LSFDE2: + .set L$set$5,LEFDE2-LASFDE2 + .long L$set$5 +LASFDE2: + .long LASFDE2-EH_frame1 + .long .LFB2-. + .set L$set$6,.LFE2-.LFB2 + .long L$set$6 + .byte 0x0 + .byte 0x4 + .set L$set$7,.LCFI2-.LFB2 + .long L$set$7 + .byte 0xe + .byte 0x8 + .byte 0x84 + .byte 0x2 + .byte 0x4 + .set L$set$8,.LCFI3-.LCFI2 + .long L$set$8 + .byte 0xd + .byte 0x4 + .align 2 +LEFDE2: + +#if !FFI_NO_RAW_API + +.globl _ffi_closure_raw_SYSV.eh +_ffi_closure_raw_SYSV.eh: +LSFDE3: + .set L$set$10,LEFDE3-LASFDE3 + .long L$set$10 +LASFDE3: + .long LASFDE3-EH_frame1 + .long .LFB3-. + .set L$set$11,.LFE3-.LFB3 + .long L$set$11 + .byte 0x0 + .byte 0x4 + .set L$set$12,.LCFI4-.LFB3 + .long L$set$12 + .byte 0xe + .byte 0x8 + .byte 0x84 + .byte 0x2 + .byte 0x4 + .set L$set$13,.LCFI5-.LCFI4 + .long L$set$13 + .byte 0xd + .byte 0x4 + .byte 0x4 + .set L$set$14,.LCFI6-.LCFI5 + .long L$set$14 + .byte 0x85 + .byte 0x3 + .align 2 +LEFDE3: + #endif #endif /* ifndef __x86_64__ */ From nnorwitz at gmail.com Fri Feb 22 17:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 11:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222162003.GA3852@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Fri Feb 22 17:30:22 2008 From: python-checkins at python.org (eric.smith) Date: Fri, 22 Feb 2008 17:30:22 +0100 (CET) Subject: [Python-checkins] r60962 - python/trunk/Python/bltinmodule.c Message-ID: <20080222163022.D689A1E4018@bag.python.org> Author: eric.smith Date: Fri Feb 22 17:30:22 2008 New Revision: 60962 Modified: python/trunk/Python/bltinmodule.c Log: Added bin() builtin. I'm going to check in the tests in a seperate checkin, because the builtin doesn't need to be ported to py3k, but the tests are missing in py3k and need to be merged there. Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Fri Feb 22 17:30:22 2008 @@ -209,6 +209,18 @@ static PyObject * +builtin_bin(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 2); +} + +PyDoc_STRVAR(bin_doc, +"bin(number) -> string\n\ +\n\ +Return the binary representation of an integer or long integer."); + + +static PyObject * builtin_callable(PyObject *self, PyObject *v) { if (Py_Py3kWarningFlag && @@ -2366,6 +2378,7 @@ {"all", builtin_all, METH_O, all_doc}, {"any", builtin_any, METH_O, any_doc}, {"apply", builtin_apply, METH_VARARGS, apply_doc}, + {"bin", builtin_bin, METH_O, bin_doc}, {"callable", builtin_callable, METH_O, callable_doc}, {"chr", builtin_chr, METH_VARARGS, chr_doc}, {"cmp", builtin_cmp, METH_VARARGS, cmp_doc}, From nnorwitz at gmail.com Fri Feb 22 18:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 12:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222172003.GA27071@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From python-checkins at python.org Fri Feb 22 18:43:18 2008 From: python-checkins at python.org (eric.smith) Date: Fri, 22 Feb 2008 18:43:18 +0100 (CET) Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py Message-ID: <20080222174318.256CE1E401A@bag.python.org> Author: eric.smith Date: Fri Feb 22 18:43:17 2008 New Revision: 60965 Modified: python/trunk/Lib/test/test_builtin.py Log: Tests for bin() builtin. These need to get merged into py3k, which has no tests for bin. Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Feb 22 18:43:17 2008 @@ -2068,6 +2068,15 @@ class DerivedFromStr(str): pass self.assertEqual(format(0, DerivedFromStr('10')), ' 0') + def test_bin(self): + self.assertEqual(bin(0), '0b0') + self.assertEqual(bin(1), '0b1') + self.assertEqual(bin(-1), '-0b1') + self.assertEqual(bin(2**65), '0b1' + '0' * 65) + self.assertEqual(bin(2**65-1), '0b' + '1' * 65) + self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65) + self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 65) + class TestSorted(unittest.TestCase): def test_basic(self): From nnorwitz at gmail.com Fri Feb 22 19:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 13:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222182003.GA28173@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Fri Feb 22 19:07:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 18:07:39 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080222180740.290B21E4026@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/625 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_smtplib ====================================================================== ERROR: testBasic (test.test_smtplib.SMTPSimTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_smtplib.py", line 374, in testBasic smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 237, in __init__ (code, msg) = self.connect(host, port) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 294, in connect (code, msg) = self.getreply() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 335, in getreply line = self.file.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) timeout: timed out ====================================================================== ERROR: testVRFY (test.test_smtplib.SMTPSimTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_smtplib.py", line 399, in testVRFY smtp = smtplib.SMTP(HOST, PORT, local_hostname='localhost', timeout=3) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 237, in __init__ (code, msg) = self.connect(host, port) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 294, in connect (code, msg) = self.getreply() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/smtplib.py", line 335, in getreply line = self.file.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) timeout: timed out sincerely, -The Buildbot From lists at cheimes.de Fri Feb 22 19:24:03 2008 From: lists at cheimes.de (Christian Heimes) Date: Fri, 22 Feb 2008 19:24:03 +0100 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: <20080222174318.256CE1E401A@bag.python.org> References: <20080222174318.256CE1E401A@bag.python.org> Message-ID: <47BF1343.3060405@cheimes.de> eric.smith wrote: > Author: eric.smith > Date: Fri Feb 22 18:43:17 2008 > New Revision: 60965 > > Modified: > python/trunk/Lib/test/test_builtin.py > Log: > Tests for bin() builtin. These need to get merged into py3k, which has no tests for bin. I'm going to merge it tomorrow. I usually do one merge per day unless either no work was done or a lot has happened. I also want to thank you for blocking revisions. It sure makes the merging easier for me and speeds things up a lot! :) Good work! Christian From buildbot at python.org Fri Feb 22 19:26:08 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 18:26:08 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080222182608.B46F41E4026@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2887 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Feb 22 19:39:08 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 19:39:08 +0100 (CET) Subject: [Python-checkins] r60966 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Message-ID: <20080222183908.697BF1E4018@bag.python.org> Author: thomas.heller Date: Fri Feb 22 19:39:08 2008 New Revision: 60966 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Log: Other changes from libffi 3.0.2. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Fri Feb 22 19:39:08 2008 @@ -121,7 +121,7 @@ switch (cif->rtype->type) { case FFI_TYPE_VOID: -#if !defined(X86_WIN32) && !defined(__OpenBSD__) && !defined(__FreeBSD__) +#ifdef X86 case FFI_TYPE_STRUCT: #endif #if defined(X86) || defined(X86_DARWIN) @@ -142,7 +142,7 @@ cif->flags = FFI_TYPE_SINT64; break; -#if defined(X86_WIN32) || defined(__OpenBSD__) || defined(__FreeBSD__) +#ifndef X86 case FFI_TYPE_STRUCT: if (cif->rtype->size == 1) { From nnorwitz at gmail.com Fri Feb 22 20:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 14:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222192003.GA28355@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From buildbot at python.org Fri Feb 22 19:55:05 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 22 Feb 2008 18:55:05 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080222185505.C6FEA1E4021@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2574 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_shelve test_smtplib test_socket ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From python-checkins at python.org Fri Feb 22 20:30:41 2008 From: python-checkins at python.org (thomas.heller) Date: Fri, 22 Feb 2008 20:30:41 +0100 (CET) Subject: [Python-checkins] r60967 - python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Message-ID: <20080222193041.633081E401D@bag.python.org> Author: thomas.heller Date: Fri Feb 22 20:30:41 2008 New Revision: 60967 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Log: Revert rev 60966, it does not work on OpenBSD and FreeBSD. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Fri Feb 22 20:30:41 2008 @@ -121,7 +121,7 @@ switch (cif->rtype->type) { case FFI_TYPE_VOID: -#ifdef X86 +#if !defined(X86_WIN32) && !defined(__OpenBSD__) && !defined(__FreeBSD__) case FFI_TYPE_STRUCT: #endif #if defined(X86) || defined(X86_DARWIN) @@ -142,7 +142,7 @@ cif->flags = FFI_TYPE_SINT64; break; -#ifndef X86 +#if defined(X86_WIN32) || defined(__OpenBSD__) || defined(__FreeBSD__) case FFI_TYPE_STRUCT: if (cif->rtype->size == 1) { From python-checkins at python.org Fri Feb 22 20:50:06 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 22 Feb 2008 20:50:06 +0100 (CET) Subject: [Python-checkins] r60968 - in python/trunk: Doc/library/itertools.rst Misc/NEWS Message-ID: <20080222195006.CB55E1E4018@bag.python.org> Author: raymond.hettinger Date: Fri Feb 22 20:50:06 2008 New Revision: 60968 Modified: python/trunk/Doc/library/itertools.rst python/trunk/Misc/NEWS Log: Document itertools.product(). Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Fri Feb 22 20:50:06 2008 @@ -302,6 +302,29 @@ .. versionadded:: 2.6 +.. function:: product(*iterables) + + Cartesian product of input iterables. + + Equivalent to nested for-loops in a generator expression. For example, + ``product(A, B)`` returns the same as ``((x,y) for x in A for y in B)``. + + The leftmost iterators are in the outermost for-loop, so the output tuples + cycle in a manner similar to an odometer (with the rightmost element + changing on every iteration). + + Equivalent to (but without building the entire result in memory):: + + def product(*args): + pools = map(tuple, args) + if pools: + result = [[]] + for pool in pools: + result = [x+[y] for x in result for y in pool] + for prod in result: + yield tuple(prod) + + .. versionadded:: 2.6 .. function:: repeat(object[, times]) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 22 20:50:06 2008 @@ -635,6 +635,9 @@ - itertools.count() is no longer bounded to LONG_MAX. Formerly, it raised an OverflowError. Now, automatically shifts from ints to longs. +- Added itertools.product() which forms the Cartesian product of + the input iterables. + - Patch #1541463: optimize performance of cgi.FieldStorage operations. - Decimal is fully updated to the latest Decimal Specification (v1.66). From nnorwitz at gmail.com Fri Feb 22 21:20:02 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 15:20:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222202002.GA28655@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From nnorwitz at gmail.com Fri Feb 22 22:20:06 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 16:20:06 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222212006.GA10444@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From brett at python.org Fri Feb 22 22:47:18 2008 From: brett at python.org (Brett Cannon) Date: Fri, 22 Feb 2008 13:47:18 -0800 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: <47BF1343.3060405@cheimes.de> References: <20080222174318.256CE1E401A@bag.python.org> <47BF1343.3060405@cheimes.de> Message-ID: On Fri, Feb 22, 2008 at 10:24 AM, Christian Heimes wrote: > eric.smith wrote: > > Author: eric.smith > > Date: Fri Feb 22 18:43:17 2008 > > New Revision: 60965 > > > > Modified: > > python/trunk/Lib/test/test_builtin.py > > Log: > > Tests for bin() builtin. These need to get merged into py3k, which has no tests for bin. > > I'm going to merge it tomorrow. I usually do one merge per day unless > either no work was done or a lot has happened. I also want to thank you > for blocking revisions. It sure makes the merging easier for me and > speeds things up a lot! :) > > Good work! Just so Christian doesn't yell at me, I tried to block the change I made for test_logging as that will require a lot of manual tweaking, but svnmerge.py said I couldn't. I suspect it has to do with the fact I didn't try to block immediately and other blocks had subsequently already been set. I will see if I can do the review of the alternative test_logging implementation using unittest tonight and get that in as that might be easier to convert over using 2to3. I assume you really only want stuff blocked that 2to3 might choke on or should just not be backported, right? -Brett From nnorwitz at gmail.com Fri Feb 22 23:20:03 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Feb 2008 17:20:03 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080222222003.GA24664@python.psfb.org> Conflict detected in commontex/boilerplate.tex. Doc build skipped. From guido at python.org Fri Feb 22 23:03:58 2008 From: guido at python.org (Guido van Rossum) Date: Fri, 22 Feb 2008 14:03:58 -0800 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: References: <20080222174318.256CE1E401A@bag.python.org> <47BF1343.3060405@cheimes.de> Message-ID: On Fri, Feb 22, 2008 at 1:47 PM, Brett Cannon wrote: > Just so Christian doesn't yell at me, I tried to block the change I > made for test_logging as that will require a lot of manual tweaking, > but svnmerge.py said I couldn't. I suspect it has to do with the fact > I didn't try to block immediately and other blocks had subsequently > already been set. That sounds odd. AFAIK blocks are just cumulative. Are you sure you did the blocking on the py3k branch? > I will see if I can do the review of the alternative test_logging > implementation using unittest tonight and get that in as that might be > easier to convert over using 2to3. > > I assume you really only want stuff blocked that 2to3 might choke on > or should just not be backported, right? It works the other way around. Normally when you make a change to the trunk it will be merged into the py3k branch. Sometimes you don't want this to happen, e.g. when it's a 2.6-only feature, or when it's a backport to 2.6 of code that's already in 3.0. Then you block that rev (which modified the trunk) in the py3k branch. -- --Guido van Rossum (home page: http://www.python.org/~guido/) From brett at python.org Sat Feb 23 00:10:36 2008 From: brett at python.org (Brett Cannon) Date: Fri, 22 Feb 2008 15:10:36 -0800 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: References: <20080222174318.256CE1E401A@bag.python.org> <47BF1343.3060405@cheimes.de> Message-ID: On Fri, Feb 22, 2008 at 2:03 PM, Guido van Rossum wrote: > On Fri, Feb 22, 2008 at 1:47 PM, Brett Cannon wrote: > > Just so Christian doesn't yell at me, I tried to block the change I > > made for test_logging as that will require a lot of manual tweaking, > > but svnmerge.py said I couldn't. I suspect it has to do with the fact > > I didn't try to block immediately and other blocks had subsequently > > already been set. > > That sounds odd. AFAIK blocks are just cumulative. Are you sure you > did the blocking on the py3k branch? Yep (according to ``svn info``): URL: svn+ssh://pythondev at svn.python.org/python/branches/py3k And here is what happens (using svnmerge.py straight out of Subversion's repository): > svnmerge block -r 60872 . svnmerge: no available revisions to block So I have no clue what is going on. > > > > I will see if I can do the review of the alternative test_logging > > implementation using unittest tonight and get that in as that might be > > easier to convert over using 2to3. > > > > I assume you really only want stuff blocked that 2to3 might choke on > > or should just not be backported, right? > > It works the other way around. Normally when you make a change to the > trunk it will be merged into the py3k branch. Sometimes you don't want > this to happen, e.g. when it's a 2.6-only feature, or when it's a > backport to 2.6 of code that's already in 3.0. Then you block that rev > (which modified the trunk) in the py3k branch. > OK. Then I won't worry about blocking anything that might take some work to forward-port to 3.0. Worst case is Christian does the merge and just says what needs work to be forward-ported so that he isn't the only one dealing with it. -Brett From guido at python.org Sat Feb 23 00:24:02 2008 From: guido at python.org (Guido van Rossum) Date: Fri, 22 Feb 2008 15:24:02 -0800 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: References: <20080222174318.256CE1E401A@bag.python.org> <47BF1343.3060405@cheimes.de> Message-ID: On Fri, Feb 22, 2008 at 3:10 PM, Brett Cannon wrote: > On Fri, Feb 22, 2008 at 2:03 PM, Guido van Rossum wrote: > > On Fri, Feb 22, 2008 at 1:47 PM, Brett Cannon wrote: > > > Just so Christian doesn't yell at me, I tried to block the change I > > > made for test_logging as that will require a lot of manual tweaking, > > > but svnmerge.py said I couldn't. I suspect it has to do with the fact > > > I didn't try to block immediately and other blocks had subsequently > > > already been set. > > > > That sounds odd. AFAIK blocks are just cumulative. Are you sure you > > did the blocking on the py3k branch? > > Yep (according to ``svn info``): > > URL: svn+ssh://pythondev at svn.python.org/python/branches/py3k > > > And here is what happens (using svnmerge.py straight out of > Subversion's repository): > > > svnmerge block -r 60872 . > svnmerge: no available revisions to block > > > So I have no clue what is going on. That rev was already integrated. Look: $ svn propget svnmerge-blocked . /python/trunk:60480,60521-60522,60528-60529,60534,60539,60599,60707,60713,60879,60893,60899,60932,60962 $ svn propget svnmerge-integrated . /python/trunk:1-60479,60481-60520,60523-60527,60530-60533,60535-60538,60540-60598,60600-60706,60708-60712, 60714-60878,60880-60892,60894-60898,60900-60931,60933-60958 $ -- --Guido van Rossum (home page: http://www.python.org/~guido/) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-checkins/attachments/20080222/9b6e3b23/attachment-0001.htm From brett at python.org Sat Feb 23 00:30:49 2008 From: brett at python.org (Brett Cannon) Date: Fri, 22 Feb 2008 15:30:49 -0800 Subject: [Python-checkins] r60965 - python/trunk/Lib/test/test_builtin.py In-Reply-To: References: <20080222174318.256CE1E401A@bag.python.org> <47BF1343.3060405@cheimes.de> Message-ID: On Fri, Feb 22, 2008 at 3:24 PM, Guido van Rossum wrote: > On Fri, Feb 22, 2008 at 3:10 PM, Brett Cannon wrote: > > On Fri, Feb 22, 2008 at 2:03 PM, Guido van Rossum > wrote: > > > On Fri, Feb 22, 2008 at 1:47 PM, Brett Cannon > wrote: > > > > Just so Christian doesn't yell at me, I tried to block the change I > > > > made for test_logging as that will require a lot of manual > tweaking, > > > > but svnmerge.py said I couldn't. I suspect it has to do with the > fact > > > > I didn't try to block immediately and other blocks had subsequently > > > > already been set. > > > > > > That sounds odd. AFAIK blocks are just cumulative. Are you sure you > > > did the blocking on the py3k branch? > > > > Yep (according to ``svn info``): > > > > URL: svn+ssh://pythondev at svn.python.org/python/branches/py3k > > > > > > And here is what happens (using svnmerge.py straight out of > > Subversion's repository): > > > > > svnmerge block -r 60872 . > > svnmerge: no available revisions to block > > > > > > So I have no clue what is going on. > > That rev was already integrated. Look: > > $ svn propget svnmerge-blocked . > /python/trunk:60480,60521-60522,60528-60529,60534,60539,60599,60707,60713,60879,60893,60899,60932,60962 > $ svn propget svnmerge-integrated . > /python/trunk:1-60479,60481-60520,60523-60527,60530-60533,60535-60538,60540-60598,60600-60706,60708-60712,60714-60878,60880-60892,60894-60898,60900-60931,60933-60958 > $ Ah, that would explain it. =) I was trying to keep an eye on merges; must have missed that one. -Brett From python-checkins at python.org Sat Feb 23 03:20:41 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 23 Feb 2008 03:20:41 +0100 (CET) Subject: [Python-checkins] r60969 - in python/trunk: Lib/test/test_itertools.py Modules/itertoolsmodule.c Message-ID: <20080223022041.D52E11E4019@bag.python.org> Author: raymond.hettinger Date: Sat Feb 23 03:20:41 2008 New Revision: 60969 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Modules/itertoolsmodule.c Log: Improve the implementation of itertools.product() * Fix-up issues pointed-out by Neal Norwitz. * Add extensive comments. * The lz->result variable is now a tuple instead of a list. * Use fast macro getitem/setitem calls so most code is in-line. * Re-use the result tuple if available (modify in-place instead of copy). Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Sat Feb 23 03:20:41 2008 @@ -274,6 +274,9 @@ args = map(iter, args) self.assertEqual(len(list(product(*args))), n) + # Test implementation detail: tuple re-use + self.assertEqual(len(set(map(id, product('abc', 'def')))), 1) + self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1) def test_repeat(self): self.assertEqual(zip(xrange(3),repeat('a')), Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Sat Feb 23 03:20:41 2008 @@ -1796,7 +1796,7 @@ lz = (productobject *)type->tp_alloc(type, 0); if (lz == NULL) { Py_DECREF(pools); - return NULL; + goto error; } lz->pools = pools; @@ -1840,7 +1840,7 @@ { PyObject *pool; PyObject *elem; - PyObject *tuple_result; + PyObject *oldelem; PyObject *pools = lz->pools; PyObject *result = lz->result; Py_ssize_t npools = PyTuple_GET_SIZE(pools); @@ -1848,10 +1848,14 @@ if (lz->stopped) return NULL; + if (result == NULL) { + /* On the first pass, return an initial tuple filled with the + first element from each pool. If any pool is empty, then + whole product is empty and we're already done */ if (npools == 0) goto empty; - result = PyList_New(npools); + result = PyTuple_New(npools); if (result == NULL) goto empty; lz->result = result; @@ -1861,34 +1865,61 @@ goto empty; elem = PyTuple_GET_ITEM(pool, 0); Py_INCREF(elem); - PyList_SET_ITEM(result, i, elem); + PyTuple_SET_ITEM(result, i, elem); } } else { Py_ssize_t *indices = lz->indices; Py_ssize_t *maxvec = lz->maxvec; + + /* Copy the previous result tuple or re-use it if available */ + if (Py_REFCNT(result) > 1) { + PyObject *old_result = result; + result = PyTuple_New(npools); + if (result == NULL) + goto empty; + lz->result = result; + for (i=0; i < npools; i++) { + elem = PyTuple_GET_ITEM(old_result, i); + Py_INCREF(elem); + PyTuple_SET_ITEM(result, i, elem); + } + Py_DECREF(old_result); + } + /* Now, we've got the only copy so we can update it in-place */ + assert (Py_REFCNT(result) == 1); + + /* Update the pool indices right-to-left. Only advance to the + next pool when the previous one rolls-over */ for (i=npools-1 ; i >= 0 ; i--) { pool = PyTuple_GET_ITEM(pools, i); indices[i]++; if (indices[i] == maxvec[i]) { + /* Roll-over and advance to next pool */ indices[i] = 0; elem = PyTuple_GET_ITEM(pool, 0); Py_INCREF(elem); - PyList_SetItem(result, i, elem); + oldelem = PyTuple_GET_ITEM(result, i); + PyTuple_SET_ITEM(result, i, elem); + Py_DECREF(oldelem); } else { + /* No rollover. Just increment and stop here. */ elem = PyTuple_GET_ITEM(pool, indices[i]); Py_INCREF(elem); - PyList_SetItem(result, i, elem); + oldelem = PyTuple_GET_ITEM(result, i); + PyTuple_SET_ITEM(result, i, elem); + Py_DECREF(oldelem); break; } } + + /* If i is negative, then the indices have all rolled-over + and we're done. */ if (i < 0) - return NULL; + goto empty; } - tuple_result = PySequence_Tuple(result); - if (tuple_result == NULL) - lz->stopped = 1; - return tuple_result; + Py_INCREF(result); + return result; empty: lz->stopped = 1; @@ -1898,7 +1929,7 @@ PyDoc_STRVAR(product_doc, "product(*iterables) --> product object\n\ \n\ -Cartesian product of input interables. Equivalent to nested for-loops.\n\n\ +Cartesian product of input iterables. Equivalent to nested for-loops.\n\n\ For example, product(A, B) returns the same as: ((x,y) for x in A for y in B).\n\ The leftmost iterators are in the outermost for-loop, so the output tuples\n\ cycle in a manner similar to an odometer (with the rightmost element changing\n\ From python-checkins at python.org Sat Feb 23 04:09:44 2008 From: python-checkins at python.org (eric.smith) Date: Sat, 23 Feb 2008 04:09:44 +0100 (CET) Subject: [Python-checkins] r60970 - in python/trunk: Lib/test/test_future_builtins.py Misc/NEWS Modules/future_builtins.c PC/config.c PCbuild/pythoncore.vcproj setup.py Message-ID: <20080223030944.7C3B21E4002@bag.python.org> Author: eric.smith Date: Sat Feb 23 04:09:44 2008 New Revision: 60970 Added: python/trunk/Lib/test/test_future_builtins.py python/trunk/Modules/future_builtins.c Modified: python/trunk/Misc/NEWS python/trunk/PC/config.c python/trunk/PCbuild/pythoncore.vcproj python/trunk/setup.py Log: Added future_builtins, which contains PEP 3127 compatible versions of hex() and oct(). Added: python/trunk/Lib/test/test_future_builtins.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_future_builtins.py Sat Feb 23 04:09:44 2008 @@ -0,0 +1,27 @@ +import test.test_support, unittest + +# we're testing the behavior of these future builtins: +from future_builtins import hex, oct + +class BuiltinTest(unittest.TestCase): + def test_hex(self): + self.assertEqual(hex(0), '0x0') + self.assertEqual(hex(16), '0x10') + self.assertEqual(hex(16L), '0x10') + self.assertEqual(hex(-16), '-0x10') + self.assertEqual(hex(-16L), '-0x10') + self.assertRaises(TypeError, hex, {}) + + def test_oct(self): + self.assertEqual(oct(0), '0o0') + self.assertEqual(oct(100), '0o144') + self.assertEqual(oct(100L), '0o144') + self.assertEqual(oct(-100), '-0o144') + self.assertEqual(oct(-100L), '-0o144') + self.assertRaises(TypeError, oct, ()) + +def test_main(verbose=None): + test.test_support.run_unittest(BuiltinTest) + +if __name__ == "__main__": + test_main(verbose=True) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 04:09:44 2008 @@ -12,6 +12,14 @@ Core and builtins ----------------- +- Added the future_builtins module, which contains hex() and oct(). + These are the PEP 3127 version of these functions, designed to be + compatible with the hex() and oct() builtins from Python 3.0. They + differ slightly in their output formats from the existing, unchanged + Python 2.6 builtins. The expected usage of the future_builtins + module is: + from future_builtins import hex, oct + - Issue #1600: Modifed PyOS_ascii_formatd to use at most 2 digit exponents for exponents with absolute value < 100. Follows C99 standard. This is a change on Windows, which would use 3 digits. Added: python/trunk/Modules/future_builtins.c ============================================================================== --- (empty file) +++ python/trunk/Modules/future_builtins.c Sat Feb 23 04:09:44 2008 @@ -0,0 +1,69 @@ + +/* future_builtins module */ + +/* This module provides functions that will be builtins in Python 3.0, + but that conflict with builtins that already exist in Python + 2.x. */ + + +#include "Python.h" + +PyDoc_STRVAR(module_doc, +"This module provides functions that will be builtins in Python 3.0,\n\ +but that conflict with builtins that already exist in Python 2.x.\n\ +\n\ +Functions:\n\ +\n\ +hex(arg) -- Returns the hexidecimal representation of an integer\n\ +oct(arg) -- Returns the octal representation of an integer\n\ +\n\ +The typical usage of this module is to replace existing builtins in a\n\ +module's namespace:\n \n\ +from future_builtins import hex, oct\n"); + +static PyObject * +builtin_hex(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 16); +} + +PyDoc_STRVAR(hex_doc, +"hex(number) -> string\n\ +\n\ +Return the hexadecimal representation of an integer or long integer."); + + +static PyObject * +builtin_oct(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 8); +} + +PyDoc_STRVAR(oct_doc, +"oct(number) -> string\n\ +\n\ +Return the octal representation of an integer or long integer."); + + +/* List of functions exported by this module */ + +static PyMethodDef module_functions[] = { + {"hex", builtin_hex, METH_O, hex_doc}, + {"oct", builtin_oct, METH_O, oct_doc}, + {NULL, NULL} /* Sentinel */ +}; + + +/* Initialize this module. */ + +PyMODINIT_FUNC +initfuture_builtins(void) +{ + PyObject *m; + + m = Py_InitModule3("future_builtins", module_functions, module_doc); + if (m == NULL) + return; + + /* any other initialization needed */ +} Modified: python/trunk/PC/config.c ============================================================================== --- python/trunk/PC/config.c (original) +++ python/trunk/PC/config.c Sat Feb 23 04:09:44 2008 @@ -12,6 +12,7 @@ extern void initbinascii(void); extern void initcmath(void); extern void initerrno(void); +extern void initfuture_builtins(void); extern void initgc(void); #ifndef MS_WINI64 extern void initimageop(void); @@ -84,6 +85,7 @@ {"binascii", initbinascii}, {"cmath", initcmath}, {"errno", initerrno}, + {"future_builtins", initfuture_builtins}, {"gc", initgc}, #ifndef MS_WINI64 {"imageop", initimageop}, Modified: python/trunk/PCbuild/pythoncore.vcproj ============================================================================== --- python/trunk/PCbuild/pythoncore.vcproj (original) +++ python/trunk/PCbuild/pythoncore.vcproj Sat Feb 23 04:09:44 2008 @@ -1051,6 +1051,10 @@ > + + Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sat Feb 23 04:09:44 2008 @@ -417,6 +417,9 @@ libraries=math_libs) ) exts.append( Extension('datetime', ['datetimemodule.c', 'timemodule.c'], libraries=math_libs) ) + # code that will be builtins in the future, but conflict with the + # current builtins + exts.append( Extension('future_builtins', ['future_builtins.c']) ) # random number generator implemented in C exts.append( Extension("_random", ["_randommodule.c"]) ) # fast iterator tools implemented in C From python-checkins at python.org Sat Feb 23 05:03:51 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 23 Feb 2008 05:03:51 +0100 (CET) Subject: [Python-checkins] r60972 - python/trunk/Modules/itertoolsmodule.c Message-ID: <20080223040351.190E81E4011@bag.python.org> Author: raymond.hettinger Date: Sat Feb 23 05:03:50 2008 New Revision: 60972 Modified: python/trunk/Modules/itertoolsmodule.c Log: Add more comments Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Sat Feb 23 05:03:50 2008 @@ -1746,10 +1746,10 @@ typedef struct { PyObject_HEAD PyObject *pools; /* tuple of pool tuples */ - Py_ssize_t *maxvec; - Py_ssize_t *indices; - PyObject *result; - int stopped; + Py_ssize_t *maxvec; /* size of each pool */ + Py_ssize_t *indices; /* one index per pool */ + PyObject *result; /* most recently returned result tuple */ + int stopped; /* set to 1 when the product iterator is exhausted */ } productobject; static PyTypeObject product_type; From buildbot at python.org Sat Feb 23 06:08:44 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 05:08:44 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080223050844.81E791E4011@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2890 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 06:46:33 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 05:46:33 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080223054633.E43C21E4011@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/628 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 299, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_socket_ssl sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 07:48:03 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 06:48:03 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080223064803.9B1AE1E4011@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2577 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_shelve test_smtplib ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 11:04:16 2008 From: python-checkins at python.org (raymond.hettinger) Date: Sat, 23 Feb 2008 11:04:16 +0100 (CET) Subject: [Python-checkins] r60973 - python/trunk/Doc/library/itertools.rst Message-ID: <20080223100416.0F6F71E4011@bag.python.org> Author: raymond.hettinger Date: Sat Feb 23 11:04:15 2008 New Revision: 60973 Modified: python/trunk/Doc/library/itertools.rst Log: Add recipe using itertools.product(). Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Sat Feb 23 11:04:15 2008 @@ -559,3 +559,9 @@ pending -= 1 nexts = cycle(islice(nexts, pending)) + def powerset(iterable): + "powerset('ab') --> set([]), set(['b']), set(['a']), set(['a', 'b'])" + skip = object() + for t in product(*izip(repeat(skip), iterable)): + yield set(e for e in t if e is not skip) + From python-checkins at python.org Sat Feb 23 13:01:14 2008 From: python-checkins at python.org (facundo.batista) Date: Sat, 23 Feb 2008 13:01:14 +0100 (CET) Subject: [Python-checkins] r60974 - in python/trunk: Lib/test/test_parser.py Misc/NEWS Parser/parser.h Message-ID: <20080223120114.0CC9A1E4019@bag.python.org> Author: facundo.batista Date: Sat Feb 23 13:01:13 2008 New Revision: 60974 Modified: python/trunk/Lib/test/test_parser.py python/trunk/Misc/NEWS python/trunk/Parser/parser.h Log: Issue 1881. Increased the stack limit from 500 to 1500. Also added a test for this (and because of this test you'll see in stderr a message that parser.c sends before raising MemoryError). Thanks Ralf Schmitt. Modified: python/trunk/Lib/test/test_parser.py ============================================================================== --- python/trunk/Lib/test/test_parser.py (original) +++ python/trunk/Lib/test/test_parser.py Sat Feb 23 13:01:13 2008 @@ -480,11 +480,28 @@ st = parser.suite('a = u"\u1"') self.assertRaises(SyntaxError, parser.compilest, st) +class ParserStackLimitTestCase(unittest.TestCase): + """try to push the parser to/over it's limits. + see http://bugs.python.org/issue1881 for a discussion + """ + def _nested_expression(self, level): + return "["*level+"]"*level + + def test_deeply_nested_list(self): + e = self._nested_expression(99) + st = parser.expr(e) + st.compile() + + def test_trigger_memory_error(self): + e = self._nested_expression(100) + self.assertRaises(MemoryError, parser.expr, e) + def test_main(): test_support.run_unittest( RoundtripLegalSyntaxTestCase, IllegalSyntaxTestCase, CompileTestCase, + ParserStackLimitTestCase, ) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 13:01:13 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #1881: An internal parser limit has been increased. Also see + issue 215555 for a discussion. + - Added the future_builtins module, which contains hex() and oct(). These are the PEP 3127 version of these functions, designed to be compatible with the hex() and oct() builtins from Python 3.0. They Modified: python/trunk/Parser/parser.h ============================================================================== --- python/trunk/Parser/parser.h (original) +++ python/trunk/Parser/parser.h Sat Feb 23 13:01:13 2008 @@ -7,7 +7,7 @@ /* Parser interface */ -#define MAXSTACK 500 +#define MAXSTACK 1500 typedef struct { int s_state; /* State in current DFA */ From python-checkins at python.org Sat Feb 23 13:27:18 2008 From: python-checkins at python.org (facundo.batista) Date: Sat, 23 Feb 2008 13:27:18 +0100 (CET) Subject: [Python-checkins] r60975 - in python/trunk/Lib: smtplib.py test/test_smtplib.py Message-ID: <20080223122718.184D21E4019@bag.python.org> Author: facundo.batista Date: Sat Feb 23 13:27:17 2008 New Revision: 60975 Modified: python/trunk/Lib/smtplib.py python/trunk/Lib/test/test_smtplib.py Log: Issue 1776581. Minor corrections to smtplib, and two small tests. Thanks Alan McIntyre. Modified: python/trunk/Lib/smtplib.py ============================================================================== --- python/trunk/Lib/smtplib.py (original) +++ python/trunk/Lib/smtplib.py Sat Feb 23 13:27:17 2008 @@ -298,7 +298,7 @@ def send(self, str): """Send `str' to the server.""" if self.debuglevel > 0: print>>stderr, 'send:', repr(str) - if self.sock: + if hasattr(self, 'sock') and self.sock: try: self.sock.sendall(str) except socket.error: @@ -486,7 +486,7 @@ vrfy=verify def expn(self, address): - """SMTP 'verify' command -- checks for address validity.""" + """SMTP 'expn' command -- expands a mailing list.""" self.putcmd("expn", quoteaddr(address)) return self.getreply() Modified: python/trunk/Lib/test/test_smtplib.py ============================================================================== --- python/trunk/Lib/test/test_smtplib.py (original) +++ python/trunk/Lib/test/test_smtplib.py Sat Feb 23 13:27:17 2008 @@ -82,8 +82,9 @@ # to reference the nonexistent 'sock' attribute of the SMTP object # causes an AttributeError) smtp = smtplib.SMTP() - self.assertRaises(AttributeError, smtp.ehlo) - self.assertRaises(AttributeError, smtp.send, 'test msg') + self.assertRaises(smtplib.SMTPServerDisconnected, smtp.ehlo) + self.assertRaises(smtplib.SMTPServerDisconnected, + smtp.send, 'test msg') def testLocalHostName(self): # check that supplied local_hostname is used From buildbot at python.org Sat Feb 23 13:46:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 12:46:04 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080223124604.5AB2E1E4019@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/369 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_tarfile make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 13:46:11 2008 From: python-checkins at python.org (facundo.batista) Date: Sat, 23 Feb 2008 13:46:11 +0100 (CET) Subject: [Python-checkins] r60976 - in python/trunk: Doc/library/configparser.rst Lib/ConfigParser.py Lib/test/test_cfgparser.py Misc/NEWS Message-ID: <20080223124611.06FCD1E401A@bag.python.org> Author: facundo.batista Date: Sat Feb 23 13:46:10 2008 New Revision: 60976 Modified: python/trunk/Doc/library/configparser.rst python/trunk/Lib/ConfigParser.py python/trunk/Lib/test/test_cfgparser.py python/trunk/Misc/NEWS Log: Issue 1781. Now ConfigParser.add_section does not let you add a DEFAULT section any more, because it duplicated sections with the rest of the machinery. Thanks Tim Lesher and Manuel Kaufmann. Modified: python/trunk/Doc/library/configparser.rst ============================================================================== --- python/trunk/Doc/library/configparser.rst (original) +++ python/trunk/Doc/library/configparser.rst Sat Feb 23 13:46:10 2008 @@ -187,8 +187,9 @@ .. method:: RawConfigParser.add_section(section) Add a section named *section* to the instance. If a section by the given name - already exists, :exc:`DuplicateSectionError` is raised. - + already exists, :exc:`DuplicateSectionError` is raised. If the name + ``DEFAULT`` (or any of it's case-insensitive variants) is passed, + :exc:`ValueError` is raised. .. method:: RawConfigParser.has_section(section) Modified: python/trunk/Lib/ConfigParser.py ============================================================================== --- python/trunk/Lib/ConfigParser.py (original) +++ python/trunk/Lib/ConfigParser.py Sat Feb 23 13:46:10 2008 @@ -235,8 +235,12 @@ """Create a new section in the configuration. Raise DuplicateSectionError if a section by the specified name - already exists. + already exists. Raise ValueError if name is DEFAULT or any of it's + case-insensitive variants. """ + if section.lower() == "default": + raise ValueError, 'Invalid section name: %s' % section + if section in self._sections: raise DuplicateSectionError(section) self._sections[section] = self._dict() Modified: python/trunk/Lib/test/test_cfgparser.py ============================================================================== --- python/trunk/Lib/test/test_cfgparser.py (original) +++ python/trunk/Lib/test/test_cfgparser.py Sat Feb 23 13:46:10 2008 @@ -446,6 +446,14 @@ self.assertRaises(TypeError, cf.set, "sect", "option2", 1.0) self.assertRaises(TypeError, cf.set, "sect", "option2", object()) + def test_add_section_default_1(self): + cf = self.newconfig() + self.assertRaises(ValueError, cf.add_section, "default") + + def test_add_section_default_2(self): + cf = self.newconfig() + self.assertRaises(ValueError, cf.add_section, "DEFAULT") + class SortedTestCase(RawConfigParserTestCase): def newconfig(self, defaults=None): self.cf = self.config_class(defaults=defaults, dict_type=SortedDict) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 13:46:10 2008 @@ -434,6 +434,9 @@ Library ------- +- Issue 1781: ConfigParser now does not let you add the "default" section + (ignore-case) + - Removed uses of dict.has_key() from distutils, and uses of callable() from copy_reg.py, so the interpreter now starts up without warnings when '-3' is given. More work like this needs to From buildbot at python.org Sat Feb 23 15:13:00 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 14:13:00 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080223141300.7A43C1E4019@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/550 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 16:01:06 2008 From: python-checkins at python.org (christian.heimes) Date: Sat, 23 Feb 2008 16:01:06 +0100 (CET) Subject: [Python-checkins] r60978 - in python/trunk: Grammar/Grammar Include/Python-ast.h Include/graminit.h Lib/symbol.py Lib/test/test_ast.py Lib/test/test_decorators.py Lib/test/test_grammar.py Misc/NEWS Modules/parsermodule.c Parser/Python.asdl Python/Python-ast.c Python/ast.c Python/compile.c Python/graminit.c Python/symtable.c Message-ID: <20080223150106.E53771E4016@bag.python.org> Author: christian.heimes Date: Sat Feb 23 16:01:05 2008 New Revision: 60978 Modified: python/trunk/Grammar/Grammar python/trunk/Include/Python-ast.h python/trunk/Include/graminit.h python/trunk/Lib/symbol.py python/trunk/Lib/test/test_ast.py python/trunk/Lib/test/test_decorators.py python/trunk/Lib/test/test_grammar.py python/trunk/Misc/NEWS python/trunk/Modules/parsermodule.c python/trunk/Parser/Python.asdl python/trunk/Python/Python-ast.c python/trunk/Python/ast.c python/trunk/Python/compile.c python/trunk/Python/graminit.c python/trunk/Python/symtable.c Log: Patch #1759: Backport of PEP 3129 class decorators with some help from Georg Modified: python/trunk/Grammar/Grammar ============================================================================== --- python/trunk/Grammar/Grammar (original) +++ python/trunk/Grammar/Grammar Sat Feb 23 16:01:05 2008 @@ -33,7 +33,8 @@ decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ -funcdef: [decorators] 'def' NAME parameters ':' suite +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite parameters: '(' [varargslist] ')' varargslist: ((fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME) | @@ -73,7 +74,7 @@ exec_stmt: 'exec' expr ['in' test [',' test]] assert_stmt: 'assert' test [',' test] -compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] Modified: python/trunk/Include/Python-ast.h ============================================================================== --- python/trunk/Include/Python-ast.h (original) +++ python/trunk/Include/Python-ast.h Sat Feb 23 16:01:05 2008 @@ -73,13 +73,14 @@ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorators; + asdl_seq *decorator_list; } FunctionDef; struct { identifier name; asdl_seq *bases; asdl_seq *body; + asdl_seq *decorator_list; } ClassDef; struct { @@ -359,11 +360,12 @@ mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); #define FunctionDef(a0, a1, a2, a3, a4, a5, a6) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6) stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, - asdl_seq * decorators, int lineno, int col_offset, + asdl_seq * decorator_list, int lineno, int col_offset, PyArena *arena); -#define ClassDef(a0, a1, a2, a3, a4, a5) _Py_ClassDef(a0, a1, a2, a3, a4, a5) -stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int - lineno, int col_offset, PyArena *arena); +#define ClassDef(a0, a1, a2, a3, a4, a5, a6) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, + asdl_seq * decorator_list, int lineno, int col_offset, + PyArena *arena); #define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3) stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena); #define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3) Modified: python/trunk/Include/graminit.h ============================================================================== --- python/trunk/Include/graminit.h (original) +++ python/trunk/Include/graminit.h Sat Feb 23 16:01:05 2008 @@ -3,82 +3,83 @@ #define eval_input 258 #define decorator 259 #define decorators 260 -#define funcdef 261 -#define parameters 262 -#define varargslist 263 -#define fpdef 264 -#define fplist 265 -#define stmt 266 -#define simple_stmt 267 -#define small_stmt 268 -#define expr_stmt 269 -#define augassign 270 -#define print_stmt 271 -#define del_stmt 272 -#define pass_stmt 273 -#define flow_stmt 274 -#define break_stmt 275 -#define continue_stmt 276 -#define return_stmt 277 -#define yield_stmt 278 -#define raise_stmt 279 -#define import_stmt 280 -#define import_name 281 -#define import_from 282 -#define import_as_name 283 -#define dotted_as_name 284 -#define import_as_names 285 -#define dotted_as_names 286 -#define dotted_name 287 -#define global_stmt 288 -#define exec_stmt 289 -#define assert_stmt 290 -#define compound_stmt 291 -#define if_stmt 292 -#define while_stmt 293 -#define for_stmt 294 -#define try_stmt 295 -#define with_stmt 296 -#define with_var 297 -#define except_clause 298 -#define suite 299 -#define testlist_safe 300 -#define old_test 301 -#define old_lambdef 302 -#define test 303 -#define or_test 304 -#define and_test 305 -#define not_test 306 -#define comparison 307 -#define comp_op 308 -#define expr 309 -#define xor_expr 310 -#define and_expr 311 -#define shift_expr 312 -#define arith_expr 313 -#define term 314 -#define factor 315 -#define power 316 -#define atom 317 -#define listmaker 318 -#define testlist_gexp 319 -#define lambdef 320 -#define trailer 321 -#define subscriptlist 322 -#define subscript 323 -#define sliceop 324 -#define exprlist 325 -#define testlist 326 -#define dictmaker 327 -#define classdef 328 -#define arglist 329 -#define argument 330 -#define list_iter 331 -#define list_for 332 -#define list_if 333 -#define gen_iter 334 -#define gen_for 335 -#define gen_if 336 -#define testlist1 337 -#define encoding_decl 338 -#define yield_expr 339 +#define decorated 261 +#define funcdef 262 +#define parameters 263 +#define varargslist 264 +#define fpdef 265 +#define fplist 266 +#define stmt 267 +#define simple_stmt 268 +#define small_stmt 269 +#define expr_stmt 270 +#define augassign 271 +#define print_stmt 272 +#define del_stmt 273 +#define pass_stmt 274 +#define flow_stmt 275 +#define break_stmt 276 +#define continue_stmt 277 +#define return_stmt 278 +#define yield_stmt 279 +#define raise_stmt 280 +#define import_stmt 281 +#define import_name 282 +#define import_from 283 +#define import_as_name 284 +#define dotted_as_name 285 +#define import_as_names 286 +#define dotted_as_names 287 +#define dotted_name 288 +#define global_stmt 289 +#define exec_stmt 290 +#define assert_stmt 291 +#define compound_stmt 292 +#define if_stmt 293 +#define while_stmt 294 +#define for_stmt 295 +#define try_stmt 296 +#define with_stmt 297 +#define with_var 298 +#define except_clause 299 +#define suite 300 +#define testlist_safe 301 +#define old_test 302 +#define old_lambdef 303 +#define test 304 +#define or_test 305 +#define and_test 306 +#define not_test 307 +#define comparison 308 +#define comp_op 309 +#define expr 310 +#define xor_expr 311 +#define and_expr 312 +#define shift_expr 313 +#define arith_expr 314 +#define term 315 +#define factor 316 +#define power 317 +#define atom 318 +#define listmaker 319 +#define testlist_gexp 320 +#define lambdef 321 +#define trailer 322 +#define subscriptlist 323 +#define subscript 324 +#define sliceop 325 +#define exprlist 326 +#define testlist 327 +#define dictmaker 328 +#define classdef 329 +#define arglist 330 +#define argument 331 +#define list_iter 332 +#define list_for 333 +#define list_if 334 +#define gen_iter 335 +#define gen_for 336 +#define gen_if 337 +#define testlist1 338 +#define encoding_decl 339 +#define yield_expr 340 Modified: python/trunk/Lib/symbol.py ============================================================================== --- python/trunk/Lib/symbol.py (original) +++ python/trunk/Lib/symbol.py Sat Feb 23 16:01:05 2008 @@ -15,85 +15,86 @@ eval_input = 258 decorator = 259 decorators = 260 -funcdef = 261 -parameters = 262 -varargslist = 263 -fpdef = 264 -fplist = 265 -stmt = 266 -simple_stmt = 267 -small_stmt = 268 -expr_stmt = 269 -augassign = 270 -print_stmt = 271 -del_stmt = 272 -pass_stmt = 273 -flow_stmt = 274 -break_stmt = 275 -continue_stmt = 276 -return_stmt = 277 -yield_stmt = 278 -raise_stmt = 279 -import_stmt = 280 -import_name = 281 -import_from = 282 -import_as_name = 283 -dotted_as_name = 284 -import_as_names = 285 -dotted_as_names = 286 -dotted_name = 287 -global_stmt = 288 -exec_stmt = 289 -assert_stmt = 290 -compound_stmt = 291 -if_stmt = 292 -while_stmt = 293 -for_stmt = 294 -try_stmt = 295 -with_stmt = 296 -with_var = 297 -except_clause = 298 -suite = 299 -testlist_safe = 300 -old_test = 301 -old_lambdef = 302 -test = 303 -or_test = 304 -and_test = 305 -not_test = 306 -comparison = 307 -comp_op = 308 -expr = 309 -xor_expr = 310 -and_expr = 311 -shift_expr = 312 -arith_expr = 313 -term = 314 -factor = 315 -power = 316 -atom = 317 -listmaker = 318 -testlist_gexp = 319 -lambdef = 320 -trailer = 321 -subscriptlist = 322 -subscript = 323 -sliceop = 324 -exprlist = 325 -testlist = 326 -dictmaker = 327 -classdef = 328 -arglist = 329 -argument = 330 -list_iter = 331 -list_for = 332 -list_if = 333 -gen_iter = 334 -gen_for = 335 -gen_if = 336 -testlist1 = 337 -encoding_decl = 338 -yield_expr = 339 +decorated = 261 +funcdef = 262 +parameters = 263 +varargslist = 264 +fpdef = 265 +fplist = 266 +stmt = 267 +simple_stmt = 268 +small_stmt = 269 +expr_stmt = 270 +augassign = 271 +print_stmt = 272 +del_stmt = 273 +pass_stmt = 274 +flow_stmt = 275 +break_stmt = 276 +continue_stmt = 277 +return_stmt = 278 +yield_stmt = 279 +raise_stmt = 280 +import_stmt = 281 +import_name = 282 +import_from = 283 +import_as_name = 284 +dotted_as_name = 285 +import_as_names = 286 +dotted_as_names = 287 +dotted_name = 288 +global_stmt = 289 +exec_stmt = 290 +assert_stmt = 291 +compound_stmt = 292 +if_stmt = 293 +while_stmt = 294 +for_stmt = 295 +try_stmt = 296 +with_stmt = 297 +with_var = 298 +except_clause = 299 +suite = 300 +testlist_safe = 301 +old_test = 302 +old_lambdef = 303 +test = 304 +or_test = 305 +and_test = 306 +not_test = 307 +comparison = 308 +comp_op = 309 +expr = 310 +xor_expr = 311 +and_expr = 312 +shift_expr = 313 +arith_expr = 314 +term = 315 +factor = 316 +power = 317 +atom = 318 +listmaker = 319 +testlist_gexp = 320 +lambdef = 321 +trailer = 322 +subscriptlist = 323 +subscript = 324 +sliceop = 325 +exprlist = 326 +testlist = 327 +dictmaker = 328 +classdef = 329 +arglist = 330 +argument = 331 +list_iter = 332 +list_for = 333 +list_if = 334 +gen_iter = 335 +gen_for = 336 +gen_if = 337 +testlist1 = 338 +encoding_decl = 339 +yield_expr = 340 #--end constants-- sym_name = {} Modified: python/trunk/Lib/test/test_ast.py ============================================================================== --- python/trunk/Lib/test/test_ast.py (original) +++ python/trunk/Lib/test/test_ast.py Sat Feb 23 16:01:05 2008 @@ -156,7 +156,7 @@ #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), Modified: python/trunk/Lib/test/test_decorators.py ============================================================================== --- python/trunk/Lib/test/test_decorators.py (original) +++ python/trunk/Lib/test/test_decorators.py Sat Feb 23 16:01:05 2008 @@ -266,8 +266,44 @@ self.assertEqual(bar(), 42) self.assertEqual(actions, expected_actions) +class TestClassDecorators(unittest.TestCase): + + def test_simple(self): + def plain(x): + x.extra = 'Hello' + return x + @plain + class C(object): pass + self.assertEqual(C.extra, 'Hello') + + def test_double(self): + def ten(x): + x.extra = 10 + return x + def add_five(x): + x.extra += 5 + return x + + @add_five + @ten + class C(object): pass + self.assertEqual(C.extra, 15) + + def test_order(self): + def applied_first(x): + x.extra = 'first' + return x + def applied_second(x): + x.extra = 'second' + return x + @applied_second + @applied_first + class C(object): pass + self.assertEqual(C.extra, 'second') + def test_main(): test_support.run_unittest(TestDecorators) + test_support.run_unittest(TestClassDecorators) if __name__=="__main__": test_main() Modified: python/trunk/Lib/test/test_grammar.py ============================================================================== --- python/trunk/Lib/test/test_grammar.py (original) +++ python/trunk/Lib/test/test_grammar.py Sat Feb 23 16:01:05 2008 @@ -779,6 +779,16 @@ def meth1(self): pass def meth2(self, arg): pass def meth3(self, a1, a2): pass + # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE + # decorators: decorator+ + # decorated: decorators (classdef | funcdef) + def class_decorator(x): + x.decorated = True + return x + @class_decorator + class G: + pass + self.assertEqual(G.decorated, True) def testListcomps(self): # list comprehension tests Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 16:01:05 2008 @@ -12,6 +12,8 @@ Core and builtins ----------------- +- Patch #1759: Backport of PEP 3129 class decorators + - Issue #1881: An internal parser limit has been increased. Also see issue 215555 for a discussion. Modified: python/trunk/Modules/parsermodule.c ============================================================================== --- python/trunk/Modules/parsermodule.c (original) +++ python/trunk/Modules/parsermodule.c Sat Feb 23 16:01:05 2008 @@ -1498,7 +1498,7 @@ /* compound_stmt: - * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef + * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated */ static int validate_compound_stmt(node *tree) @@ -1517,7 +1517,8 @@ || (ntype == for_stmt) || (ntype == try_stmt) || (ntype == funcdef) - || (ntype == classdef)) + || (ntype == classdef) + || (ntype == decorated)) res = validate_node(tree); else { res = 0; @@ -1527,7 +1528,6 @@ return (res); } - static int validate_yield_or_testlist(node *tree) { @@ -2558,28 +2558,40 @@ /* funcdef: * - * -6 -5 -4 -3 -2 -1 - * [decorators] 'def' NAME parameters ':' suite + * -5 -4 -3 -2 -1 + * 'def' NAME parameters ':' suite */ static int validate_funcdef(node *tree) { int nch = NCH(tree); int ok = (validate_ntype(tree, funcdef) - && ((nch == 5) || (nch == 6)) + && (nch == 5) && validate_name(RCHILD(tree, -5), "def") && validate_ntype(RCHILD(tree, -4), NAME) && validate_colon(RCHILD(tree, -2)) && validate_parameters(RCHILD(tree, -3)) && validate_suite(RCHILD(tree, -1))); - - if (ok && (nch == 6)) - ok = validate_decorators(CHILD(tree, 0)); - return ok; } +/* decorated + * decorators (classdef | funcdef) + */ +static int +validate_decorated(node *tree) +{ + int nch = NCH(tree); + int ok = (validate_ntype(tree, decorated) + && (nch == 2) + && validate_decorators(RCHILD(tree, -2)) + && (validate_funcdef(RCHILD(tree, -1)) + || validate_class(RCHILD(tree, -1))) + ); + return ok; +} + static int validate_lambdef(node *tree) { @@ -2923,6 +2935,9 @@ case classdef: res = validate_class(tree); break; + case decorated: + res = validate_decorated(tree); + break; /* * "Trivial" parse tree nodes. * (Why did I call these trivial?) Modified: python/trunk/Parser/Python.asdl ============================================================================== --- python/trunk/Parser/Python.asdl (original) +++ python/trunk/Parser/Python.asdl Sat Feb 23 16:01:05 2008 @@ -10,8 +10,8 @@ | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorators) - | ClassDef(identifier name, expr* bases, stmt* body) + stmt* body, expr* decorator_list) + | ClassDef(identifier name, expr* bases, stmt* body, expr *decorator_list) | Return(expr? value) | Delete(expr* targets) Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sat Feb 23 16:01:05 2008 @@ -42,13 +42,14 @@ "name", "args", "body", - "decorators", + "decorator_list", }; static PyTypeObject *ClassDef_type; static char *ClassDef_fields[]={ "name", "bases", "body", + "decorator_list", }; static PyTypeObject *Return_type; static char *Return_fields[]={ @@ -469,7 +470,7 @@ FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields, 4); if (!FunctionDef_type) return 0; - ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 3); + ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4); if (!ClassDef_type) return 0; Return_type = make_type("Return", stmt_type, Return_fields, 1); if (!Return_type) return 0; @@ -790,7 +791,7 @@ stmt_ty FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * - decorators, int lineno, int col_offset, PyArena *arena) + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -810,15 +811,15 @@ p->v.FunctionDef.name = name; p->v.FunctionDef.args = args; p->v.FunctionDef.body = body; - p->v.FunctionDef.decorators = decorators; + p->v.FunctionDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; } stmt_ty -ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int lineno, int - col_offset, PyArena *arena) +ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq * + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -833,6 +834,7 @@ p->v.ClassDef.name = name; p->v.ClassDef.bases = bases; p->v.ClassDef.body = body; + p->v.ClassDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1906,9 +1908,11 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->v.FunctionDef.decorators, ast2obj_expr); + value = ast2obj_list(o->v.FunctionDef.decorator_list, + ast2obj_expr); if (!value) goto failed; - if (PyObject_SetAttrString(result, "decorators", value) == -1) + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) goto failed; Py_DECREF(value); break; @@ -1930,6 +1934,13 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); + value = ast2obj_list(o->v.ClassDef.decorator_list, + ast2obj_expr); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) + goto failed; + Py_DECREF(value); break; case Return_kind: result = PyType_GenericNew(Return_type, NULL, NULL); Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Sat Feb 23 16:01:05 2008 @@ -29,6 +29,7 @@ static asdl_seq *ast_for_exprlist(struct compiling *, const node *, expr_context_ty); static expr_ty ast_for_testlist(struct compiling *, const node *); +static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *); static expr_ty ast_for_testlist_gexp(struct compiling *, const node *); /* Note different signature for ast_for_call */ @@ -828,27 +829,16 @@ } static stmt_ty -ast_for_funcdef(struct compiling *c, const node *n) +ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { - /* funcdef: 'def' [decorators] NAME parameters ':' suite */ + /* funcdef: 'def' NAME parameters ':' suite */ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorator_seq = NULL; - int name_i; + int name_i = 1; REQ(n, funcdef); - if (NCH(n) == 6) { /* decorators are present */ - decorator_seq = ast_for_decorators(c, CHILD(n, 0)); - if (!decorator_seq) - return NULL; - name_i = 2; - } - else { - name_i = 1; - } - name = NEW_IDENTIFIER(CHILD(n, name_i)); if (!name) return NULL; @@ -867,6 +857,36 @@ n->n_col_offset, c->c_arena); } +static stmt_ty +ast_for_decorated(struct compiling *c, const node *n) +{ + /* decorated: decorators (classdef | funcdef) */ + stmt_ty thing = NULL; + asdl_seq *decorator_seq = NULL; + + REQ(n, decorated); + + decorator_seq = ast_for_decorators(c, CHILD(n, 0)); + if (!decorator_seq) + return NULL; + + assert(TYPE(CHILD(n, 1)) == funcdef || + TYPE(CHILD(n, 1)) == classdef); + + if (TYPE(CHILD(n, 1)) == funcdef) { + thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq); + } else if (TYPE(CHILD(n, 1)) == classdef) { + thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq); + } + /* we count the decorators in when talking about the class' or + function's line number */ + if (thing) { + thing->lineno = LINENO(n); + thing->col_offset = n->n_col_offset; + } + return thing; +} + static expr_ty ast_for_lambdef(struct compiling *c, const node *n) { @@ -2968,7 +2988,7 @@ } static stmt_ty -ast_for_classdef(struct compiling *c, const node *n) +ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { /* classdef: 'class' NAME ['(' testlist ')'] ':' suite */ asdl_seq *bases, *s; @@ -2984,16 +3004,16 @@ s = ast_for_suite(c, CHILD(n, 3)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* check for empty base list */ if (TYPE(CHILD(n,3)) == RPAR) { s = ast_for_suite(c, CHILD(n,5)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* else handle the base class list */ @@ -3004,8 +3024,8 @@ s = ast_for_suite(c, CHILD(n, 6)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } static stmt_ty @@ -3054,7 +3074,7 @@ } else { /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt - | funcdef | classdef + | funcdef | classdef | decorated */ node *ch = CHILD(n, 0); REQ(n, compound_stmt); @@ -3070,9 +3090,11 @@ case with_stmt: return ast_for_with_stmt(c, ch); case funcdef: - return ast_for_funcdef(c, ch); + return ast_for_funcdef(c, ch, NULL); case classdef: - return ast_for_classdef(c, ch); + return ast_for_classdef(c, ch, NULL); + case decorated: + return ast_for_decorated(c, ch); default: PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Sat Feb 23 16:01:05 2008 @@ -1362,7 +1362,7 @@ PyCodeObject *co; PyObject *first_const = Py_None; arguments_ty args = s->v.FunctionDef.args; - asdl_seq* decos = s->v.FunctionDef.decorators; + asdl_seq* decos = s->v.FunctionDef.decorator_list; stmt_ty st; int i, n, docstring; @@ -1413,9 +1413,14 @@ static int compiler_class(struct compiler *c, stmt_ty s) { - int n; + int n, i; PyCodeObject *co; PyObject *str; + asdl_seq* decos = s->v.ClassDef.decorator_list; + + if (!compiler_decorators(c, decos)) + return 0; + /* push class name on stack, needed by BUILD_CLASS */ ADDOP_O(c, LOAD_CONST, s->v.ClassDef.name, consts); /* push the tuple of base classes on the stack */ @@ -1461,6 +1466,10 @@ ADDOP_I(c, CALL_FUNCTION, 0); ADDOP(c, BUILD_CLASS); + /* apply decorators */ + for (i = 0; i < asdl_seq_LEN(decos); i++) { + ADDOP_I(c, CALL_FUNCTION, 1); + } if (!compiler_nameop(c, s->v.ClassDef.name, Store)) return 0; return 1; Modified: python/trunk/Python/graminit.c ============================================================================== --- python/trunk/Python/graminit.c (original) +++ python/trunk/Python/graminit.c Sat Feb 23 16:01:05 2008 @@ -86,176 +86,184 @@ {1, arcs_4_0}, {2, arcs_4_1}, }; -static arc arcs_5_0[2] = { +static arc arcs_5_0[1] = { {16, 1}, - {18, 2}, }; -static arc arcs_5_1[1] = { +static arc arcs_5_1[2] = { {18, 2}, + {19, 2}, }; static arc arcs_5_2[1] = { - {19, 3}, -}; -static arc arcs_5_3[1] = { - {20, 4}, -}; -static arc arcs_5_4[1] = { - {21, 5}, -}; -static arc arcs_5_5[1] = { - {22, 6}, -}; -static arc arcs_5_6[1] = { - {0, 6}, + {0, 2}, }; -static state states_5[7] = { - {2, arcs_5_0}, - {1, arcs_5_1}, +static state states_5[3] = { + {1, arcs_5_0}, + {2, arcs_5_1}, {1, arcs_5_2}, - {1, arcs_5_3}, - {1, arcs_5_4}, - {1, arcs_5_5}, - {1, arcs_5_6}, }; static arc arcs_6_0[1] = { - {13, 1}, + {20, 1}, }; -static arc arcs_6_1[2] = { - {23, 2}, - {15, 3}, +static arc arcs_6_1[1] = { + {21, 2}, }; static arc arcs_6_2[1] = { - {15, 3}, + {22, 3}, }; static arc arcs_6_3[1] = { - {0, 3}, + {23, 4}, }; -static state states_6[4] = { +static arc arcs_6_4[1] = { + {24, 5}, +}; +static arc arcs_6_5[1] = { + {0, 5}, +}; +static state states_6[6] = { {1, arcs_6_0}, - {2, arcs_6_1}, + {1, arcs_6_1}, {1, arcs_6_2}, {1, arcs_6_3}, + {1, arcs_6_4}, + {1, arcs_6_5}, }; -static arc arcs_7_0[3] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_7_0[1] = { + {13, 1}, }; -static arc arcs_7_1[3] = { - {25, 4}, - {27, 5}, - {0, 1}, +static arc arcs_7_1[2] = { + {25, 2}, + {15, 3}, }; static arc arcs_7_2[1] = { - {19, 6}, + {15, 3}, }; static arc arcs_7_3[1] = { - {19, 7}, + {0, 3}, +}; +static state states_7[4] = { + {1, arcs_7_0}, + {2, arcs_7_1}, + {1, arcs_7_2}, + {1, arcs_7_3}, }; -static arc arcs_7_4[1] = { - {26, 8}, +static arc arcs_8_0[3] = { + {26, 1}, + {30, 2}, + {31, 3}, }; -static arc arcs_7_5[4] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_8_1[3] = { + {27, 4}, + {29, 5}, + {0, 1}, +}; +static arc arcs_8_2[1] = { + {21, 6}, +}; +static arc arcs_8_3[1] = { + {21, 7}, +}; +static arc arcs_8_4[1] = { + {28, 8}, +}; +static arc arcs_8_5[4] = { + {26, 1}, + {30, 2}, + {31, 3}, {0, 5}, }; -static arc arcs_7_6[2] = { - {27, 9}, +static arc arcs_8_6[2] = { + {29, 9}, {0, 6}, }; -static arc arcs_7_7[1] = { +static arc arcs_8_7[1] = { {0, 7}, }; -static arc arcs_7_8[2] = { - {27, 5}, +static arc arcs_8_8[2] = { + {29, 5}, {0, 8}, }; -static arc arcs_7_9[1] = { - {29, 3}, +static arc arcs_8_9[1] = { + {31, 3}, }; -static state states_7[10] = { - {3, arcs_7_0}, - {3, arcs_7_1}, - {1, arcs_7_2}, - {1, arcs_7_3}, - {1, arcs_7_4}, - {4, arcs_7_5}, - {2, arcs_7_6}, - {1, arcs_7_7}, - {2, arcs_7_8}, - {1, arcs_7_9}, +static state states_8[10] = { + {3, arcs_8_0}, + {3, arcs_8_1}, + {1, arcs_8_2}, + {1, arcs_8_3}, + {1, arcs_8_4}, + {4, arcs_8_5}, + {2, arcs_8_6}, + {1, arcs_8_7}, + {2, arcs_8_8}, + {1, arcs_8_9}, }; -static arc arcs_8_0[2] = { - {19, 1}, +static arc arcs_9_0[2] = { + {21, 1}, {13, 2}, }; -static arc arcs_8_1[1] = { +static arc arcs_9_1[1] = { {0, 1}, }; -static arc arcs_8_2[1] = { - {30, 3}, +static arc arcs_9_2[1] = { + {32, 3}, }; -static arc arcs_8_3[1] = { +static arc arcs_9_3[1] = { {15, 1}, }; -static state states_8[4] = { - {2, arcs_8_0}, - {1, arcs_8_1}, - {1, arcs_8_2}, - {1, arcs_8_3}, +static state states_9[4] = { + {2, arcs_9_0}, + {1, arcs_9_1}, + {1, arcs_9_2}, + {1, arcs_9_3}, }; -static arc arcs_9_0[1] = { - {24, 1}, +static arc arcs_10_0[1] = { + {26, 1}, }; -static arc arcs_9_1[2] = { - {27, 2}, +static arc arcs_10_1[2] = { + {29, 2}, {0, 1}, }; -static arc arcs_9_2[2] = { - {24, 1}, +static arc arcs_10_2[2] = { + {26, 1}, {0, 2}, }; -static state states_9[3] = { - {1, arcs_9_0}, - {2, arcs_9_1}, - {2, arcs_9_2}, +static state states_10[3] = { + {1, arcs_10_0}, + {2, arcs_10_1}, + {2, arcs_10_2}, }; -static arc arcs_10_0[2] = { +static arc arcs_11_0[2] = { {3, 1}, {4, 1}, }; -static arc arcs_10_1[1] = { +static arc arcs_11_1[1] = { {0, 1}, }; -static state states_10[2] = { - {2, arcs_10_0}, - {1, arcs_10_1}, +static state states_11[2] = { + {2, arcs_11_0}, + {1, arcs_11_1}, }; -static arc arcs_11_0[1] = { - {31, 1}, +static arc arcs_12_0[1] = { + {33, 1}, }; -static arc arcs_11_1[2] = { - {32, 2}, +static arc arcs_12_1[2] = { + {34, 2}, {2, 3}, }; -static arc arcs_11_2[2] = { - {31, 1}, +static arc arcs_12_2[2] = { + {33, 1}, {2, 3}, }; -static arc arcs_11_3[1] = { +static arc arcs_12_3[1] = { {0, 3}, }; -static state states_11[4] = { - {1, arcs_11_0}, - {2, arcs_11_1}, - {2, arcs_11_2}, - {1, arcs_11_3}, +static state states_12[4] = { + {1, arcs_12_0}, + {2, arcs_12_1}, + {2, arcs_12_2}, + {1, arcs_12_3}, }; -static arc arcs_12_0[9] = { - {33, 1}, - {34, 1}, +static arc arcs_13_0[9] = { {35, 1}, {36, 1}, {37, 1}, @@ -263,48 +271,48 @@ {39, 1}, {40, 1}, {41, 1}, + {42, 1}, + {43, 1}, }; -static arc arcs_12_1[1] = { +static arc arcs_13_1[1] = { {0, 1}, }; -static state states_12[2] = { - {9, arcs_12_0}, - {1, arcs_12_1}, +static state states_13[2] = { + {9, arcs_13_0}, + {1, arcs_13_1}, }; -static arc arcs_13_0[1] = { +static arc arcs_14_0[1] = { {9, 1}, }; -static arc arcs_13_1[3] = { - {42, 2}, - {25, 3}, +static arc arcs_14_1[3] = { + {44, 2}, + {27, 3}, {0, 1}, }; -static arc arcs_13_2[2] = { - {43, 4}, +static arc arcs_14_2[2] = { + {45, 4}, {9, 4}, }; -static arc arcs_13_3[2] = { - {43, 5}, +static arc arcs_14_3[2] = { + {45, 5}, {9, 5}, }; -static arc arcs_13_4[1] = { +static arc arcs_14_4[1] = { {0, 4}, }; -static arc arcs_13_5[2] = { - {25, 3}, +static arc arcs_14_5[2] = { + {27, 3}, {0, 5}, }; -static state states_13[6] = { - {1, arcs_13_0}, - {3, arcs_13_1}, - {2, arcs_13_2}, - {2, arcs_13_3}, - {1, arcs_13_4}, - {2, arcs_13_5}, +static state states_14[6] = { + {1, arcs_14_0}, + {3, arcs_14_1}, + {2, arcs_14_2}, + {2, arcs_14_3}, + {1, arcs_14_4}, + {2, arcs_14_5}, }; -static arc arcs_14_0[12] = { - {44, 1}, - {45, 1}, +static arc arcs_15_0[12] = { {46, 1}, {47, 1}, {48, 1}, @@ -315,109 +323,101 @@ {53, 1}, {54, 1}, {55, 1}, + {56, 1}, + {57, 1}, }; -static arc arcs_14_1[1] = { +static arc arcs_15_1[1] = { {0, 1}, }; -static state states_14[2] = { - {12, arcs_14_0}, - {1, arcs_14_1}, +static state states_15[2] = { + {12, arcs_15_0}, + {1, arcs_15_1}, }; -static arc arcs_15_0[1] = { - {56, 1}, +static arc arcs_16_0[1] = { + {58, 1}, }; -static arc arcs_15_1[3] = { - {26, 2}, - {57, 3}, +static arc arcs_16_1[3] = { + {28, 2}, + {59, 3}, {0, 1}, }; -static arc arcs_15_2[2] = { - {27, 4}, +static arc arcs_16_2[2] = { + {29, 4}, {0, 2}, }; -static arc arcs_15_3[1] = { - {26, 5}, +static arc arcs_16_3[1] = { + {28, 5}, }; -static arc arcs_15_4[2] = { - {26, 2}, +static arc arcs_16_4[2] = { + {28, 2}, {0, 4}, }; -static arc arcs_15_5[2] = { - {27, 6}, +static arc arcs_16_5[2] = { + {29, 6}, {0, 5}, }; -static arc arcs_15_6[1] = { - {26, 7}, +static arc arcs_16_6[1] = { + {28, 7}, }; -static arc arcs_15_7[2] = { - {27, 8}, +static arc arcs_16_7[2] = { + {29, 8}, {0, 7}, }; -static arc arcs_15_8[2] = { - {26, 7}, +static arc arcs_16_8[2] = { + {28, 7}, {0, 8}, }; -static state states_15[9] = { - {1, arcs_15_0}, - {3, arcs_15_1}, - {2, arcs_15_2}, - {1, arcs_15_3}, - {2, arcs_15_4}, - {2, arcs_15_5}, - {1, arcs_15_6}, - {2, arcs_15_7}, - {2, arcs_15_8}, -}; -static arc arcs_16_0[1] = { - {58, 1}, -}; -static arc arcs_16_1[1] = { - {59, 2}, -}; -static arc arcs_16_2[1] = { - {0, 2}, -}; -static state states_16[3] = { +static state states_16[9] = { {1, arcs_16_0}, - {1, arcs_16_1}, - {1, arcs_16_2}, + {3, arcs_16_1}, + {2, arcs_16_2}, + {1, arcs_16_3}, + {2, arcs_16_4}, + {2, arcs_16_5}, + {1, arcs_16_6}, + {2, arcs_16_7}, + {2, arcs_16_8}, }; static arc arcs_17_0[1] = { {60, 1}, }; static arc arcs_17_1[1] = { - {0, 1}, + {61, 2}, }; -static state states_17[2] = { +static arc arcs_17_2[1] = { + {0, 2}, +}; +static state states_17[3] = { {1, arcs_17_0}, {1, arcs_17_1}, + {1, arcs_17_2}, }; -static arc arcs_18_0[5] = { - {61, 1}, +static arc arcs_18_0[1] = { {62, 1}, - {63, 1}, - {64, 1}, - {65, 1}, }; static arc arcs_18_1[1] = { {0, 1}, }; static state states_18[2] = { - {5, arcs_18_0}, + {1, arcs_18_0}, {1, arcs_18_1}, }; -static arc arcs_19_0[1] = { +static arc arcs_19_0[5] = { + {63, 1}, + {64, 1}, + {65, 1}, {66, 1}, + {67, 1}, }; static arc arcs_19_1[1] = { {0, 1}, }; static state states_19[2] = { - {1, arcs_19_0}, + {5, arcs_19_0}, {1, arcs_19_1}, }; static arc arcs_20_0[1] = { - {67, 1}, + {68, 1}, }; static arc arcs_20_1[1] = { {0, 1}, @@ -427,155 +427,146 @@ {1, arcs_20_1}, }; static arc arcs_21_0[1] = { - {68, 1}, + {69, 1}, }; -static arc arcs_21_1[2] = { - {9, 2}, +static arc arcs_21_1[1] = { {0, 1}, }; -static arc arcs_21_2[1] = { - {0, 2}, -}; -static state states_21[3] = { +static state states_21[2] = { {1, arcs_21_0}, - {2, arcs_21_1}, - {1, arcs_21_2}, + {1, arcs_21_1}, }; static arc arcs_22_0[1] = { - {43, 1}, + {70, 1}, }; -static arc arcs_22_1[1] = { +static arc arcs_22_1[2] = { + {9, 2}, {0, 1}, }; -static state states_22[2] = { +static arc arcs_22_2[1] = { + {0, 2}, +}; +static state states_22[3] = { {1, arcs_22_0}, - {1, arcs_22_1}, + {2, arcs_22_1}, + {1, arcs_22_2}, }; static arc arcs_23_0[1] = { - {69, 1}, + {45, 1}, }; -static arc arcs_23_1[2] = { - {26, 2}, +static arc arcs_23_1[1] = { {0, 1}, }; -static arc arcs_23_2[2] = { - {27, 3}, - {0, 2}, +static state states_23[2] = { + {1, arcs_23_0}, + {1, arcs_23_1}, }; -static arc arcs_23_3[1] = { - {26, 4}, +static arc arcs_24_0[1] = { + {71, 1}, }; -static arc arcs_23_4[2] = { - {27, 5}, - {0, 4}, +static arc arcs_24_1[2] = { + {28, 2}, + {0, 1}, }; -static arc arcs_23_5[1] = { - {26, 6}, +static arc arcs_24_2[2] = { + {29, 3}, + {0, 2}, }; -static arc arcs_23_6[1] = { - {0, 6}, +static arc arcs_24_3[1] = { + {28, 4}, }; -static state states_23[7] = { - {1, arcs_23_0}, - {2, arcs_23_1}, - {2, arcs_23_2}, - {1, arcs_23_3}, - {2, arcs_23_4}, - {1, arcs_23_5}, - {1, arcs_23_6}, +static arc arcs_24_4[2] = { + {29, 5}, + {0, 4}, }; -static arc arcs_24_0[2] = { - {70, 1}, - {71, 1}, +static arc arcs_24_5[1] = { + {28, 6}, }; -static arc arcs_24_1[1] = { - {0, 1}, +static arc arcs_24_6[1] = { + {0, 6}, }; -static state states_24[2] = { - {2, arcs_24_0}, - {1, arcs_24_1}, +static state states_24[7] = { + {1, arcs_24_0}, + {2, arcs_24_1}, + {2, arcs_24_2}, + {1, arcs_24_3}, + {2, arcs_24_4}, + {1, arcs_24_5}, + {1, arcs_24_6}, }; -static arc arcs_25_0[1] = { +static arc arcs_25_0[2] = { {72, 1}, + {73, 1}, }; static arc arcs_25_1[1] = { - {73, 2}, -}; -static arc arcs_25_2[1] = { - {0, 2}, + {0, 1}, }; -static state states_25[3] = { - {1, arcs_25_0}, +static state states_25[2] = { + {2, arcs_25_0}, {1, arcs_25_1}, - {1, arcs_25_2}, }; static arc arcs_26_0[1] = { {74, 1}, }; -static arc arcs_26_1[2] = { +static arc arcs_26_1[1] = { {75, 2}, +}; +static arc arcs_26_2[1] = { + {0, 2}, +}; +static state states_26[3] = { + {1, arcs_26_0}, + {1, arcs_26_1}, + {1, arcs_26_2}, +}; +static arc arcs_27_0[1] = { + {76, 1}, +}; +static arc arcs_27_1[2] = { + {77, 2}, {12, 3}, }; -static arc arcs_26_2[3] = { - {75, 2}, +static arc arcs_27_2[3] = { + {77, 2}, {12, 3}, - {72, 4}, + {74, 4}, }; -static arc arcs_26_3[1] = { - {72, 4}, +static arc arcs_27_3[1] = { + {74, 4}, }; -static arc arcs_26_4[3] = { - {28, 5}, +static arc arcs_27_4[3] = { + {30, 5}, {13, 6}, - {76, 5}, + {78, 5}, }; -static arc arcs_26_5[1] = { +static arc arcs_27_5[1] = { {0, 5}, }; -static arc arcs_26_6[1] = { - {76, 7}, +static arc arcs_27_6[1] = { + {78, 7}, }; -static arc arcs_26_7[1] = { +static arc arcs_27_7[1] = { {15, 5}, }; -static state states_26[8] = { - {1, arcs_26_0}, - {2, arcs_26_1}, - {3, arcs_26_2}, - {1, arcs_26_3}, - {3, arcs_26_4}, - {1, arcs_26_5}, - {1, arcs_26_6}, - {1, arcs_26_7}, -}; -static arc arcs_27_0[1] = { - {19, 1}, -}; -static arc arcs_27_1[2] = { - {78, 2}, - {0, 1}, -}; -static arc arcs_27_2[1] = { - {19, 3}, -}; -static arc arcs_27_3[1] = { - {0, 3}, -}; -static state states_27[4] = { +static state states_27[8] = { {1, arcs_27_0}, {2, arcs_27_1}, - {1, arcs_27_2}, + {3, arcs_27_2}, {1, arcs_27_3}, + {3, arcs_27_4}, + {1, arcs_27_5}, + {1, arcs_27_6}, + {1, arcs_27_7}, }; static arc arcs_28_0[1] = { - {12, 1}, + {21, 1}, }; static arc arcs_28_1[2] = { - {78, 2}, + {80, 2}, {0, 1}, }; static arc arcs_28_2[1] = { - {19, 3}, + {21, 3}, }; static arc arcs_28_3[1] = { {0, 3}, @@ -587,37 +578,45 @@ {1, arcs_28_3}, }; static arc arcs_29_0[1] = { - {77, 1}, + {12, 1}, }; static arc arcs_29_1[2] = { - {27, 2}, + {80, 2}, {0, 1}, }; -static arc arcs_29_2[2] = { - {77, 1}, - {0, 2}, +static arc arcs_29_2[1] = { + {21, 3}, +}; +static arc arcs_29_3[1] = { + {0, 3}, }; -static state states_29[3] = { +static state states_29[4] = { {1, arcs_29_0}, {2, arcs_29_1}, - {2, arcs_29_2}, + {1, arcs_29_2}, + {1, arcs_29_3}, }; static arc arcs_30_0[1] = { {79, 1}, }; static arc arcs_30_1[2] = { - {27, 0}, + {29, 2}, {0, 1}, }; -static state states_30[2] = { +static arc arcs_30_2[2] = { + {79, 1}, + {0, 2}, +}; +static state states_30[3] = { {1, arcs_30_0}, {2, arcs_30_1}, + {2, arcs_30_2}, }; static arc arcs_31_0[1] = { - {19, 1}, + {81, 1}, }; static arc arcs_31_1[2] = { - {75, 0}, + {29, 0}, {0, 1}, }; static state states_31[2] = { @@ -625,148 +624,125 @@ {2, arcs_31_1}, }; static arc arcs_32_0[1] = { - {80, 1}, -}; -static arc arcs_32_1[1] = { - {19, 2}, + {21, 1}, }; -static arc arcs_32_2[2] = { - {27, 1}, - {0, 2}, +static arc arcs_32_1[2] = { + {77, 0}, + {0, 1}, }; -static state states_32[3] = { +static state states_32[2] = { {1, arcs_32_0}, - {1, arcs_32_1}, - {2, arcs_32_2}, + {2, arcs_32_1}, }; static arc arcs_33_0[1] = { - {81, 1}, + {82, 1}, }; static arc arcs_33_1[1] = { - {82, 2}, + {21, 2}, }; static arc arcs_33_2[2] = { - {83, 3}, + {29, 1}, {0, 2}, }; -static arc arcs_33_3[1] = { - {26, 4}, -}; -static arc arcs_33_4[2] = { - {27, 5}, - {0, 4}, -}; -static arc arcs_33_5[1] = { - {26, 6}, -}; -static arc arcs_33_6[1] = { - {0, 6}, -}; -static state states_33[7] = { +static state states_33[3] = { {1, arcs_33_0}, {1, arcs_33_1}, {2, arcs_33_2}, - {1, arcs_33_3}, - {2, arcs_33_4}, - {1, arcs_33_5}, - {1, arcs_33_6}, }; static arc arcs_34_0[1] = { - {84, 1}, + {83, 1}, }; static arc arcs_34_1[1] = { - {26, 2}, + {84, 2}, }; static arc arcs_34_2[2] = { - {27, 3}, + {85, 3}, {0, 2}, }; static arc arcs_34_3[1] = { - {26, 4}, + {28, 4}, }; -static arc arcs_34_4[1] = { +static arc arcs_34_4[2] = { + {29, 5}, {0, 4}, }; -static state states_34[5] = { +static arc arcs_34_5[1] = { + {28, 6}, +}; +static arc arcs_34_6[1] = { + {0, 6}, +}; +static state states_34[7] = { {1, arcs_34_0}, {1, arcs_34_1}, {2, arcs_34_2}, {1, arcs_34_3}, - {1, arcs_34_4}, + {2, arcs_34_4}, + {1, arcs_34_5}, + {1, arcs_34_6}, }; -static arc arcs_35_0[7] = { - {85, 1}, +static arc arcs_35_0[1] = { {86, 1}, - {87, 1}, - {88, 1}, - {89, 1}, - {17, 1}, - {90, 1}, }; static arc arcs_35_1[1] = { - {0, 1}, -}; -static state states_35[2] = { - {7, arcs_35_0}, - {1, arcs_35_1}, -}; -static arc arcs_36_0[1] = { - {91, 1}, -}; -static arc arcs_36_1[1] = { - {26, 2}, + {28, 2}, }; -static arc arcs_36_2[1] = { - {21, 3}, +static arc arcs_35_2[2] = { + {29, 3}, + {0, 2}, }; -static arc arcs_36_3[1] = { - {22, 4}, +static arc arcs_35_3[1] = { + {28, 4}, }; -static arc arcs_36_4[3] = { - {92, 1}, - {93, 5}, +static arc arcs_35_4[1] = { {0, 4}, }; -static arc arcs_36_5[1] = { - {21, 6}, +static state states_35[5] = { + {1, arcs_35_0}, + {1, arcs_35_1}, + {2, arcs_35_2}, + {1, arcs_35_3}, + {1, arcs_35_4}, }; -static arc arcs_36_6[1] = { - {22, 7}, +static arc arcs_36_0[8] = { + {87, 1}, + {88, 1}, + {89, 1}, + {90, 1}, + {91, 1}, + {19, 1}, + {18, 1}, + {17, 1}, }; -static arc arcs_36_7[1] = { - {0, 7}, +static arc arcs_36_1[1] = { + {0, 1}, }; -static state states_36[8] = { - {1, arcs_36_0}, +static state states_36[2] = { + {8, arcs_36_0}, {1, arcs_36_1}, - {1, arcs_36_2}, - {1, arcs_36_3}, - {3, arcs_36_4}, - {1, arcs_36_5}, - {1, arcs_36_6}, - {1, arcs_36_7}, }; static arc arcs_37_0[1] = { - {94, 1}, + {92, 1}, }; static arc arcs_37_1[1] = { - {26, 2}, + {28, 2}, }; static arc arcs_37_2[1] = { - {21, 3}, + {23, 3}, }; static arc arcs_37_3[1] = { - {22, 4}, + {24, 4}, }; -static arc arcs_37_4[2] = { - {93, 5}, +static arc arcs_37_4[3] = { + {93, 1}, + {94, 5}, {0, 4}, }; static arc arcs_37_5[1] = { - {21, 6}, + {23, 6}, }; static arc arcs_37_6[1] = { - {22, 7}, + {24, 7}, }; static arc arcs_37_7[1] = { {0, 7}, @@ -776,7 +752,7 @@ {1, arcs_37_1}, {1, arcs_37_2}, {1, arcs_37_3}, - {2, arcs_37_4}, + {3, arcs_37_4}, {1, arcs_37_5}, {1, arcs_37_6}, {1, arcs_37_7}, @@ -785,373 +761,397 @@ {95, 1}, }; static arc arcs_38_1[1] = { - {59, 2}, + {28, 2}, }; static arc arcs_38_2[1] = { - {83, 3}, + {23, 3}, }; static arc arcs_38_3[1] = { - {9, 4}, + {24, 4}, }; -static arc arcs_38_4[1] = { - {21, 5}, +static arc arcs_38_4[2] = { + {94, 5}, + {0, 4}, }; static arc arcs_38_5[1] = { - {22, 6}, + {23, 6}, }; -static arc arcs_38_6[2] = { - {93, 7}, - {0, 6}, +static arc arcs_38_6[1] = { + {24, 7}, }; static arc arcs_38_7[1] = { - {21, 8}, -}; -static arc arcs_38_8[1] = { - {22, 9}, -}; -static arc arcs_38_9[1] = { - {0, 9}, + {0, 7}, }; -static state states_38[10] = { +static state states_38[8] = { {1, arcs_38_0}, {1, arcs_38_1}, {1, arcs_38_2}, {1, arcs_38_3}, - {1, arcs_38_4}, + {2, arcs_38_4}, {1, arcs_38_5}, - {2, arcs_38_6}, + {1, arcs_38_6}, {1, arcs_38_7}, - {1, arcs_38_8}, - {1, arcs_38_9}, }; static arc arcs_39_0[1] = { {96, 1}, }; static arc arcs_39_1[1] = { - {21, 2}, + {61, 2}, }; static arc arcs_39_2[1] = { - {22, 3}, + {85, 3}, }; -static arc arcs_39_3[2] = { - {97, 4}, - {98, 5}, +static arc arcs_39_3[1] = { + {9, 4}, }; static arc arcs_39_4[1] = { - {21, 6}, + {23, 5}, }; static arc arcs_39_5[1] = { - {21, 7}, + {24, 6}, }; -static arc arcs_39_6[1] = { - {22, 8}, +static arc arcs_39_6[2] = { + {94, 7}, + {0, 6}, }; static arc arcs_39_7[1] = { - {22, 9}, + {23, 8}, }; -static arc arcs_39_8[4] = { - {97, 4}, - {93, 10}, - {98, 5}, - {0, 8}, +static arc arcs_39_8[1] = { + {24, 9}, }; static arc arcs_39_9[1] = { {0, 9}, }; -static arc arcs_39_10[1] = { - {21, 11}, -}; -static arc arcs_39_11[1] = { - {22, 12}, -}; -static arc arcs_39_12[2] = { - {98, 5}, - {0, 12}, -}; -static state states_39[13] = { +static state states_39[10] = { {1, arcs_39_0}, {1, arcs_39_1}, {1, arcs_39_2}, - {2, arcs_39_3}, + {1, arcs_39_3}, {1, arcs_39_4}, {1, arcs_39_5}, - {1, arcs_39_6}, + {2, arcs_39_6}, {1, arcs_39_7}, - {4, arcs_39_8}, + {1, arcs_39_8}, {1, arcs_39_9}, - {1, arcs_39_10}, - {1, arcs_39_11}, - {2, arcs_39_12}, }; static arc arcs_40_0[1] = { - {99, 1}, + {97, 1}, }; static arc arcs_40_1[1] = { - {26, 2}, + {23, 2}, }; -static arc arcs_40_2[2] = { - {100, 3}, - {21, 4}, +static arc arcs_40_2[1] = { + {24, 3}, }; -static arc arcs_40_3[1] = { - {21, 4}, +static arc arcs_40_3[2] = { + {98, 4}, + {99, 5}, }; static arc arcs_40_4[1] = { - {22, 5}, + {23, 6}, }; static arc arcs_40_5[1] = { - {0, 5}, + {23, 7}, }; -static state states_40[6] = { +static arc arcs_40_6[1] = { + {24, 8}, +}; +static arc arcs_40_7[1] = { + {24, 9}, +}; +static arc arcs_40_8[4] = { + {98, 4}, + {94, 10}, + {99, 5}, + {0, 8}, +}; +static arc arcs_40_9[1] = { + {0, 9}, +}; +static arc arcs_40_10[1] = { + {23, 11}, +}; +static arc arcs_40_11[1] = { + {24, 12}, +}; +static arc arcs_40_12[2] = { + {99, 5}, + {0, 12}, +}; +static state states_40[13] = { {1, arcs_40_0}, {1, arcs_40_1}, - {2, arcs_40_2}, - {1, arcs_40_3}, + {1, arcs_40_2}, + {2, arcs_40_3}, {1, arcs_40_4}, {1, arcs_40_5}, + {1, arcs_40_6}, + {1, arcs_40_7}, + {4, arcs_40_8}, + {1, arcs_40_9}, + {1, arcs_40_10}, + {1, arcs_40_11}, + {2, arcs_40_12}, }; static arc arcs_41_0[1] = { - {78, 1}, + {100, 1}, }; static arc arcs_41_1[1] = { - {82, 2}, + {28, 2}, }; -static arc arcs_41_2[1] = { - {0, 2}, +static arc arcs_41_2[2] = { + {101, 3}, + {23, 4}, +}; +static arc arcs_41_3[1] = { + {23, 4}, +}; +static arc arcs_41_4[1] = { + {24, 5}, +}; +static arc arcs_41_5[1] = { + {0, 5}, }; -static state states_41[3] = { +static state states_41[6] = { {1, arcs_41_0}, {1, arcs_41_1}, - {1, arcs_41_2}, + {2, arcs_41_2}, + {1, arcs_41_3}, + {1, arcs_41_4}, + {1, arcs_41_5}, }; static arc arcs_42_0[1] = { - {101, 1}, + {80, 1}, }; -static arc arcs_42_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_42_1[1] = { + {84, 2}, }; -static arc arcs_42_2[3] = { - {78, 3}, - {27, 3}, +static arc arcs_42_2[1] = { {0, 2}, }; -static arc arcs_42_3[1] = { - {26, 4}, -}; -static arc arcs_42_4[1] = { - {0, 4}, -}; -static state states_42[5] = { +static state states_42[3] = { {1, arcs_42_0}, - {2, arcs_42_1}, - {3, arcs_42_2}, - {1, arcs_42_3}, - {1, arcs_42_4}, + {1, arcs_42_1}, + {1, arcs_42_2}, }; -static arc arcs_43_0[2] = { - {3, 1}, - {2, 2}, +static arc arcs_43_0[1] = { + {102, 1}, }; -static arc arcs_43_1[1] = { +static arc arcs_43_1[2] = { + {28, 2}, {0, 1}, }; -static arc arcs_43_2[1] = { - {102, 3}, +static arc arcs_43_2[3] = { + {80, 3}, + {29, 3}, + {0, 2}, }; static arc arcs_43_3[1] = { - {6, 4}, + {28, 4}, }; -static arc arcs_43_4[2] = { - {6, 4}, - {103, 1}, +static arc arcs_43_4[1] = { + {0, 4}, }; static state states_43[5] = { - {2, arcs_43_0}, - {1, arcs_43_1}, - {1, arcs_43_2}, + {1, arcs_43_0}, + {2, arcs_43_1}, + {3, arcs_43_2}, {1, arcs_43_3}, - {2, arcs_43_4}, + {1, arcs_43_4}, }; -static arc arcs_44_0[1] = { - {105, 1}, +static arc arcs_44_0[2] = { + {3, 1}, + {2, 2}, }; -static arc arcs_44_1[2] = { - {27, 2}, +static arc arcs_44_1[1] = { {0, 1}, }; static arc arcs_44_2[1] = { - {105, 3}, + {103, 3}, }; -static arc arcs_44_3[2] = { - {27, 4}, - {0, 3}, +static arc arcs_44_3[1] = { + {6, 4}, }; static arc arcs_44_4[2] = { - {105, 3}, - {0, 4}, + {6, 4}, + {104, 1}, }; static state states_44[5] = { - {1, arcs_44_0}, - {2, arcs_44_1}, + {2, arcs_44_0}, + {1, arcs_44_1}, {1, arcs_44_2}, - {2, arcs_44_3}, + {1, arcs_44_3}, {2, arcs_44_4}, }; -static arc arcs_45_0[2] = { +static arc arcs_45_0[1] = { {106, 1}, - {107, 1}, }; -static arc arcs_45_1[1] = { +static arc arcs_45_1[2] = { + {29, 2}, {0, 1}, }; -static state states_45[2] = { - {2, arcs_45_0}, - {1, arcs_45_1}, +static arc arcs_45_2[1] = { + {106, 3}, }; -static arc arcs_46_0[1] = { - {108, 1}, +static arc arcs_45_3[2] = { + {29, 4}, + {0, 3}, }; -static arc arcs_46_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_45_4[2] = { + {106, 3}, + {0, 4}, }; -static arc arcs_46_2[1] = { - {21, 3}, +static state states_45[5] = { + {1, arcs_45_0}, + {2, arcs_45_1}, + {1, arcs_45_2}, + {2, arcs_45_3}, + {2, arcs_45_4}, }; -static arc arcs_46_3[1] = { - {105, 4}, +static arc arcs_46_0[2] = { + {107, 1}, + {108, 1}, }; -static arc arcs_46_4[1] = { - {0, 4}, +static arc arcs_46_1[1] = { + {0, 1}, }; -static state states_46[5] = { - {1, arcs_46_0}, - {2, arcs_46_1}, - {1, arcs_46_2}, - {1, arcs_46_3}, - {1, arcs_46_4}, +static state states_46[2] = { + {2, arcs_46_0}, + {1, arcs_46_1}, }; -static arc arcs_47_0[2] = { - {106, 1}, - {109, 2}, +static arc arcs_47_0[1] = { + {109, 1}, }; static arc arcs_47_1[2] = { - {91, 3}, - {0, 1}, + {25, 2}, + {23, 3}, }; static arc arcs_47_2[1] = { - {0, 2}, + {23, 3}, }; static arc arcs_47_3[1] = { {106, 4}, }; static arc arcs_47_4[1] = { - {93, 5}, -}; -static arc arcs_47_5[1] = { - {26, 2}, + {0, 4}, }; -static state states_47[6] = { - {2, arcs_47_0}, +static state states_47[5] = { + {1, arcs_47_0}, {2, arcs_47_1}, {1, arcs_47_2}, {1, arcs_47_3}, {1, arcs_47_4}, - {1, arcs_47_5}, }; -static arc arcs_48_0[1] = { - {110, 1}, +static arc arcs_48_0[2] = { + {107, 1}, + {110, 2}, }; static arc arcs_48_1[2] = { - {111, 0}, + {92, 3}, {0, 1}, }; -static state states_48[2] = { - {1, arcs_48_0}, +static arc arcs_48_2[1] = { + {0, 2}, +}; +static arc arcs_48_3[1] = { + {107, 4}, +}; +static arc arcs_48_4[1] = { + {94, 5}, +}; +static arc arcs_48_5[1] = { + {28, 2}, +}; +static state states_48[6] = { + {2, arcs_48_0}, {2, arcs_48_1}, + {1, arcs_48_2}, + {1, arcs_48_3}, + {1, arcs_48_4}, + {1, arcs_48_5}, }; static arc arcs_49_0[1] = { - {112, 1}, + {111, 1}, }; static arc arcs_49_1[2] = { - {113, 0}, + {112, 0}, {0, 1}, }; static state states_49[2] = { {1, arcs_49_0}, {2, arcs_49_1}, }; -static arc arcs_50_0[2] = { - {114, 1}, - {115, 2}, +static arc arcs_50_0[1] = { + {113, 1}, +}; +static arc arcs_50_1[2] = { + {114, 0}, + {0, 1}, }; -static arc arcs_50_1[1] = { - {112, 2}, +static state states_50[2] = { + {1, arcs_50_0}, + {2, arcs_50_1}, }; -static arc arcs_50_2[1] = { +static arc arcs_51_0[2] = { + {115, 1}, + {116, 2}, +}; +static arc arcs_51_1[1] = { + {113, 2}, +}; +static arc arcs_51_2[1] = { {0, 2}, }; -static state states_50[3] = { - {2, arcs_50_0}, - {1, arcs_50_1}, - {1, arcs_50_2}, +static state states_51[3] = { + {2, arcs_51_0}, + {1, arcs_51_1}, + {1, arcs_51_2}, }; -static arc arcs_51_0[1] = { - {82, 1}, +static arc arcs_52_0[1] = { + {84, 1}, }; -static arc arcs_51_1[2] = { - {116, 0}, +static arc arcs_52_1[2] = { + {117, 0}, {0, 1}, }; -static state states_51[2] = { - {1, arcs_51_0}, - {2, arcs_51_1}, +static state states_52[2] = { + {1, arcs_52_0}, + {2, arcs_52_1}, }; -static arc arcs_52_0[10] = { - {117, 1}, +static arc arcs_53_0[10] = { {118, 1}, {119, 1}, {120, 1}, {121, 1}, {122, 1}, {123, 1}, - {83, 1}, - {114, 2}, - {124, 3}, + {124, 1}, + {85, 1}, + {115, 2}, + {125, 3}, }; -static arc arcs_52_1[1] = { +static arc arcs_53_1[1] = { {0, 1}, }; -static arc arcs_52_2[1] = { - {83, 1}, +static arc arcs_53_2[1] = { + {85, 1}, }; -static arc arcs_52_3[2] = { - {114, 1}, +static arc arcs_53_3[2] = { + {115, 1}, {0, 3}, }; -static state states_52[4] = { - {10, arcs_52_0}, - {1, arcs_52_1}, - {1, arcs_52_2}, - {2, arcs_52_3}, -}; -static arc arcs_53_0[1] = { - {125, 1}, -}; -static arc arcs_53_1[2] = { - {126, 0}, - {0, 1}, -}; -static state states_53[2] = { - {1, arcs_53_0}, - {2, arcs_53_1}, +static state states_53[4] = { + {10, arcs_53_0}, + {1, arcs_53_1}, + {1, arcs_53_2}, + {2, arcs_53_3}, }; static arc arcs_54_0[1] = { - {127, 1}, + {126, 1}, }; static arc arcs_54_1[2] = { - {128, 0}, + {127, 0}, {0, 1}, }; static state states_54[2] = { @@ -1159,10 +1159,10 @@ {2, arcs_54_1}, }; static arc arcs_55_0[1] = { - {129, 1}, + {128, 1}, }; static arc arcs_55_1[2] = { - {130, 0}, + {129, 0}, {0, 1}, }; static state states_55[2] = { @@ -1170,23 +1170,22 @@ {2, arcs_55_1}, }; static arc arcs_56_0[1] = { - {131, 1}, + {130, 1}, }; -static arc arcs_56_1[3] = { - {132, 0}, - {57, 0}, +static arc arcs_56_1[2] = { + {131, 0}, {0, 1}, }; static state states_56[2] = { {1, arcs_56_0}, - {3, arcs_56_1}, + {2, arcs_56_1}, }; static arc arcs_57_0[1] = { - {133, 1}, + {132, 1}, }; static arc arcs_57_1[3] = { - {134, 0}, - {135, 0}, + {133, 0}, + {59, 0}, {0, 1}, }; static state states_57[2] = { @@ -1194,156 +1193,142 @@ {3, arcs_57_1}, }; static arc arcs_58_0[1] = { - {136, 1}, + {134, 1}, }; -static arc arcs_58_1[5] = { - {28, 0}, - {137, 0}, - {138, 0}, - {139, 0}, +static arc arcs_58_1[3] = { + {135, 0}, + {136, 0}, {0, 1}, }; static state states_58[2] = { {1, arcs_58_0}, - {5, arcs_58_1}, + {3, arcs_58_1}, }; -static arc arcs_59_0[4] = { - {134, 1}, +static arc arcs_59_0[1] = { + {137, 1}, +}; +static arc arcs_59_1[5] = { + {30, 0}, + {138, 0}, + {139, 0}, + {140, 0}, + {0, 1}, +}; +static state states_59[2] = { + {1, arcs_59_0}, + {5, arcs_59_1}, +}; +static arc arcs_60_0[4] = { {135, 1}, - {140, 1}, - {141, 2}, + {136, 1}, + {141, 1}, + {142, 2}, }; -static arc arcs_59_1[1] = { - {136, 2}, +static arc arcs_60_1[1] = { + {137, 2}, }; -static arc arcs_59_2[1] = { +static arc arcs_60_2[1] = { {0, 2}, }; -static state states_59[3] = { - {4, arcs_59_0}, - {1, arcs_59_1}, - {1, arcs_59_2}, -}; -static arc arcs_60_0[1] = { - {142, 1}, +static state states_60[3] = { + {4, arcs_60_0}, + {1, arcs_60_1}, + {1, arcs_60_2}, }; -static arc arcs_60_1[3] = { +static arc arcs_61_0[1] = { {143, 1}, - {29, 2}, +}; +static arc arcs_61_1[3] = { + {144, 1}, + {31, 2}, {0, 1}, }; -static arc arcs_60_2[1] = { - {136, 3}, +static arc arcs_61_2[1] = { + {137, 3}, }; -static arc arcs_60_3[1] = { +static arc arcs_61_3[1] = { {0, 3}, }; -static state states_60[4] = { - {1, arcs_60_0}, - {3, arcs_60_1}, - {1, arcs_60_2}, - {1, arcs_60_3}, +static state states_61[4] = { + {1, arcs_61_0}, + {3, arcs_61_1}, + {1, arcs_61_2}, + {1, arcs_61_3}, }; -static arc arcs_61_0[7] = { +static arc arcs_62_0[7] = { {13, 1}, - {145, 2}, - {148, 3}, - {151, 4}, - {19, 5}, - {153, 5}, - {154, 6}, + {146, 2}, + {149, 3}, + {152, 4}, + {21, 5}, + {154, 5}, + {155, 6}, }; -static arc arcs_61_1[3] = { - {43, 7}, - {144, 7}, +static arc arcs_62_1[3] = { + {45, 7}, + {145, 7}, {15, 5}, }; -static arc arcs_61_2[2] = { - {146, 8}, - {147, 5}, -}; -static arc arcs_61_3[2] = { - {149, 9}, - {150, 5}, +static arc arcs_62_2[2] = { + {147, 8}, + {148, 5}, }; -static arc arcs_61_4[1] = { - {152, 10}, +static arc arcs_62_3[2] = { + {150, 9}, + {151, 5}, +}; +static arc arcs_62_4[1] = { + {153, 10}, }; -static arc arcs_61_5[1] = { +static arc arcs_62_5[1] = { {0, 5}, }; -static arc arcs_61_6[2] = { - {154, 6}, +static arc arcs_62_6[2] = { + {155, 6}, {0, 6}, }; -static arc arcs_61_7[1] = { +static arc arcs_62_7[1] = { {15, 5}, }; -static arc arcs_61_8[1] = { - {147, 5}, +static arc arcs_62_8[1] = { + {148, 5}, }; -static arc arcs_61_9[1] = { - {150, 5}, -}; -static arc arcs_61_10[1] = { +static arc arcs_62_9[1] = { {151, 5}, }; -static state states_61[11] = { - {7, arcs_61_0}, - {3, arcs_61_1}, - {2, arcs_61_2}, - {2, arcs_61_3}, - {1, arcs_61_4}, - {1, arcs_61_5}, - {2, arcs_61_6}, - {1, arcs_61_7}, - {1, arcs_61_8}, - {1, arcs_61_9}, - {1, arcs_61_10}, -}; -static arc arcs_62_0[1] = { - {26, 1}, -}; -static arc arcs_62_1[3] = { - {155, 2}, - {27, 3}, - {0, 1}, -}; -static arc arcs_62_2[1] = { - {0, 2}, -}; -static arc arcs_62_3[2] = { - {26, 4}, - {0, 3}, -}; -static arc arcs_62_4[2] = { - {27, 3}, - {0, 4}, +static arc arcs_62_10[1] = { + {152, 5}, }; -static state states_62[5] = { - {1, arcs_62_0}, +static state states_62[11] = { + {7, arcs_62_0}, {3, arcs_62_1}, - {1, arcs_62_2}, + {2, arcs_62_2}, {2, arcs_62_3}, - {2, arcs_62_4}, + {1, arcs_62_4}, + {1, arcs_62_5}, + {2, arcs_62_6}, + {1, arcs_62_7}, + {1, arcs_62_8}, + {1, arcs_62_9}, + {1, arcs_62_10}, }; static arc arcs_63_0[1] = { - {26, 1}, + {28, 1}, }; static arc arcs_63_1[3] = { {156, 2}, - {27, 3}, + {29, 3}, {0, 1}, }; static arc arcs_63_2[1] = { {0, 2}, }; static arc arcs_63_3[2] = { - {26, 4}, + {28, 4}, {0, 3}, }; static arc arcs_63_4[2] = { - {27, 3}, + {29, 3}, {0, 4}, }; static state states_63[5] = { @@ -1354,153 +1339,163 @@ {2, arcs_63_4}, }; static arc arcs_64_0[1] = { - {108, 1}, + {28, 1}, }; -static arc arcs_64_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_64_1[3] = { + {157, 2}, + {29, 3}, + {0, 1}, }; static arc arcs_64_2[1] = { - {21, 3}, + {0, 2}, }; -static arc arcs_64_3[1] = { - {26, 4}, +static arc arcs_64_3[2] = { + {28, 4}, + {0, 3}, }; -static arc arcs_64_4[1] = { +static arc arcs_64_4[2] = { + {29, 3}, {0, 4}, }; static state states_64[5] = { {1, arcs_64_0}, - {2, arcs_64_1}, + {3, arcs_64_1}, {1, arcs_64_2}, - {1, arcs_64_3}, - {1, arcs_64_4}, + {2, arcs_64_3}, + {2, arcs_64_4}, }; -static arc arcs_65_0[3] = { - {13, 1}, - {145, 2}, - {75, 3}, +static arc arcs_65_0[1] = { + {109, 1}, }; static arc arcs_65_1[2] = { - {14, 4}, - {15, 5}, + {25, 2}, + {23, 3}, }; static arc arcs_65_2[1] = { - {157, 6}, + {23, 3}, }; static arc arcs_65_3[1] = { - {19, 5}, + {28, 4}, }; static arc arcs_65_4[1] = { - {15, 5}, -}; -static arc arcs_65_5[1] = { - {0, 5}, -}; -static arc arcs_65_6[1] = { - {147, 5}, + {0, 4}, }; -static state states_65[7] = { - {3, arcs_65_0}, +static state states_65[5] = { + {1, arcs_65_0}, {2, arcs_65_1}, {1, arcs_65_2}, {1, arcs_65_3}, {1, arcs_65_4}, - {1, arcs_65_5}, - {1, arcs_65_6}, }; -static arc arcs_66_0[1] = { - {158, 1}, +static arc arcs_66_0[3] = { + {13, 1}, + {146, 2}, + {77, 3}, }; static arc arcs_66_1[2] = { - {27, 2}, - {0, 1}, + {14, 4}, + {15, 5}, }; -static arc arcs_66_2[2] = { - {158, 1}, - {0, 2}, +static arc arcs_66_2[1] = { + {158, 6}, +}; +static arc arcs_66_3[1] = { + {21, 5}, +}; +static arc arcs_66_4[1] = { + {15, 5}, +}; +static arc arcs_66_5[1] = { + {0, 5}, }; -static state states_66[3] = { - {1, arcs_66_0}, +static arc arcs_66_6[1] = { + {148, 5}, +}; +static state states_66[7] = { + {3, arcs_66_0}, {2, arcs_66_1}, - {2, arcs_66_2}, + {1, arcs_66_2}, + {1, arcs_66_3}, + {1, arcs_66_4}, + {1, arcs_66_5}, + {1, arcs_66_6}, }; -static arc arcs_67_0[3] = { - {75, 1}, - {26, 2}, - {21, 3}, +static arc arcs_67_0[1] = { + {159, 1}, }; -static arc arcs_67_1[1] = { - {75, 4}, +static arc arcs_67_1[2] = { + {29, 2}, + {0, 1}, }; static arc arcs_67_2[2] = { - {21, 3}, + {159, 1}, {0, 2}, }; -static arc arcs_67_3[3] = { - {26, 5}, - {159, 6}, - {0, 3}, +static state states_67[3] = { + {1, arcs_67_0}, + {2, arcs_67_1}, + {2, arcs_67_2}, }; -static arc arcs_67_4[1] = { - {75, 6}, +static arc arcs_68_0[3] = { + {77, 1}, + {28, 2}, + {23, 3}, }; -static arc arcs_67_5[2] = { - {159, 6}, - {0, 5}, +static arc arcs_68_1[1] = { + {77, 4}, }; -static arc arcs_67_6[1] = { - {0, 6}, +static arc arcs_68_2[2] = { + {23, 3}, + {0, 2}, }; -static state states_67[7] = { - {3, arcs_67_0}, - {1, arcs_67_1}, - {2, arcs_67_2}, - {3, arcs_67_3}, - {1, arcs_67_4}, - {2, arcs_67_5}, - {1, arcs_67_6}, +static arc arcs_68_3[3] = { + {28, 5}, + {160, 6}, + {0, 3}, }; -static arc arcs_68_0[1] = { - {21, 1}, +static arc arcs_68_4[1] = { + {77, 6}, }; -static arc arcs_68_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_68_5[2] = { + {160, 6}, + {0, 5}, }; -static arc arcs_68_2[1] = { - {0, 2}, +static arc arcs_68_6[1] = { + {0, 6}, }; -static state states_68[3] = { - {1, arcs_68_0}, - {2, arcs_68_1}, - {1, arcs_68_2}, +static state states_68[7] = { + {3, arcs_68_0}, + {1, arcs_68_1}, + {2, arcs_68_2}, + {3, arcs_68_3}, + {1, arcs_68_4}, + {2, arcs_68_5}, + {1, arcs_68_6}, }; static arc arcs_69_0[1] = { - {82, 1}, + {23, 1}, }; static arc arcs_69_1[2] = { - {27, 2}, + {28, 2}, {0, 1}, }; -static arc arcs_69_2[2] = { - {82, 1}, +static arc arcs_69_2[1] = { {0, 2}, }; static state states_69[3] = { {1, arcs_69_0}, {2, arcs_69_1}, - {2, arcs_69_2}, + {1, arcs_69_2}, }; static arc arcs_70_0[1] = { - {26, 1}, + {84, 1}, }; static arc arcs_70_1[2] = { - {27, 2}, + {29, 2}, {0, 1}, }; static arc arcs_70_2[2] = { - {26, 1}, + {84, 1}, {0, 2}, }; static state states_70[3] = { @@ -1509,491 +1504,511 @@ {2, arcs_70_2}, }; static arc arcs_71_0[1] = { - {26, 1}, -}; -static arc arcs_71_1[1] = { - {21, 2}, + {28, 1}, }; -static arc arcs_71_2[1] = { - {26, 3}, -}; -static arc arcs_71_3[2] = { - {27, 4}, - {0, 3}, +static arc arcs_71_1[2] = { + {29, 2}, + {0, 1}, }; -static arc arcs_71_4[2] = { - {26, 1}, - {0, 4}, +static arc arcs_71_2[2] = { + {28, 1}, + {0, 2}, }; -static state states_71[5] = { +static state states_71[3] = { {1, arcs_71_0}, - {1, arcs_71_1}, - {1, arcs_71_2}, - {2, arcs_71_3}, - {2, arcs_71_4}, + {2, arcs_71_1}, + {2, arcs_71_2}, }; static arc arcs_72_0[1] = { - {160, 1}, + {28, 1}, }; static arc arcs_72_1[1] = { - {19, 2}, + {23, 2}, }; -static arc arcs_72_2[2] = { - {13, 3}, - {21, 4}, +static arc arcs_72_2[1] = { + {28, 3}, }; static arc arcs_72_3[2] = { - {9, 5}, - {15, 6}, -}; -static arc arcs_72_4[1] = { - {22, 7}, -}; -static arc arcs_72_5[1] = { - {15, 6}, -}; -static arc arcs_72_6[1] = { - {21, 4}, + {29, 4}, + {0, 3}, }; -static arc arcs_72_7[1] = { - {0, 7}, +static arc arcs_72_4[2] = { + {28, 1}, + {0, 4}, }; -static state states_72[8] = { +static state states_72[5] = { {1, arcs_72_0}, {1, arcs_72_1}, - {2, arcs_72_2}, + {1, arcs_72_2}, {2, arcs_72_3}, - {1, arcs_72_4}, - {1, arcs_72_5}, - {1, arcs_72_6}, - {1, arcs_72_7}, + {2, arcs_72_4}, }; -static arc arcs_73_0[3] = { +static arc arcs_73_0[1] = { {161, 1}, - {28, 2}, - {29, 3}, }; -static arc arcs_73_1[2] = { - {27, 4}, - {0, 1}, +static arc arcs_73_1[1] = { + {21, 2}, }; -static arc arcs_73_2[1] = { - {26, 5}, +static arc arcs_73_2[2] = { + {13, 3}, + {23, 4}, }; -static arc arcs_73_3[1] = { - {26, 6}, +static arc arcs_73_3[2] = { + {9, 5}, + {15, 6}, }; -static arc arcs_73_4[4] = { - {161, 1}, - {28, 2}, - {29, 3}, - {0, 4}, +static arc arcs_73_4[1] = { + {24, 7}, }; -static arc arcs_73_5[2] = { - {27, 7}, - {0, 5}, +static arc arcs_73_5[1] = { + {15, 6}, }; static arc arcs_73_6[1] = { - {0, 6}, + {23, 4}, }; static arc arcs_73_7[1] = { - {29, 3}, + {0, 7}, }; static state states_73[8] = { - {3, arcs_73_0}, - {2, arcs_73_1}, - {1, arcs_73_2}, - {1, arcs_73_3}, - {4, arcs_73_4}, - {2, arcs_73_5}, + {1, arcs_73_0}, + {1, arcs_73_1}, + {2, arcs_73_2}, + {2, arcs_73_3}, + {1, arcs_73_4}, + {1, arcs_73_5}, {1, arcs_73_6}, {1, arcs_73_7}, }; -static arc arcs_74_0[1] = { - {26, 1}, +static arc arcs_74_0[3] = { + {162, 1}, + {30, 2}, + {31, 3}, }; -static arc arcs_74_1[3] = { - {156, 2}, - {25, 3}, +static arc arcs_74_1[2] = { + {29, 4}, {0, 1}, }; static arc arcs_74_2[1] = { - {0, 2}, + {28, 5}, }; static arc arcs_74_3[1] = { - {26, 2}, + {28, 6}, +}; +static arc arcs_74_4[4] = { + {162, 1}, + {30, 2}, + {31, 3}, + {0, 4}, +}; +static arc arcs_74_5[2] = { + {29, 7}, + {0, 5}, +}; +static arc arcs_74_6[1] = { + {0, 6}, +}; +static arc arcs_74_7[1] = { + {31, 3}, }; -static state states_74[4] = { - {1, arcs_74_0}, - {3, arcs_74_1}, +static state states_74[8] = { + {3, arcs_74_0}, + {2, arcs_74_1}, {1, arcs_74_2}, {1, arcs_74_3}, + {4, arcs_74_4}, + {2, arcs_74_5}, + {1, arcs_74_6}, + {1, arcs_74_7}, }; -static arc arcs_75_0[2] = { - {155, 1}, - {163, 1}, +static arc arcs_75_0[1] = { + {28, 1}, }; -static arc arcs_75_1[1] = { +static arc arcs_75_1[3] = { + {157, 2}, + {27, 3}, {0, 1}, }; -static state states_75[2] = { - {2, arcs_75_0}, - {1, arcs_75_1}, -}; -static arc arcs_76_0[1] = { - {95, 1}, -}; -static arc arcs_76_1[1] = { - {59, 2}, +static arc arcs_75_2[1] = { + {0, 2}, }; -static arc arcs_76_2[1] = { - {83, 3}, +static arc arcs_75_3[1] = { + {28, 2}, }; -static arc arcs_76_3[1] = { - {104, 4}, +static state states_75[4] = { + {1, arcs_75_0}, + {3, arcs_75_1}, + {1, arcs_75_2}, + {1, arcs_75_3}, }; -static arc arcs_76_4[2] = { - {162, 5}, - {0, 4}, +static arc arcs_76_0[2] = { + {156, 1}, + {164, 1}, }; -static arc arcs_76_5[1] = { - {0, 5}, +static arc arcs_76_1[1] = { + {0, 1}, }; -static state states_76[6] = { - {1, arcs_76_0}, +static state states_76[2] = { + {2, arcs_76_0}, {1, arcs_76_1}, - {1, arcs_76_2}, - {1, arcs_76_3}, - {2, arcs_76_4}, - {1, arcs_76_5}, }; static arc arcs_77_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_77_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_77_2[2] = { - {162, 3}, - {0, 2}, +static arc arcs_77_2[1] = { + {85, 3}, }; static arc arcs_77_3[1] = { - {0, 3}, + {105, 4}, +}; +static arc arcs_77_4[2] = { + {163, 5}, + {0, 4}, }; -static state states_77[4] = { +static arc arcs_77_5[1] = { + {0, 5}, +}; +static state states_77[6] = { {1, arcs_77_0}, {1, arcs_77_1}, - {2, arcs_77_2}, + {1, arcs_77_2}, {1, arcs_77_3}, + {2, arcs_77_4}, + {1, arcs_77_5}, }; -static arc arcs_78_0[2] = { - {156, 1}, - {165, 1}, +static arc arcs_78_0[1] = { + {92, 1}, }; static arc arcs_78_1[1] = { - {0, 1}, -}; -static state states_78[2] = { - {2, arcs_78_0}, - {1, arcs_78_1}, -}; -static arc arcs_79_0[1] = { - {95, 1}, + {106, 2}, }; -static arc arcs_79_1[1] = { - {59, 2}, +static arc arcs_78_2[2] = { + {163, 3}, + {0, 2}, }; -static arc arcs_79_2[1] = { - {83, 3}, +static arc arcs_78_3[1] = { + {0, 3}, }; -static arc arcs_79_3[1] = { - {106, 4}, +static state states_78[4] = { + {1, arcs_78_0}, + {1, arcs_78_1}, + {2, arcs_78_2}, + {1, arcs_78_3}, }; -static arc arcs_79_4[2] = { - {164, 5}, - {0, 4}, +static arc arcs_79_0[2] = { + {157, 1}, + {166, 1}, }; -static arc arcs_79_5[1] = { - {0, 5}, +static arc arcs_79_1[1] = { + {0, 1}, }; -static state states_79[6] = { - {1, arcs_79_0}, +static state states_79[2] = { + {2, arcs_79_0}, {1, arcs_79_1}, - {1, arcs_79_2}, - {1, arcs_79_3}, - {2, arcs_79_4}, - {1, arcs_79_5}, }; static arc arcs_80_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_80_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_80_2[2] = { - {164, 3}, - {0, 2}, +static arc arcs_80_2[1] = { + {85, 3}, }; static arc arcs_80_3[1] = { - {0, 3}, + {107, 4}, }; -static state states_80[4] = { +static arc arcs_80_4[2] = { + {165, 5}, + {0, 4}, +}; +static arc arcs_80_5[1] = { + {0, 5}, +}; +static state states_80[6] = { {1, arcs_80_0}, {1, arcs_80_1}, - {2, arcs_80_2}, + {1, arcs_80_2}, {1, arcs_80_3}, + {2, arcs_80_4}, + {1, arcs_80_5}, }; static arc arcs_81_0[1] = { - {26, 1}, + {92, 1}, }; -static arc arcs_81_1[2] = { - {27, 0}, - {0, 1}, +static arc arcs_81_1[1] = { + {106, 2}, +}; +static arc arcs_81_2[2] = { + {165, 3}, + {0, 2}, +}; +static arc arcs_81_3[1] = { + {0, 3}, }; -static state states_81[2] = { +static state states_81[4] = { {1, arcs_81_0}, - {2, arcs_81_1}, + {1, arcs_81_1}, + {2, arcs_81_2}, + {1, arcs_81_3}, }; static arc arcs_82_0[1] = { - {19, 1}, + {28, 1}, }; -static arc arcs_82_1[1] = { +static arc arcs_82_1[2] = { + {29, 0}, {0, 1}, }; static state states_82[2] = { {1, arcs_82_0}, - {1, arcs_82_1}, + {2, arcs_82_1}, }; static arc arcs_83_0[1] = { - {167, 1}, + {21, 1}, +}; +static arc arcs_83_1[1] = { + {0, 1}, +}; +static state states_83[2] = { + {1, arcs_83_0}, + {1, arcs_83_1}, +}; +static arc arcs_84_0[1] = { + {168, 1}, }; -static arc arcs_83_1[2] = { +static arc arcs_84_1[2] = { {9, 2}, {0, 1}, }; -static arc arcs_83_2[1] = { +static arc arcs_84_2[1] = { {0, 2}, }; -static state states_83[3] = { - {1, arcs_83_0}, - {2, arcs_83_1}, - {1, arcs_83_2}, +static state states_84[3] = { + {1, arcs_84_0}, + {2, arcs_84_1}, + {1, arcs_84_2}, }; -static dfa dfas[84] = { +static dfa dfas[85] = { {256, "single_input", 0, 3, states_0, - "\004\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {257, "file_input", 0, 2, states_1, - "\204\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {258, "eval_input", 0, 3, states_2, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {259, "decorator", 0, 7, states_3, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 0, 2, states_4, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {261, "funcdef", 0, 7, states_5, - "\000\010\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {262, "parameters", 0, 4, states_6, - "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {263, "varargslist", 0, 10, states_7, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {264, "fpdef", 0, 4, states_8, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {265, "fplist", 0, 3, states_9, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {266, "stmt", 0, 2, states_10, - "\000\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, - {267, "simple_stmt", 0, 4, states_11, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {268, "small_stmt", 0, 2, states_12, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {269, "expr_stmt", 0, 6, states_13, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {270, "augassign", 0, 2, states_14, - "\000\000\000\000\000\360\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {271, "print_stmt", 0, 9, states_15, - "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {272, "del_stmt", 0, 3, states_16, - "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {273, "pass_stmt", 0, 2, states_17, - "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {274, "flow_stmt", 0, 2, states_18, - "\000\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\200"}, - {275, "break_stmt", 0, 2, states_19, - "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, - {276, "continue_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"}, - {277, "return_stmt", 0, 3, states_21, - "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "yield_stmt", 0, 2, states_22, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, - {279, "raise_stmt", 0, 7, states_23, - "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, - {280, "import_stmt", 0, 2, states_24, - "\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000"}, - {281, "import_name", 0, 3, states_25, - "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, - {282, "import_from", 0, 8, states_26, - "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, - {283, "import_as_name", 0, 4, states_27, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {284, "dotted_as_name", 0, 4, states_28, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {285, "import_as_names", 0, 3, states_29, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {286, "dotted_as_names", 0, 2, states_30, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {287, "dotted_name", 0, 2, states_31, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {288, "global_stmt", 0, 3, states_32, - "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, - {289, "exec_stmt", 0, 7, states_33, - "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"}, - {290, "assert_stmt", 0, 5, states_34, - "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {291, "compound_stmt", 0, 2, states_35, - "\000\010\004\000\000\000\000\000\000\000\000\310\011\000\000\000\000\000\000\000\001"}, - {292, "if_stmt", 0, 8, states_36, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {293, "while_stmt", 0, 8, states_37, - "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, - {294, "for_stmt", 0, 10, states_38, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {295, "try_stmt", 0, 13, states_39, - "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, - {296, "with_stmt", 0, 6, states_40, - "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"}, - {297, "with_var", 0, 3, states_41, - "\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, - {298, "except_clause", 0, 5, states_42, - "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, - {299, "suite", 0, 5, states_43, - "\004\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {300, "testlist_safe", 0, 5, states_44, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {301, "old_test", 0, 2, states_45, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {302, "old_lambdef", 0, 5, states_46, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {303, "test", 0, 6, states_47, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {304, "or_test", 0, 2, states_48, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {305, "and_test", 0, 2, states_49, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {306, "not_test", 0, 3, states_50, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {307, "comparison", 0, 2, states_51, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {308, "comp_op", 0, 4, states_52, - "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\344\037\000\000\000\000\000"}, - {309, "expr", 0, 2, states_53, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {310, "xor_expr", 0, 2, states_54, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {311, "and_expr", 0, 2, states_55, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {312, "shift_expr", 0, 2, states_56, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {313, "arith_expr", 0, 2, states_57, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {314, "term", 0, 2, states_58, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {315, "factor", 0, 3, states_59, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {316, "power", 0, 4, states_60, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {317, "atom", 0, 11, states_61, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {318, "listmaker", 0, 5, states_62, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {319, "testlist_gexp", 0, 5, states_63, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {320, "lambdef", 0, 5, states_64, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {321, "trailer", 0, 7, states_65, - "\000\040\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\002\000\000"}, - {322, "subscriptlist", 0, 3, states_66, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {323, "subscript", 0, 7, states_67, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {324, "sliceop", 0, 3, states_68, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {325, "exprlist", 0, 3, states_69, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {326, "testlist", 0, 3, states_70, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {327, "dictmaker", 0, 5, states_71, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {328, "classdef", 0, 8, states_72, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {329, "arglist", 0, 8, states_73, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {330, "argument", 0, 4, states_74, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {331, "list_iter", 0, 2, states_75, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {332, "list_for", 0, 6, states_76, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {333, "list_if", 0, 4, states_77, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {334, "gen_iter", 0, 2, states_78, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {335, "gen_for", 0, 6, states_79, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {336, "gen_if", 0, 4, states_80, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {337, "testlist1", 0, 2, states_81, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {338, "encoding_decl", 0, 2, states_82, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {339, "yield_expr", 0, 3, states_83, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {261, "decorated", 0, 3, states_5, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {262, "funcdef", 0, 6, states_6, + "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {263, "parameters", 0, 4, states_7, + "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {264, "varargslist", 0, 10, states_8, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {265, "fpdef", 0, 4, states_9, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {266, "fplist", 0, 3, states_10, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {267, "stmt", 0, 2, states_11, + "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + {268, "simple_stmt", 0, 4, states_12, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {269, "small_stmt", 0, 2, states_13, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {270, "expr_stmt", 0, 6, states_14, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {271, "augassign", 0, 2, states_15, + "\000\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {272, "print_stmt", 0, 9, states_16, + "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {273, "del_stmt", 0, 3, states_17, + "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {274, "pass_stmt", 0, 2, states_18, + "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {275, "flow_stmt", 0, 2, states_19, + "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {276, "break_stmt", 0, 2, states_20, + "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {277, "continue_stmt", 0, 2, states_21, + "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {278, "return_stmt", 0, 3, states_22, + "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {279, "yield_stmt", 0, 2, states_23, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {280, "raise_stmt", 0, 7, states_24, + "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {281, "import_stmt", 0, 2, states_25, + "\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000"}, + {282, "import_name", 0, 3, states_26, + "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, + {283, "import_from", 0, 8, states_27, + "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + {284, "import_as_name", 0, 4, states_28, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {285, "dotted_as_name", 0, 4, states_29, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {286, "import_as_names", 0, 3, states_30, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {287, "dotted_as_names", 0, 2, states_31, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {288, "dotted_name", 0, 2, states_32, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {289, "global_stmt", 0, 3, states_33, + "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, + {290, "exec_stmt", 0, 7, states_34, + "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"}, + {291, "assert_stmt", 0, 5, states_35, + "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, + {292, "compound_stmt", 0, 2, states_36, + "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\002\000"}, + {293, "if_stmt", 0, 8, states_37, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {294, "while_stmt", 0, 8, states_38, + "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, + {295, "for_stmt", 0, 10, states_39, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {296, "try_stmt", 0, 13, states_40, + "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, + {297, "with_stmt", 0, 6, states_41, + "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + {298, "with_var", 0, 3, states_42, + "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, + {299, "except_clause", 0, 5, states_43, + "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, + {300, "suite", 0, 5, states_44, + "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {301, "testlist_safe", 0, 5, states_45, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {302, "old_test", 0, 2, states_46, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {303, "old_lambdef", 0, 5, states_47, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {304, "test", 0, 6, states_48, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {305, "or_test", 0, 2, states_49, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {306, "and_test", 0, 2, states_50, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {307, "not_test", 0, 3, states_51, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {308, "comparison", 0, 2, states_52, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {309, "comp_op", 0, 4, states_53, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\310\077\000\000\000\000\000\000"}, + {310, "expr", 0, 2, states_54, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {311, "xor_expr", 0, 2, states_55, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {312, "and_expr", 0, 2, states_56, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {313, "shift_expr", 0, 2, states_57, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {314, "arith_expr", 0, 2, states_58, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {315, "term", 0, 2, states_59, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {316, "factor", 0, 3, states_60, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {317, "power", 0, 4, states_61, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {318, "atom", 0, 11, states_62, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {319, "listmaker", 0, 5, states_63, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {320, "testlist_gexp", 0, 5, states_64, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {321, "lambdef", 0, 5, states_65, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {322, "trailer", 0, 7, states_66, + "\000\040\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\004\000\000\000"}, + {323, "subscriptlist", 0, 3, states_67, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {324, "subscript", 0, 7, states_68, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {325, "sliceop", 0, 3, states_69, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {326, "exprlist", 0, 3, states_70, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {327, "testlist", 0, 3, states_71, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {328, "dictmaker", 0, 5, states_72, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {329, "classdef", 0, 8, states_73, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, + {330, "arglist", 0, 8, states_74, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {331, "argument", 0, 4, states_75, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {332, "list_iter", 0, 2, states_76, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {333, "list_for", 0, 6, states_77, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {334, "list_if", 0, 4, states_78, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {335, "gen_iter", 0, 2, states_79, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {336, "gen_for", 0, 6, states_80, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {337, "gen_if", 0, 4, states_81, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {338, "testlist1", 0, 2, states_82, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {339, "encoding_decl", 0, 2, states_83, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {340, "yield_expr", 0, 3, states_84, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, }; -static label labels[168] = { +static label labels[169] = { {0, "EMPTY"}, {256, 0}, {4, 0}, - {267, 0}, - {291, 0}, + {268, 0}, + {292, 0}, {257, 0}, - {266, 0}, + {267, 0}, {0, 0}, {258, 0}, - {326, 0}, + {327, 0}, {259, 0}, {50, 0}, - {287, 0}, + {288, 0}, {7, 0}, - {329, 0}, + {330, 0}, {8, 0}, {260, 0}, {261, 0}, + {329, 0}, + {262, 0}, {1, "def"}, {1, 0}, - {262, 0}, - {11, 0}, - {299, 0}, {263, 0}, + {11, 0}, + {300, 0}, {264, 0}, + {265, 0}, {22, 0}, - {303, 0}, + {304, 0}, {12, 0}, {16, 0}, {36, 0}, - {265, 0}, - {268, 0}, - {13, 0}, + {266, 0}, {269, 0}, - {271, 0}, + {13, 0}, + {270, 0}, {272, 0}, {273, 0}, {274, 0}, - {280, 0}, - {288, 0}, + {275, 0}, + {281, 0}, {289, 0}, {290, 0}, - {270, 0}, - {339, 0}, + {291, 0}, + {271, 0}, + {340, 0}, {37, 0}, {38, 0}, {39, 0}, @@ -2009,64 +2024,63 @@ {1, "print"}, {35, 0}, {1, "del"}, - {325, 0}, + {326, 0}, {1, "pass"}, - {275, 0}, {276, 0}, {277, 0}, - {279, 0}, {278, 0}, + {280, 0}, + {279, 0}, {1, "break"}, {1, "continue"}, {1, "return"}, {1, "raise"}, - {281, 0}, {282, 0}, + {283, 0}, {1, "import"}, - {286, 0}, + {287, 0}, {1, "from"}, {23, 0}, - {285, 0}, - {283, 0}, - {1, "as"}, + {286, 0}, {284, 0}, + {1, "as"}, + {285, 0}, {1, "global"}, {1, "exec"}, - {309, 0}, + {310, 0}, {1, "in"}, {1, "assert"}, - {292, 0}, {293, 0}, {294, 0}, {295, 0}, {296, 0}, - {328, 0}, + {297, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, {1, "while"}, {1, "for"}, {1, "try"}, - {298, 0}, + {299, 0}, {1, "finally"}, {1, "with"}, - {297, 0}, + {298, 0}, {1, "except"}, {5, 0}, {6, 0}, - {300, 0}, {301, 0}, - {304, 0}, {302, 0}, - {1, "lambda"}, - {320, 0}, {305, 0}, - {1, "or"}, + {303, 0}, + {1, "lambda"}, + {321, 0}, {306, 0}, + {1, "or"}, + {307, 0}, {1, "and"}, {1, "not"}, - {307, 0}, {308, 0}, + {309, 0}, {20, 0}, {21, 0}, {28, 0}, @@ -2075,53 +2089,53 @@ {29, 0}, {29, 0}, {1, "is"}, - {310, 0}, - {18, 0}, {311, 0}, - {33, 0}, + {18, 0}, {312, 0}, - {19, 0}, + {33, 0}, {313, 0}, - {34, 0}, + {19, 0}, {314, 0}, + {34, 0}, + {315, 0}, {14, 0}, {15, 0}, - {315, 0}, + {316, 0}, {17, 0}, {24, 0}, {48, 0}, {32, 0}, - {316, 0}, {317, 0}, - {321, 0}, - {319, 0}, - {9, 0}, {318, 0}, + {322, 0}, + {320, 0}, + {9, 0}, + {319, 0}, {10, 0}, {26, 0}, - {327, 0}, + {328, 0}, {27, 0}, {25, 0}, - {337, 0}, + {338, 0}, {2, 0}, {3, 0}, - {332, 0}, - {335, 0}, - {322, 0}, + {333, 0}, + {336, 0}, {323, 0}, {324, 0}, + {325, 0}, {1, "class"}, - {330, 0}, {331, 0}, - {333, 0}, + {332, 0}, {334, 0}, - {336, 0}, - {338, 0}, + {335, 0}, + {337, 0}, + {339, 0}, {1, "yield"}, }; grammar _PyParser_Grammar = { - 84, + 85, dfas, - {168, labels}, + {169, labels}, 256 }; Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Sat Feb 23 16:01:05 2008 @@ -931,8 +931,8 @@ return 0; if (s->v.FunctionDef.args->defaults) VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults); - if (s->v.FunctionDef.decorators) - VISIT_SEQ(st, expr, s->v.FunctionDef.decorators); + if (s->v.FunctionDef.decorator_list) + VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list); if (!symtable_enter_block(st, s->v.FunctionDef.name, FunctionBlock, (void *)s, s->lineno)) return 0; @@ -946,6 +946,8 @@ if (!symtable_add_def(st, s->v.ClassDef.name, DEF_LOCAL)) return 0; VISIT_SEQ(st, expr, s->v.ClassDef.bases); + if (s->v.ClassDef.decorator_list) + VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list); if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock, (void *)s, s->lineno)) return 0; From python-checkins at python.org Sat Feb 23 16:02:29 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:02:29 +0100 (CET) Subject: [Python-checkins] r60980 - in python/trunk: Doc/library/basehttpserver.rst Lib/BaseHTTPServer.py Misc/NEWS Message-ID: <20080223150229.178301E401E@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:02:28 2008 New Revision: 60980 Modified: python/trunk/Doc/library/basehttpserver.rst python/trunk/Lib/BaseHTTPServer.py python/trunk/Misc/NEWS Log: #1492: allow overriding BaseHTTPServer's content type for error messages. Modified: python/trunk/Doc/library/basehttpserver.rst ============================================================================== --- python/trunk/Doc/library/basehttpserver.rst (original) +++ python/trunk/Doc/library/basehttpserver.rst Sat Feb 23 16:02:28 2008 @@ -122,6 +122,15 @@ class variable. +.. attribute:: BaseHTTPRequestHandler.error_content_type + + Specifies the Content-Type HTTP header of error responses sent to the client. + The default value is ``'text/html'``. + + .. versionadded:: 2.6 + Previously, the content type was always ``'text/html'``. + + .. attribute:: BaseHTTPRequestHandler.protocol_version This specifies the HTTP protocol version used in responses. If set to Modified: python/trunk/Lib/BaseHTTPServer.py ============================================================================== --- python/trunk/Lib/BaseHTTPServer.py (original) +++ python/trunk/Lib/BaseHTTPServer.py Sat Feb 23 16:02:28 2008 @@ -76,7 +76,7 @@ import mimetools import SocketServer -# Default error message +# Default error message template DEFAULT_ERROR_MESSAGE = """\ Error response @@ -89,6 +89,8 @@ """ +DEFAULT_ERROR_CONTENT_TYPE = "text/html" + def _quote_html(html): return html.replace("&", "&").replace("<", "<").replace(">", ">") @@ -342,13 +344,14 @@ content = (self.error_message_format % {'code': code, 'message': _quote_html(message), 'explain': explain}) self.send_response(code, message) - self.send_header("Content-Type", "text/html") + self.send_header("Content-Type", self.error_content_type) self.send_header('Connection', 'close') self.end_headers() if self.command != 'HEAD' and code >= 200 and code not in (204, 304): self.wfile.write(content) error_message_format = DEFAULT_ERROR_MESSAGE + error_content_type = DEFAULT_ERROR_CONTENT_TYPE def send_response(self, code, message=None): """Send the response header and log the response code. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 16:02:28 2008 @@ -436,6 +436,9 @@ Library ------- +- #1492: The content type of BaseHTTPServer error messages can now be + overridden. + - Issue 1781: ConfigParser now does not let you add the "default" section (ignore-case) From python-checkins at python.org Sat Feb 23 16:06:25 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:06:25 +0100 (CET) Subject: [Python-checkins] r60982 - python/trunk/Lib/test/test_logging.py Message-ID: <20080223150625.614E51E401B@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:06:25 2008 New Revision: 60982 Modified: python/trunk/Lib/test/test_logging.py Log: #2165: fix test_logging failure on some machines. Modified: python/trunk/Lib/test/test_logging.py ============================================================================== --- python/trunk/Lib/test/test_logging.py (original) +++ python/trunk/Lib/test/test_logging.py Sat Feb 23 16:06:25 2008 @@ -2009,7 +2009,7 @@ port=logging.handlers.DEFAULT_TCP_LOGGING_PORT, handler=LogRecordStreamHandler): ThreadingTCPServer.__init__(self, (host, port), handler) - self.abort = 0 + self.abort = False self.timeout = 1 def serve_until_stopped(self): @@ -2018,11 +2018,11 @@ self.timeout) if rd: self.handle_request() + socketDataProcessed.set() # close the listen socket self.server_close() def process_request(self, request, client_address): - #import threading t = threading.Thread(target = self.finish_request, args = (request, client_address)) t.start() @@ -2107,28 +2107,18 @@ rootLogger = logging.getLogger("") rootLogger.setLevel(logging.DEBUG) - # Find an unused port number - port = logging.handlers.DEFAULT_TCP_LOGGING_PORT - while port < logging.handlers.DEFAULT_TCP_LOGGING_PORT+100: - try: - tcpserver = LogRecordSocketReceiver(port=port) - except socket.error: - port += 1 - else: - break - else: - raise ImportError, "Could not find unused port" - - - #Set up a handler such that all events are sent via a socket to the log - #receiver (logrecv). - #The handler will only be added to the rootLogger for some of the tests + tcpserver = LogRecordSocketReceiver(port=0) + port = tcpserver.socket.getsockname()[1] + + # Set up a handler such that all events are sent via a socket to the log + # receiver (logrecv). + # The handler will only be added to the rootLogger for some of the tests shdlr = logging.handlers.SocketHandler('localhost', port) rootLogger.addHandler(shdlr) - #Configure the logger for logrecv so events do not propagate beyond it. - #The sockLogger output is buffered in memory until the end of the test, - #and printed at the end. + # Configure the logger for logrecv so events do not propagate beyond it. + # The sockLogger output is buffered in memory until the end of the test, + # and printed at the end. sockOut = cStringIO.StringIO() sockLogger = logging.getLogger("logrecv") sockLogger.setLevel(logging.DEBUG) @@ -2157,9 +2147,9 @@ finally: #wait for TCP receiver to terminate -# socketDataProcessed.wait() + socketDataProcessed.wait() # ensure the server dies - tcpserver.abort = 1 + tcpserver.abort = True for thread in threads: thread.join(2.0) print(sockOut.getvalue()) From python-checkins at python.org Sat Feb 23 16:07:36 2008 From: python-checkins at python.org (facundo.batista) Date: Sat, 23 Feb 2008 16:07:36 +0100 (CET) Subject: [Python-checkins] r60983 - in python/trunk: Doc/library/signal.rst Lib/test/test_signal.py Misc/NEWS Modules/signalmodule.c Message-ID: <20080223150736.40B601E4016@bag.python.org> Author: facundo.batista Date: Sat Feb 23 16:07:35 2008 New Revision: 60983 Modified: python/trunk/Doc/library/signal.rst python/trunk/Lib/test/test_signal.py python/trunk/Misc/NEWS python/trunk/Modules/signalmodule.c Log: Issue 1089358. Adds the siginterrupt() function, that is just a wrapper around the system call with the same name. Also added test cases, doc changes and NEWS entry. Thanks Jason and Ralf Schmitt. Modified: python/trunk/Doc/library/signal.rst ============================================================================== --- python/trunk/Doc/library/signal.rst (original) +++ python/trunk/Doc/library/signal.rst Sat Feb 23 16:07:35 2008 @@ -124,6 +124,21 @@ exception to be raised. + +.. function:: siginterrupt(signalnum, flag) + + Change system call restart behaviour: if *flag* is :const:`False`, system calls + will be restarted when interrupted by signal *signalnum*, else system calls will + be interrupted. Returns nothing. Availability: Unix, Mac (see the man page + :manpage:`siginterrupt(3)` for further information). + + Note that installing a signal handler with :func:`signal` will reset the restart + behaviour to interruptible by implicitly calling siginterrupt with a true *flag* + value for the given signal. + + .. versionadded:: 2.6 + + .. function:: signal(signalnum, handler) Set the handler for signal *signalnum* to the function *handler*. *handler* can Modified: python/trunk/Lib/test/test_signal.py ============================================================================== --- python/trunk/Lib/test/test_signal.py (original) +++ python/trunk/Lib/test/test_signal.py Sat Feb 23 16:07:35 2008 @@ -1,7 +1,7 @@ import unittest from test import test_support import signal -import os, sys, time +import os, sys, time, errno class HandlerBCalled(Exception): pass @@ -210,6 +210,50 @@ os.close(self.write) signal.signal(signal.SIGALRM, self.alrm) +class SiginterruptTest(unittest.TestCase): + signum = signal.SIGUSR1 + def readpipe_interrupted(self, cb): + r, w = os.pipe() + ppid = os.getpid() + pid = os.fork() + + oldhandler = signal.signal(self.signum, lambda x,y: None) + cb() + if pid==0: + # child code: sleep, kill, sleep. and then exit, + # which closes the pipe from which the parent process reads + try: + time.sleep(0.2) + os.kill(ppid, self.signum) + time.sleep(0.2) + finally: + os._exit(0) + + try: + os.close(w) + + try: + d=os.read(r, 1) + return False + except OSError, err: + if err.errno != errno.EINTR: + raise + return True + finally: + signal.signal(self.signum, oldhandler) + os.waitpid(pid, 0) + + def test_without_siginterrupt(self): + i=self.readpipe_interrupted(lambda: None) + self.assertEquals(i, True) + + def test_siginterrupt_on(self): + i=self.readpipe_interrupted(lambda: signal.siginterrupt(self.signum, 1)) + self.assertEquals(i, True) + + def test_siginterrupt_off(self): + i=self.readpipe_interrupted(lambda: signal.siginterrupt(self.signum, 0)) + self.assertEquals(i, False) def test_main(): if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos': @@ -217,7 +261,7 @@ sys.platform) test_support.run_unittest(BasicSignalTests, InterProcessSignalTests, - WakeupSignalTests) + WakeupSignalTests, SiginterruptTest) if __name__ == "__main__": Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 16:07:35 2008 @@ -1186,6 +1186,7 @@ does not claim to support starttls. Adds the SMTP.ehlo_or_helo_if_needed() method. Patch contributed by Bill Fenner. +- Patch #1089358: Add signal.siginterrupt, a wrapper around siginterrupt(3). Extension Modules ----------------- Modified: python/trunk/Modules/signalmodule.c ============================================================================== --- python/trunk/Modules/signalmodule.c (original) +++ python/trunk/Modules/signalmodule.c Sat Feb 23 16:07:35 2008 @@ -272,6 +272,36 @@ None -- if an unknown handler is in effect\n\ anything else -- the callable Python object used as a handler"); +#ifdef HAVE_SIGINTERRUPT +PyDoc_STRVAR(siginterrupt_doc, +"siginterrupt(sig, flag) -> None\n\ +change system call restart behaviour: if flag is False, system calls\n\ +will be restarted when interrupted by signal sig, else system calls\n\ +will be interrupted."); + +static PyObject * +signal_siginterrupt(PyObject *self, PyObject *args) +{ + int sig_num; + int flag; + + if (!PyArg_ParseTuple(args, "ii:siginterrupt", &sig_num, &flag)) + return NULL; + if (sig_num < 1 || sig_num >= NSIG) { + PyErr_SetString(PyExc_ValueError, + "signal number out of range"); + return NULL; + } + if (siginterrupt(sig_num, flag)<0) { + PyErr_SetFromErrno(PyExc_RuntimeError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +#endif static PyObject * signal_set_wakeup_fd(PyObject *self, PyObject *args) @@ -325,6 +355,9 @@ {"signal", signal_signal, METH_VARARGS, signal_doc}, {"getsignal", signal_getsignal, METH_VARARGS, getsignal_doc}, {"set_wakeup_fd", signal_set_wakeup_fd, METH_VARARGS, set_wakeup_fd_doc}, +#ifdef HAVE_SIGINTERRUPT + {"siginterrupt", signal_siginterrupt, METH_VARARGS, siginterrupt_doc}, +#endif #ifdef HAVE_PAUSE {"pause", (PyCFunction)signal_pause, METH_NOARGS,pause_doc}, From python-checkins at python.org Sat Feb 23 16:11:18 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:11:18 +0100 (CET) Subject: [Python-checkins] r60984 - in python/trunk: Lib/test/test_file.py Misc/NEWS Objects/fileobject.c Message-ID: <20080223151118.E83F01E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:11:18 2008 New Revision: 60984 Modified: python/trunk/Lib/test/test_file.py python/trunk/Misc/NEWS python/trunk/Objects/fileobject.c Log: #2067: file.__exit__() now calls subclasses' close() method. Modified: python/trunk/Lib/test/test_file.py ============================================================================== --- python/trunk/Lib/test/test_file.py (original) +++ python/trunk/Lib/test/test_file.py Sat Feb 23 16:11:18 2008 @@ -322,12 +322,28 @@ finally: os.unlink(TESTFN) +class FileSubclassTests(unittest.TestCase): + + def testExit(self): + # test that exiting with context calls subclass' close + class C(file): + def __init__(self, *args): + self.subclass_closed = False + file.__init__(self, *args) + def close(self): + self.subclass_closed = True + file.close(self) + + with C(TESTFN, 'w') as f: + pass + self.failUnless(f.subclass_closed) + def test_main(): # Historically, these tests have been sloppy about removing TESTFN. # So get rid of it no matter what. try: - run_unittest(AutoFileTests, OtherFileTests) + run_unittest(AutoFileTests, OtherFileTests, FileSubclassTests) finally: if os.path.exists(TESTFN): os.unlink(TESTFN) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 16:11:18 2008 @@ -12,7 +12,9 @@ Core and builtins ----------------- -- Patch #1759: Backport of PEP 3129 class decorators +- Issue #2067: file.__exit__() now calls subclasses' close() method. + +- Patch #1759: Backport of PEP 3129 class decorators. - Issue #1881: An internal parser limit has been increased. Also see issue 215555 for a discussion. Modified: python/trunk/Objects/fileobject.c ============================================================================== --- python/trunk/Objects/fileobject.c (original) +++ python/trunk/Objects/fileobject.c Sat Feb 23 16:11:18 2008 @@ -1660,9 +1660,9 @@ } static PyObject * -file_exit(PyFileObject *f, PyObject *args) +file_exit(PyObject *f, PyObject *args) { - PyObject *ret = file_close(f); + PyObject *ret = PyObject_CallMethod(f, "close", NULL); if (!ret) /* If error occurred, pass through */ return NULL; From python-checkins at python.org Sat Feb 23 16:19:55 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:19:55 +0100 (CET) Subject: [Python-checkins] r60985 - python/trunk/Doc/library/difflib.rst Message-ID: <20080223151955.182BE1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:19:54 2008 New Revision: 60985 Modified: python/trunk/Doc/library/difflib.rst Log: More difflib examples. Written for GHOP by Josip Dzolonga. Modified: python/trunk/Doc/library/difflib.rst ============================================================================== --- python/trunk/Doc/library/difflib.rst (original) +++ python/trunk/Doc/library/difflib.rst Sat Feb 23 16:19:54 2008 @@ -148,7 +148,27 @@ expressed in the format returned by :func:`time.ctime`. If not specified, the strings default to blanks. - :file:`Tools/scripts/diff.py` is a command-line front-end for this function. + :: + + >>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] + >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] + >>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'): + ... sys.stdout.write(line) + *** before.py + --- after.py + *************** + *** 1,4 **** + ! bacon + ! eggs + ! ham + guido + --- 1,4 ---- + ! python + ! eggy + ! hamster + guido + + See :ref:`difflib-interface` for a more detailed example. .. versionadded:: 2.3 @@ -265,7 +285,25 @@ expressed in the format returned by :func:`time.ctime`. If not specified, the strings default to blanks. - :file:`Tools/scripts/diff.py` is a command-line front-end for this function. + :: + + + >>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] + >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] + >>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'): + ... sys.stdout.write(line) + --- before.py + +++ after.py + @@ -1,4 +1,4 @@ + -bacon + -eggs + -ham + +python + +eggy + +hamster + guido + + See :ref:`difflib-interface` for a more detailed example. .. versionadded:: 2.3 @@ -649,3 +687,75 @@ ? ++++ ^ ^ + 5. Flat is better than nested. + +.. _difflib-interface: + +A command-line interface to difflib +----------------------------------- + +This example shows how to use difflib to create a ``diff``-like utility. +It is also contained in the Python source distribution, as +:file:`Tools/scripts/diff.py`. + +:: + + """ Command line interface to difflib.py providing diffs in four formats: + + * ndiff: lists every line and highlights interline changes. + * context: highlights clusters of changes in a before/after format. + * unified: highlights clusters of changes in an inline format. + * html: generates side by side comparison with change highlights. + + """ + + import sys, os, time, difflib, optparse + + def main(): + # Configure the option parser + usage = "usage: %prog [options] fromfile tofile" + parser = optparse.OptionParser(usage) + parser.add_option("-c", action="store_true", default=False, + help='Produce a context format diff (default)') + parser.add_option("-u", action="store_true", default=False, + help='Produce a unified format diff') + hlp = 'Produce HTML side by side diff (can use -c and -l in conjunction)' + parser.add_option("-m", action="store_true", default=False, help=hlp) + parser.add_option("-n", action="store_true", default=False, + help='Produce a ndiff format diff') + parser.add_option("-l", "--lines", type="int", default=3, + help='Set number of context lines (default 3)') + (options, args) = parser.parse_args() + + if len(args) == 0: + parser.print_help() + sys.exit(1) + if len(args) != 2: + parser.error("need to specify both a fromfile and tofile") + + n = options.lines + fromfile, tofile = args # as specified in the usage string + + # we're passing these as arguments to the diff function + fromdate = time.ctime(os.stat(fromfile).st_mtime) + todate = time.ctime(os.stat(tofile).st_mtime) + fromlines = open(fromfile, 'U').readlines() + tolines = open(tofile, 'U').readlines() + + if options.u: + diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, + fromdate, todate, n=n) + elif options.n: + diff = difflib.ndiff(fromlines, tolines) + elif options.m: + diff = difflib.HtmlDiff().make_file(fromlines, tolines, fromfile, + tofile, context=options.c, + numlines=n) + else: + diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, + fromdate, todate, n=n) + + # we're using writelines because diff is a generator + sys.stdout.writelines(diff) + + if __name__ == '__main__': + main() From python-checkins at python.org Sat Feb 23 16:24:31 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:24:31 +0100 (CET) Subject: [Python-checkins] r60986 - in doctools/trunk/sphinx: __init__.py application.py builder.py config.py highlighting.py htmlwriter.py latexwriter.py quickstart.py static static/default.css style templates/layout.html templates/modindex.html templates/search.html web/application.py Message-ID: <20080223152431.73D0B1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:24:30 2008 New Revision: 60986 Added: doctools/trunk/sphinx/static/ - copied from r60704, doctools/trunk/sphinx/style/ Removed: doctools/trunk/sphinx/style/ Modified: doctools/trunk/sphinx/__init__.py doctools/trunk/sphinx/application.py doctools/trunk/sphinx/builder.py doctools/trunk/sphinx/config.py doctools/trunk/sphinx/highlighting.py doctools/trunk/sphinx/htmlwriter.py doctools/trunk/sphinx/latexwriter.py doctools/trunk/sphinx/quickstart.py doctools/trunk/sphinx/static/default.css doctools/trunk/sphinx/templates/layout.html doctools/trunk/sphinx/templates/modindex.html doctools/trunk/sphinx/templates/search.html doctools/trunk/sphinx/web/application.py Log: * Allow custom static files to be created for the HTML builder. * Add more block tags to the template, making inheriting them easier. * Make the HTML stylesheet configurable for html and htmlhelp builder. * Make the Pygments style configurable. * Create template and style dirs in quickstart. Modified: doctools/trunk/sphinx/__init__.py ============================================================================== --- doctools/trunk/sphinx/__init__.py (original) +++ doctools/trunk/sphinx/__init__.py Sat Feb 23 16:24:30 2008 @@ -15,7 +15,7 @@ from os import path from cStringIO import StringIO -from sphinx.application import Application +from sphinx.application import Sphinx from sphinx.util.console import nocolor __version__ = '$Revision: 5369 $'[11:-2] @@ -103,8 +103,8 @@ elif opt == '-P': use_pdb = True - app = Application(srcdir, outdir, doctreedir, buildername, - confoverrides, status, sys.stderr, freshenv) + app = Sphinx(srcdir, outdir, doctreedir, buildername, + confoverrides, status, sys.stderr, freshenv) if not app.builder: return 1 Modified: doctools/trunk/sphinx/application.py ============================================================================== --- doctools/trunk/sphinx/application.py (original) +++ doctools/trunk/sphinx/application.py Sat Feb 23 16:24:30 2008 @@ -49,7 +49,7 @@ 'doctree-resolved' : 'the doctree, the docname', } -class Application(object): +class Sphinx(object): def __init__(self, srcdir, outdir, doctreedir, buildername, confoverrides, status, warning=sys.stderr, freshenv=False): @@ -177,9 +177,10 @@ def add_node(self, node): nodes._add_node_class_names([node.__name__]) - def add_directive(self, name, cls, content, arguments): + def add_directive(self, name, cls, content, arguments, **options): cls.content = content cls.arguments = arguments + cls.options = options directives.register_directive(name, cls) def add_role(self, name, role): Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Sat Feb 23 16:24:30 2008 @@ -32,7 +32,7 @@ from sphinx.htmlwriter import HTMLWriter, HTMLTranslator, SmartyPantsHTMLTranslator from sphinx.latexwriter import LaTeXWriter from sphinx.environment import BuildEnvironment, NoUri -from sphinx.highlighting import pygments, get_stylesheet +from sphinx.highlighting import PygmentsBridge from sphinx.util.console import bold, purple, red, darkgreen # side effect: registers roles and directives @@ -212,7 +212,7 @@ # individually self.write(docnames, updated_docnames) - # finish (write style files etc.) + # finish (write static files etc.) self.info(bold('finishing... ')) self.finish() if self.app._warncount: @@ -242,9 +242,9 @@ 'writing output... ', darkgreen): try: doctree = self.env.get_and_resolve_doctree(docname, self) - self.write_doc(docname, doctree) except Exception, err: warnings.append('%s:: doctree not found!' % docname) + self.write_doc(docname, doctree) for warning in warnings: if warning.strip(): self.warn(warning) @@ -317,6 +317,7 @@ release = self.config.release, version = self.config.version, last_updated = self.last_updated, + style = self.config.html_style, builder = self.name, parents = [], titles = {}, @@ -442,20 +443,21 @@ indextemplate = self.config.html_index if indextemplate: indextemplate = path.join(self.srcdir, indextemplate) - self.handle_page('index', {'indextemplate': indextemplate}, 'index.html') + self.handle_page('index', {'indextemplate': indextemplate}, 'index.html') - # copy style files - self.info(bold('copying style files...')) - styledirname = path.join(path.dirname(__file__), 'style') - ensuredir(path.join(self.outdir, 'style')) - for filename in os.listdir(styledirname): - if not filename.startswith('.'): - shutil.copyfile(path.join(styledirname, filename), - path.join(self.outdir, 'style', filename)) + # copy static files + self.info(bold('copying static files...')) + ensuredir(path.join(self.outdir, 'static')) + staticdirnames = path.join(path.dirname(__file__), 'static') + \ + self.config.static_path + for staticdirname in staticdirnames: + for filename in os.listdir(staticdirname): + if not filename.startswith('.'): + shutil.copyfile(path.join(staticdirname, filename), + path.join(self.outdir, 'static', filename)) # add pygments style file - f = open(path.join(self.outdir, 'style', 'pygments.css'), 'w') - if pygments: - f.write(get_stylesheet()) + f = open(path.join(self.outdir, 'static', 'pygments.css'), 'w') + f.write(PygmentsBridge('html', self.config.pygments_style).get_stylesheet()) f.close() # dump the search index @@ -766,10 +768,10 @@ def finish(self): self.info(bold('copying TeX support files...')) - styledirname = path.join(path.dirname(__file__), 'texinputs') - for filename in os.listdir(styledirname): + staticdirname = path.join(path.dirname(__file__), 'texinputs') + for filename in os.listdir(staticdirname): if not filename.startswith('.'): - shutil.copyfile(path.join(styledirname, filename), + shutil.copyfile(path.join(staticdirname, filename), path.join(self.outdir, filename)) @@ -873,7 +875,7 @@ f.write(self.stemplate.render(ctx)) finally: f.close() - shutil.copyfile(path.join(path.dirname(__file__), 'style', 'default.css'), + shutil.copyfile(path.join(path.dirname(__file__), 'static', 'default.css'), path.join(self.outdir, 'default.css')) def hl(self, text, version): @@ -918,7 +920,6 @@ self.check(node, docname) except KeyError: continue - return def check(self, node, docname): uri = node['refuri'] Modified: doctools/trunk/sphinx/config.py ============================================================================== --- doctools/trunk/sphinx/config.py (original) +++ doctools/trunk/sphinx/config.py Sat Feb 23 16:24:30 2008 @@ -19,6 +19,9 @@ # the values are: (default, needs fresh doctrees if changed) + # If you add a value here, don't forget to include it in the + # quickstart.py file template as well! + config_values = dict( # general substitutions project = ('Python', True), @@ -38,8 +41,11 @@ unused_docs = ([], True), add_function_parentheses = (True, True), add_module_names = (True, True), + pygments_style = ('sphinx', False), # HTML options + html_style = ('default.css', False), + html_static_path = ([], False), html_last_updated_fmt = ('%b %d, %Y', False), html_use_smartypants = (True, False), html_translator_class = (None, False), Modified: doctools/trunk/sphinx/highlighting.py ============================================================================== --- doctools/trunk/sphinx/highlighting.py (original) +++ doctools/trunk/sphinx/highlighting.py Sat Feb 23 16:24:30 2008 @@ -11,6 +11,7 @@ import sys import cgi +import re import parser try: @@ -21,15 +22,16 @@ from pygments.formatters import HtmlFormatter, LatexFormatter from pygments.filters import ErrorToken from pygments.style import Style + from pygments.styles import get_style_by_name from pygments.styles.friendly import FriendlyStyle from pygments.token import Generic, Comment, Number except ImportError: pygments = None else: - class PythonDocStyle(Style): + class SphinxStyle(Style): """ - Like friendly, but a bit darker to enhance contrast on - the green background. + Like friendly, but a bit darker to enhance contrast on the green + background. """ background_color = '#eeffcc' @@ -52,52 +54,63 @@ for _lexer in lexers.values(): _lexer.add_filter('raiseonerror') - hfmter = HtmlFormatter(style=PythonDocStyle) - lfmter = LatexFormatter(style=PythonDocStyle) - -def highlight_block(source, lang, dest='html'): - def unhighlighted(): - if dest == 'html': - return '
      ' + cgi.escape(source) + '
      \n' - else: - return highlight(source, lexers['none'], lfmter) - if not pygments: - return unhighlighted() - if lang == 'python': - if source.startswith('>>>'): - # interactive session - lexer = lexers['pycon'] +class PygmentsBridge(object): + def __init__(self, dest='html', stylename='sphinx'): + if not pygments: + return + self.dest = dest + if stylename == 'sphinx': + style = SphinxStyle else: - # maybe Python -- try parsing it - src = source + '\n' - - # Replace "..." by a special mark, - # which is also a valid python expression - mark = "__highlighting__ellipsis__" - src = src.replace("...", mark) - - # lines beginning with "..." are probably placeholders for suite - import re - src = re.sub(r"(?m)^(\s*)" + mark + "(.)", r"\1"+ mark + r"# \2", src) - - # if we're using 2.5, use the with statement - if sys.version_info >= (2, 5): - src = 'from __future__ import with_statement\n' + src - - try: - parser.suite(src) - except (SyntaxError, UnicodeEncodeError): - return unhighlighted() + style = get_style_by_name(stylename) + self.hfmter = HtmlFormatter(style=style) + self.lfmter = LatexFormatter(style=style) + + def highlight_block(self, source, lang): + def unhighlighted(): + if self.dest == 'html': + return '
      ' + cgi.escape(source) + '
      \n' else: - lexer = lexers['python'] - else: - lexer = lexers[lang] - try: - return highlight(source, lexer, dest == 'html' and hfmter or lfmter) - except ErrorToken: - # this is most probably not Python, so let it pass unhighlighted - return unhighlighted() + return highlight(source, lexers['none'], lfmter) + if not pygments: + return unhighlighted() + if lang == 'python': + if source.startswith('>>>'): + # interactive session + lexer = lexers['pycon'] + else: + # maybe Python -- try parsing it + src = source + '\n' -def get_stylesheet(dest='html'): - return (dest == 'html' and hfmter or lfmter).get_style_defs() + # Replace "..." by a special mark, which is also a valid python expression + # (Note, the highlighter gets the original source, this is only done + # to allow "..." in code and still highlight it as Python code.) + mark = "__highlighting__ellipsis__" + src = src.replace("...", mark) + + # lines beginning with "..." are probably placeholders for suite + src = re.sub(r"(?m)^(\s*)" + mark + "(.)", r"\1"+ mark + r"# \2", src) + + # if we're using 2.5, use the with statement + if sys.version_info >= (2, 5): + src = 'from __future__ import with_statement\n' + src + + try: + parser.suite(src) + except (SyntaxError, UnicodeEncodeError): + return unhighlighted() + else: + lexer = lexers['python'] + else: + lexer = lexers[lang] + try: + return highlight(source, lexer, self.dest == 'html' and self.hfmter or self.lfmter) + except ErrorToken: + # this is most probably not the selected language, so let it pass unhighlighted + return unhighlighted() + + def get_stylesheet(self): + if not pygments: + return '' + return (self.dest == 'html' and self.hfmter or self.lfmter).get_style_defs() Modified: doctools/trunk/sphinx/htmlwriter.py ============================================================================== --- doctools/trunk/sphinx/htmlwriter.py (original) +++ doctools/trunk/sphinx/htmlwriter.py Sat Feb 23 16:24:30 2008 @@ -12,6 +12,7 @@ from docutils import nodes from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator +from sphinx.highlighting import PygmentsBridge from sphinx.util.smartypants import sphinx_smarty_pants @@ -45,6 +46,7 @@ def __init__(self, builder, *args, **kwds): BaseTranslator.__init__(self, *args, **kwds) + self.highlighter = PygmentsBridge('html', builder.config.pygments_style) self.no_smarty = 0 self.builder = builder self.highlightlang = 'python' @@ -173,8 +175,8 @@ # overwritten def visit_literal_block(self, node): - from sphinx.highlighting import highlight_block - self.body.append(highlight_block(node.rawsource, self.highlightlang)) + self.body.append(self.highlighter.highlight_block(node.rawsource, + self.highlightlang)) raise nodes.SkipNode # overwritten Modified: doctools/trunk/sphinx/latexwriter.py ============================================================================== --- doctools/trunk/sphinx/latexwriter.py (original) +++ doctools/trunk/sphinx/latexwriter.py Sat Feb 23 16:24:30 2008 @@ -20,7 +20,7 @@ from sphinx import addnodes from sphinx import highlighting -# Move to a template? +# XXX: Move to a template? HEADER = r'''%% Generated by Sphinx. \documentclass[%(papersize)s,%(pointsize)s]{%(docclass)s} \usepackage[utf8]{inputenc} @@ -105,6 +105,7 @@ 'release': builder.config.release, 'date': date, } + self.highlighter = highlighting.PygmentsBridge('latex', builder.config.pygments_style) self.context = [] self.descstack = [] self.highlightlang = 'python' @@ -123,7 +124,7 @@ def astext(self): return (HEADER % self.options) + \ - highlighting.get_stylesheet('latex') + '\n\n' + \ + self.highlighter.get_stylesheet() + '\n\n' + \ u''.join(self.body) + \ (FOOTER % self.options) @@ -638,8 +639,8 @@ def visit_literal_block(self, node): self.verbatim = '' def depart_literal_block(self, node): - hlcode = highlighting.highlight_block(self.verbatim.rstrip('\n'), - self.highlightlang, 'latex') + hlcode = self.highlighter.highlight_block(self.verbatim.rstrip('\n'), + self.highlightlang) # workaround for Unicode issue hlcode = hlcode.replace(u'?', u'@texteuro[]') # workaround for Pygments bug Modified: doctools/trunk/sphinx/quickstart.py ============================================================================== --- doctools/trunk/sphinx/quickstart.py (original) +++ doctools/trunk/sphinx/quickstart.py Sat Feb 23 16:24:30 2008 @@ -9,7 +9,7 @@ :license: BSD. """ -import sys, os, time +import sys, os, time, shutil from os import path from sphinx.util.console import darkgreen, purple, bold, red, nocolor @@ -27,7 +27,7 @@ # that aren't pickleable (module imports are okay, they're removed automatically). # # All configuration values have a default value; values that are commented out -# show the default value as assigned to them. +# serve to show the default value. import sys @@ -42,7 +42,7 @@ #extensions = [] # Add any paths that contain templates here, relative to this directory. -#templates_path = [] +templates_path = ['%(dot)stemplates'] # The suffix of source filenames. source_suffix = '%(suffix)s' @@ -78,10 +78,23 @@ # unit titles (such as .. function::). #add_module_names = True +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + # Options for HTML output # ----------------------- +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['%(dot)sstatic'] + # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. html_last_updated_fmt = '%%b %%d, %%Y' @@ -139,6 +152,9 @@ """Please enter a file suffix, e.g. '.rst' or '.txt'.""" return x[0:1] == '.' and len(x) > 1 +def ok(x): + return True + def do_prompt(d, key, text, default=None, validator=nonempty): while True: @@ -193,6 +209,12 @@ of the documents. Normally, this is "index", but if your "index" document is a custom template, you can also set this to another filename.''' do_prompt(d, 'master', 'Name of your master document (without suffix)', 'index') + print ''' +Inside the "src" directory, two directories will be created; ".templates" +for custom HTML templates and ".static" for custom stylesheets and other +static files. Since the leading dot may be inconvenient for Windows users, +you can enter another prefix (such as "_") to replace the dot.''' + do_prompt(d, 'dot', 'Name prefix for templates and static dir', '.', ok) d['year'] = time.strftime('%Y') d['now'] = time.asctime() @@ -206,6 +228,11 @@ masterfile = path.join(d['path'], 'src', d['master'] + d['suffix']) + templatedir = path.join(d['path'], 'src', d['dot'] + 'templates') + os.mkdir(templatedir) + staticdir = path.join(d['path'], 'src', d['dot'] + 'static') + os.mkdir(staticdir) + print print bold('Finished: An initial directory structure has been created.') print ''' Modified: doctools/trunk/sphinx/static/default.css ============================================================================== --- doctools/trunk/sphinx/style/default.css (original) +++ doctools/trunk/sphinx/static/default.css Sat Feb 23 16:24:30 2008 @@ -779,16 +779,11 @@ /* :::: PRINT :::: */ @media print { - div.documentwrapper { - width: 100%; - } - - div.document, - div.documentwrapper, - div.bodywrapper, - div.body { + div.document, + div.documentwrapper, + div.bodywrapper { margin: 0; - width : 100%; + width : 100%; } div.sidebar, Modified: doctools/trunk/sphinx/templates/layout.html ============================================================================== --- doctools/trunk/sphinx/templates/layout.html (original) +++ doctools/trunk/sphinx/templates/layout.html Sat Feb 23 16:24:30 2008 @@ -1,9 +1,13 @@ -{% if builder != 'htmlhelp' %}{% set titlesuffix = " — " + project + " Documentation" %}{% endif -%} +{% block doctype -%} +{% endblock -%} + {%- if builder != 'htmlhelp' %} + {%- set titlesuffix = " — " + project + " Documentation" %} + {%- endif %} {{ title|striptags }}{{ titlesuffix }} {%- if builder == 'web' %} {%- endfor %} {%- else %} - - + + {%- endif %} {%- if builder != 'htmlhelp' %} - - - + + + {%- endif %} +{%- block rellinks %} {%- if hasdoc('about') %} {%- endif %} @@ -45,10 +50,13 @@ {%- if prev %} {%- endif %} - {% block head %}{% endblock %} +{%- endblock %} +{%- block extrahead %}{% endblock %} -{% filter capture('relbar') %} + +{%- filter capture('relbar') %} +{%- block relbar %} -{% endfilter %} +{%- endblock %} +{%- endfilter %} +
      {%- if builder != 'htmlhelp' %} @@ -83,6 +93,8 @@
      {%- endif %}
      + +{%- block sidebar %} {%- if builder != 'htmlhelp' %} {%- endif %} +{%- endblock %}
      +{%- block bottomrelbar %} {{ relbar }} +{%- endblock %} +{%- block footer %} +{%- endblock %} Modified: doctools/trunk/sphinx/templates/modindex.html ============================================================================== --- doctools/trunk/sphinx/templates/modindex.html (original) +++ doctools/trunk/sphinx/templates/modindex.html Sat Feb 23 16:24:30 2008 @@ -32,7 +32,7 @@ {%- else -%}

    -
    Username:
    -

    NOTE: If you have previously created or modified issue -reports using the sourceforge issue tracker previously used for python -bugs, your username on sourceforge already exists in this tracker. Use -the Password recovery form to -get a password for your account.

    - - Modified: tracker/instances/jobs/initial_data.py ============================================================================== --- tracker/instances/jobs/initial_data.py (original) +++ tracker/instances/jobs/initial_data.py Sat Feb 16 15:29:24 2008 @@ -4,84 +4,19 @@ # TRACKER INITIAL PRIORITY AND STATUS VALUES # -issue_type = db.getclass('issue_type') -issue_type.create(name='crash', order='1') -issue_type.create(name='compile error', order='2') -issue_type.create(name='resource usage', order='3') -issue_type.create(name='security', order='4') -issue_type.create(name='behavior', order='5') -issue_type.create(name='rfe', order='6') - -component = db.getclass('component') -component.create(name="Build", order="1") -component.create(name="Demos and Tools", order="2") -component.create(name="Distutils", order="3") -component.create(name="Documentation", order="4") -component.create(name="Extension Modules", order="5") -component.create(name="IDLE", order="6") -component.create(name="Installation", order="7") -component.create(name="Interpreter Core", order="8") -component.create(name="Library (Lib)", order="9") -component.create(name="Macintosh", order="10") -component.create(name="Regular Expressions", order="11") -component.create(name="Tests", order="12") -component.create(name="Tkinter", order="13") -component.create(name="Unicode", order="14") -component.create(name="Windows", order="15") -component.create(name="XML", order="16") - -version = db.getclass('version') -version.create(name='Python 2.6', order='1') -version.create(name='Python 2.5', order='2') -version.create(name='Python 2.4', order='3') -version.create(name='Python 2.3', order='4') -version.create(name='Python 2.2.3', order='5') -version.create(name='Python 2.2.2', order='6') -version.create(name='Python 2.2.1', order='7') -version.create(name='Python 2.2', order='8') -version.create(name='Python 2.1.2', order='9') -version.create(name='Python 2.1.1', order='10') -version.create(name='3rd party', order='11') - - -severity = db.getclass('severity') -severity.create(name='critical', order='1') -severity.create(name='urgent', order='2') -severity.create(name='major', order='3') -severity.create(name='normal', order='4') -severity.create(name='minor', order='5') - -priority = db.getclass('priority') -priority.create(name='immediate', order='1') -priority.create(name='urgent', order='2') -priority.create(name='high', order='3') -priority.create(name='normal', order='4') -priority.create(name='low', order='5') - status = db.getclass('status') -status.create(name='open', order='1') -status.create(name='closed', order='2') +status.create(name='submitted', order='1') +status.create(name='posted', order='2') status.create(name='pending', description='user feedback required', order='3') +status.create(name='withdrawn', description='submitter has the offer withdrawn', order='4') +status.create(name='expired', description='The posting was removed after being online for the scheduled time', order='5') +status.create(name='rejected', description='The offer was rejected for posting', order='6') -resolution = db.getclass('resolution') -resolution.create(name='accepted', order='1') -resolution.create(name='duplicate', order='2') -resolution.create(name='fixed', order='3') -resolution.create(name='invalid', order='4') -resolution.create(name='later', order='5') -resolution.create(name='out of date', order='6') -resolution.create(name='postponed', order='7') -resolution.create(name='rejected', order='8') -resolution.create(name='remind', order='9') -resolution.create(name='wont fix', order='10') -resolution.create(name='works for me', order='11') - -keyword = db.getclass("keyword") -keyword.create(name="py3k", description="Python 3000 bugs") -keyword.create(name="patch", description="Contains patch") # # create the two default users user = db.getclass('user') user.create(username="admin", password=adminpw, address=admin_email, roles='Admin') user.create(username="anonymous", roles='Anonymous') +user.create(username="user", password=Password("user"), roles='User') +user.create(username="editor", password=Password("editor"), roles='Editor') Modified: tracker/instances/jobs/schema.py ============================================================================== --- tracker/instances/jobs/schema.py (original) +++ tracker/instances/jobs/schema.py Sat Feb 16 15:29:24 2008 @@ -9,41 +9,6 @@ # creator = Link('user') # actor = Link('user') -# Issue Type -issue_type = Class(db, 'issue_type', - name=String(), - description=String(), - order=Number()) -issue_type.setkey('name') - -# Component -component = Class(db, 'component', - name=String(), - description=String(), - order=Number()) -component.setkey('name') - -# Version -version = Class(db, 'version', - name=String(), - description=String(), - order=Number()) -version.setkey('name') - -# Severity -severity = Class(db, 'severity', - name=String(), - description=String(), - order=Number()) -severity.setkey('name') - -# Priority -priority = Class(db, 'priority', - name=String(), - description=String(), - order=Number()) -priority.setkey('name') - # Status status = Class(db, "status", name=String(), @@ -51,20 +16,6 @@ order=Number()) status.setkey("name") -# Resolution -resolution = Class(db, "resolution", - name=String(), - description=String(), - order=Number()) -resolution.setkey('name') - -# Keyword -keyword = Class(db, "keyword", - name=String(), - description=String()) -keyword.setkey("name") - - # User-defined saved searches query = Class(db, "query", klass=String(), @@ -113,18 +64,14 @@ # files = Multilink("file") # nosy = Multilink("user") # superseder = Multilink("issue") -issue = IssueClass(db, "issue", - type=Link('issue_type'), - components=Multilink('component'), - versions=Multilink('version'), - severity=Link('severity'), - priority=Link('priority'), - dependencies=Multilink('issue'), - assignee=Link('user'), +offer = IssueClass(db, "offer", + organization=String(), + organization_url=String(), + agency=Boolean(), + description=Link('msg'), + python_used_for=Link('msg'), status=Link('status'), - resolution=Link('resolution'), - superseder=Link('issue'), - keywords=Multilink("keyword")) + ) # # TRACKER SECURITY SETTINGS @@ -132,7 +79,7 @@ # See the configuration and customisation document for information # about security setup. -db.security.addRole(name='Developer', description='A developer') +db.security.addRole(name='Editor', description='An editor') db.security.addRole(name='Coordinator', description='A coordinator') db.security.addPermission(name="SB: May Classify") @@ -142,7 +89,7 @@ # REGULAR USERS # # Give the regular users access to the web and email interface -for r in 'User', 'Developer', 'Coordinator': +for r in 'User', 'Editor', 'Coordinator': db.security.addPermissionToRole(r, 'Web Access') db.security.addPermissionToRole(r, 'Email Access') @@ -150,9 +97,14 @@ # User permissions ########################## -for cl in ('issue_type', 'severity', 'component', - 'version', 'priority', 'status', 'resolution', - 'issue', 'keyword'): +def own_offer(db, userid, itemid): + return db.offer.get(itemid, 'creator')==userid + +p = db.security.addPermission(name='View', klass='offer', check=own_offer, + description="User is allowed to view their own offers") +db.security.addPermissionToRole('User',p) + +for cl in ('status',): db.security.addPermissionToRole('User', 'View', cl) db.security.addPermissionToRole('Anonymous', 'View', cl) @@ -174,7 +126,9 @@ return True -for cl in ('file', 'msg'): +# files are disabled for the moment +#for cl in ('file', 'msg'): +for cl in ('msg',): p = db.security.addPermission(name='View', klass=cl, description="allowed to see metadata object regardless of spam status", properties=('creation', 'activity', @@ -187,7 +141,6 @@ 'description', )) - db.security.addPermissionToRole('Anonymous', p) db.security.addPermissionToRole('User', p) db.security.addPermissionToRole('User', 'Create', cl) @@ -203,24 +156,23 @@ properties=('content', 'summary'), check=may_view_spam(cl)) - db.security.addPermissionToRole('Anonymous', spamcheck) -p = db.security.addPermission(name='Create', klass='issue', - properties=('title', 'type', - 'components', 'versions', - 'severity', +p = db.security.addPermission(name='Create', klass='offer', + properties=('title', 'organization', + 'organization_url', 'agency', + 'description', 'python_used_for', 'messages', 'files', 'nosy'), - description='User can report and discuss issues') + description='User can report and discuss offers') db.security.addPermissionToRole('User', p) -p = db.security.addPermission(name='Edit', klass='issue', - properties=('title', 'type', - 'components', 'versions', - 'severity', +p = db.security.addPermission(name='Edit', klass='offer', + properties=('title','organization', + 'organization_url', 'agency', + 'description', 'python_used_for', 'messages', 'files', 'nosy'), - description='User can report and discuss issues') + description='User can add and discuss offers') db.security.addPermissionToRole('User', p) db.security.addPermissionToRole('User', 'SB: May Report Misclassified') @@ -228,23 +180,20 @@ ########################## -# Developer permissions +# Editor permissions ########################## -for cl in ('issue_type', 'severity', 'component', - 'version', 'priority', 'status', 'resolution', - 'issue', 'file', 'msg', 'keyword'): - db.security.addPermissionToRole('Developer', 'View', cl) - -for cl in ('issue', 'file', 'msg', 'keyword'): - db.security.addPermissionToRole('Developer', 'Edit', cl) - db.security.addPermissionToRole('Developer', 'Create', cl) +for cl in ('status','offer', 'file', 'msg'): + db.security.addPermissionToRole('Editor', 'View', cl) + +for cl in ('offer', 'file', 'msg'): + db.security.addPermissionToRole('Editor', 'Edit', cl) + db.security.addPermissionToRole('Editor', 'Create', cl) ########################## # Coordinator permissions ########################## -for cl in ('issue_type', 'severity', 'component', - 'version', 'priority', 'status', 'resolution', 'issue', 'file', 'msg'): +for cl in ('status', 'offer', 'file', 'msg'): db.security.addPermissionToRole('Coordinator', 'View', cl) db.security.addPermissionToRole('Coordinator', 'Edit', cl) db.security.addPermissionToRole('Coordinator', 'Create', cl) @@ -254,7 +203,7 @@ # May users view other user information? Comment these lines out # if you don't want them to db.security.addPermissionToRole('User', 'View', 'user') -db.security.addPermissionToRole('Developer', 'View', 'user') +db.security.addPermissionToRole('Editor', 'View', 'user') db.security.addPermissionToRole('Coordinator', 'View', 'user') # Allow Coordinator to edit any user, including their roles. @@ -268,7 +217,7 @@ return userid == itemid p = db.security.addPermission(name='View', klass='user', check=own_record, description="User is allowed to view their own user details") -for r in 'User', 'Developer', 'Coordinator': +for r in 'User', 'Editor', 'Coordinator': db.security.addPermissionToRole(r, p) p = db.security.addPermission(name='Edit', klass='user', check=own_record, description="User is allowed to edit their own user details", @@ -278,7 +227,7 @@ 'alternate_addresses', 'queries', 'timezone')) # Note: 'roles' excluded - users should not be able to edit their own roles. -for r in 'User', 'Developer': +for r in 'User', 'Editor': db.security.addPermissionToRole(r, p) # Users should be able to edit and view their own queries. They should also @@ -292,15 +241,15 @@ return userid == db.query.get(itemid, 'creator') p = db.security.addPermission(name='View', klass='query', check=view_query, description="User is allowed to view their own and public queries") -for r in 'User', 'Developer', 'Coordinator': +for r in 'User', 'Editor', 'Coordinator': db.security.addPermissionToRole(r, p) p = db.security.addPermission(name='Edit', klass='query', check=edit_query, description="User is allowed to edit their queries") -for r in 'User', 'Developer', 'Coordinator': +for r in 'User', 'Editor', 'Coordinator': db.security.addPermissionToRole(r, p) p = db.security.addPermission(name='Create', klass='query', description="User is allowed to create queries") -for r in 'User', 'Developer', 'Coordinator': +for r in 'User', 'Editor', 'Coordinator': db.security.addPermissionToRole(r, p) @@ -324,12 +273,12 @@ # - Allow anonymous users to register db.security.addPermissionToRole('Anonymous', 'Create', 'user') -# Allow anonymous users access to view issues (and the related, linked +# Allow anonymous users access to view offers (and the related, linked # information). # Note permissions settings for file and msg above (due to spambayes # integration). -for cl in 'issue', 'severity', 'status', 'resolution': +for cl in 'offer', 'status': db.security.addPermissionToRole('Anonymous', 'View', cl) # Allow users to see the realname @@ -341,9 +290,9 @@ # [OPTIONAL] -# Allow anonymous users access to create or edit "issue" items (and the +# Allow anonymous users access to create or edit "offer" items (and the # related file and message items) -#for cl in 'issue', 'file', 'msg': +#for cl in 'offer', 'file', 'msg': # db.security.addPermissionToRole('Anonymous', 'Create', cl) # db.security.addPermissionToRole('Anonymous', 'Edit', cl) From python-checkins at python.org Sat Feb 16 15:34:57 2008 From: python-checkins at python.org (amaury.forgeotdarc) Date: Sat, 16 Feb 2008 15:34:57 +0100 (CET) Subject: [Python-checkins] r60860 - python/trunk/Modules/_struct.c python/trunk/Modules/cStringIO.c Message-ID: <20080216143457.592371E400F@bag.python.org> Author: amaury.forgeotdarc Date: Sat Feb 16 15:34:57 2008 New Revision: 60860 Modified: python/trunk/Modules/_struct.c python/trunk/Modules/cStringIO.c Log: Crashers of the day: Py_CLEAR must be used when there is a chance that the function can be called recursively. This was discussed in issue1020188. In python codebase, all occurrences of Py_[X]DECREF(xxx->yyy) are suspect, except when they appear in tp_new or tp_dealloc functions, or when the member cannot be of a user-defined class. Note that tp_init is not safe. I do have a (crashing) example for every changed line. Is it worth adding them to the test suite? Example: class SpecialStr(str): def __del__(self): s.close() import cStringIO s = cStringIO.StringIO(SpecialStr("text")) s.close() # Segfault Modified: python/trunk/Modules/_struct.c ============================================================================== --- python/trunk/Modules/_struct.c (original) +++ python/trunk/Modules/_struct.c Sat Feb 16 15:34:57 2008 @@ -1471,7 +1471,7 @@ return -1; Py_INCREF(o_format); - Py_XDECREF(soself->s_format); + Py_CLEAR(soself->s_format); soself->s_format = o_format; ret = prepare_s(soself); Modified: python/trunk/Modules/cStringIO.c ============================================================================== --- python/trunk/Modules/cStringIO.c (original) +++ python/trunk/Modules/cStringIO.c Sat Feb 16 15:34:57 2008 @@ -575,8 +575,7 @@ static PyObject * I_close(Iobject *self, PyObject *unused) { - Py_XDECREF(self->pbuf); - self->pbuf = NULL; + Py_CLEAR(self->pbuf); self->buf = NULL; self->pos = self->string_size = 0; From python-checkins at python.org Sat Feb 16 15:50:57 2008 From: python-checkins at python.org (christian.heimes) Date: Sat, 16 Feb 2008 15:50:57 +0100 (CET) Subject: [Python-checkins] r60861 - in python/branches/trunk-math: Include/floatobject.h Include/pystate.h Lib/test/test_float.py Modules/mathmodule.c Objects/complexobject.c Objects/floatobject.c Python/pystate.c Message-ID: <20080216145057.2CA3B1E400F@bag.python.org> Author: christian.heimes Date: Sat Feb 16 15:50:56 2008 New Revision: 60861 Modified: python/branches/trunk-math/Include/floatobject.h python/branches/trunk-math/Include/pystate.h python/branches/trunk-math/Lib/test/test_float.py python/branches/trunk-math/Modules/mathmodule.c python/branches/trunk-math/Objects/complexobject.c python/branches/trunk-math/Objects/floatobject.c python/branches/trunk-math/Python/pystate.c Log: Renamed state functions to PyIEEE Added new strict mode. In strict mode inf and nan are turned into exceptions. Modified: python/branches/trunk-math/Include/floatobject.h ============================================================================== --- python/branches/trunk-math/Include/floatobject.h (original) +++ python/branches/trunk-math/Include/floatobject.h Sat Feb 16 15:50:56 2008 @@ -62,9 +62,6 @@ preserve precision across conversions. */ PyAPI_FUNC(void) PyFloat_AsString(char*, PyFloatObject *v); -PyAPI_FUNC(int) PyFloat_GetIEEE754(void); -PyAPI_FUNC(int) PyFloat_SetIEEE754(int); - /* _PyFloat_{Pack,Unpack}{4,8} * * The struct and pickle (at least) modules need an efficient platform- Modified: python/branches/trunk-math/Include/pystate.h ============================================================================== --- python/branches/trunk-math/Include/pystate.h (original) +++ python/branches/trunk-math/Include/pystate.h Sat Feb 16 15:50:56 2008 @@ -44,6 +44,12 @@ /* Py_tracefunc return -1 when raising an exception, or 0 for success. */ typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *); +typedef enum { + PyIEEE_Python, /* Python standard mode */ + PyIEEE_754, /* IEEE 754 mode */ + PyIEEE_Strict, /* strict Python mode */ +} PyIEEE_Mode; + /* The following values are used for 'what' for tracefunc functions: */ #define PyTrace_CALL 0 #define PyTrace_EXCEPTION 1 @@ -95,7 +101,7 @@ PyObject *async_exc; /* Asynchronous exception to raise */ long thread_id; /* Thread id where this tstate was created */ - int float_ieee754; /* PyFloat behavior */ + PyIEEE_Mode float_ieee754; /* floating point operation behavior */ /* XXX signal handlers should also be here */ @@ -191,6 +197,11 @@ /* hook for PyEval_GetFrame(), requested for Psyco */ PyAPI_DATA(PyThreadFrameGetter) _PyThreadState_GetFrame; +/* IEEE floating op state */ +#define PyIEEE_GET() PyThreadState_GET()->float_ieee754 +PyAPI_FUNC(int) PyIEEE_GetState(void); +PyAPI_FUNC(int) PyIEEE_SetState(int); + #ifdef __cplusplus } #endif Modified: python/branches/trunk-math/Lib/test/test_float.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_float.py (original) +++ python/branches/trunk-math/Lib/test/test_float.py Sat Feb 16 15:50:56 2008 @@ -220,7 +220,7 @@ class IEEE754TestCase(unittest.TestCase): def setUp(self): - self.old_state = math.set_ieee754(True) + self.old_state = math.set_ieee754(math.IEEE_754) def tearDown(self): math.set_ieee754(self.old_state) @@ -247,6 +247,46 @@ self.assertRaises(ZeroDivisionError, operator.div, 0, 0) self.assertRaises(ZeroDivisionError, operator.div, 0, 0) +class IEEEStrictTestCase(unittest.TestCase): + + def setUp(self): + self.old_state = math.set_ieee754(math.IEEE_STRICT) + + def tearDown(self): + math.set_ieee754(self.old_state) + + def value(self, op, *args): + self.assertRaises(ValueError, op, *args) + + def overflow(self, op, *args): + self.assertRaises(OverflowError, op, *args) + + def test_errors(self): + self.overflow(operator.mul, 1E300, 1E300) + self.overflow(operator.add, INF, 1) + self.overflow(operator.sub, INF, 1) + self.overflow(operator.div, INF, 1) + self.overflow(operator.mul, INF, 1) + self.overflow(operator.pow, INF, 1) + self.value(operator.add, NAN, 1) + self.value(operator.sub, NAN, 1) + self.value(operator.div, NAN, 1) + self.value(operator.mul, NAN, 1) + self.value(operator.pow, NAN, 1) + self.value(operator.mod, INF, 1) + self.assertRaises(ZeroDivisionError, operator.floordiv, 1., 0.) + self.assertRaises(ZeroDivisionError, operator.floordiv, 0., 0.) + self.assertRaises(ZeroDivisionError, operator.div, 1, 0) + self.assertRaises(ZeroDivisionError, operator.div, 0, 0) + + def test_fromstring(self): + self.assertAlmostEqual(float("1E100"), 1E100) + self.assertAlmostEqual(float("-1E308"), -1E308) + self.overflow(float, "1E400") + self.overflow(float, "inf") + self.overflow(float, "-inf") + self.value(float, "nan") + def test_main(): test_support.run_unittest( @@ -255,7 +295,8 @@ IEEEFormatTestCase, ReprTestCase, InfNanTest, - IEEE754TestCase + IEEE754TestCase, + IEEEStrictTestCase ) if __name__ == '__main__': Modified: python/branches/trunk-math/Modules/mathmodule.c ============================================================================== --- python/branches/trunk-math/Modules/mathmodule.c (original) +++ python/branches/trunk-math/Modules/mathmodule.c Sat Feb 16 15:50:56 2008 @@ -613,26 +613,30 @@ static PyObject * math_set_ieee754(PyObject *self, PyObject *arg) { - int state; + long state = PyInt_AsLong(arg); - state = PyObject_IsTrue(arg); - if (state == -1) + if (state == -1 && PyErr_Occurred()) return NULL; - - return PyBool_FromLong((long)PyFloat_SetIEEE754(state)); + if (!(state == PyIEEE_Python || state == PyIEEE_754 || + state == PyIEEE_Strict)) { + PyErr_Format(PyExc_ValueError, "Invalid state %ld", state); + return NULL; + } + + return PyInt_FromLong((long)PyIEEE_SetState(state)); } PyDoc_STRVAR(math_set_ieee754_doc, -"set_ieee754(bool) -> bool"); +"set_ieee754(int) -> int"); static PyObject * math_get_ieee754(PyObject *self, PyObject *arg) { - return PyBool_FromLong((long)PyFloat_GetIEEE754()); + return PyInt_FromLong((long)PyIEEE_GetState()); } PyDoc_STRVAR(math_get_ieee754_doc, -"get_ieee754() -> bool"); +"get_ieee754() -> int"); static PyMethodDef math_methods[] = { {"acos", math_acos, METH_O, math_acos_doc}, @@ -681,27 +685,18 @@ PyMODINIT_FUNC initmath(void) { - PyObject *m, *d, *v; + PyObject *m; m = Py_InitModule3("math", math_methods, module_doc); if (m == NULL) goto finally; - d = PyModule_GetDict(m); - if (d == NULL) - goto finally; - if (!(v = PyFloat_FromDouble(Py_MATH_PI))) - goto finally; - if (PyDict_SetItemString(d, "pi", v) < 0) - goto finally; - Py_DECREF(v); - - if (!(v = PyFloat_FromDouble(Py_MATH_E))) - goto finally; - if (PyDict_SetItemString(d, "e", v) < 0) - goto finally; - Py_DECREF(v); + PyModule_AddObject(m, "pi", PyFloat_FromDouble(Py_MATH_PI)); + PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E)); + PyModule_AddIntConstant(m, "IEEE_PYTHON", PyIEEE_Python); + PyModule_AddIntConstant(m, "IEEE_754", PyIEEE_754); + PyModule_AddIntConstant(m, "IEEE_STRICT", PyIEEE_Strict); - finally: + finally: return; } Modified: python/branches/trunk-math/Objects/complexobject.c ============================================================================== --- python/branches/trunk-math/Objects/complexobject.c (original) +++ python/branches/trunk-math/Objects/complexobject.c Sat Feb 16 15:50:56 2008 @@ -547,7 +547,7 @@ PyFPE_START_PROTECT("complex_div", return 0) errno = 0; - if (PyFloat_GetIEEE754()) + if (PyIEEE_GET() == PyIEEE_754) quot = c_quot_ieee754(v->cval,w->cval); else quot = c_quot(v->cval,w->cval); @@ -571,7 +571,7 @@ PyFPE_START_PROTECT("complex_classic_div", return 0) errno = 0; - if (PyFloat_GetIEEE754()) + if (PyIEEE_GET() == PyIEEE_754) quot = c_quot_ieee754(v->cval,w->cval); else quot = c_quot(v->cval,w->cval); Modified: python/branches/trunk-math/Objects/floatobject.c ============================================================================== --- python/branches/trunk-math/Objects/floatobject.c (original) +++ python/branches/trunk-math/Objects/floatobject.c Sat Feb 16 15:50:56 2008 @@ -143,6 +143,16 @@ if ((free_list = fill_free_list()) == NULL) return NULL; } + if (PyIEEE_GET() == PyIEEE_Strict) { + if (Py_IS_NAN(fval)) { + PyErr_SetString(PyExc_ValueError, "Not a Number"); + return NULL; + } + if (Py_IS_INFINITY(fval)) { + PyErr_SetString(PyExc_OverflowError, "Infinity"); + return NULL; + } + } /* Inline PyObject_New */ op = free_list; free_list = (PyFloatObject *)Py_TYPE(op); @@ -242,10 +252,20 @@ p++; } if (PyOS_strnicmp(p, "inf", 4) == 0) { + if (PyIEEE_GET() == PyIEEE_Strict) { + PyErr_SetString(PyExc_OverflowError, + "Infinity"); + return NULL; + } Py_RETURN_INF(sign); } #ifdef Py_NAN if(PyOS_strnicmp(p, "nan", 4) == 0) { + if (PyIEEE_GET() == PyIEEE_Strict) { + PyErr_SetString(PyExc_ValueError, + "Not a Number"); + return NULL; + } Py_RETURN_NAN; } #endif @@ -773,7 +793,7 @@ CONVERT_TO_DOUBLE(w, b); #ifdef Py_NAN if (b == 0.0) { - if (!PyFloat_GetIEEE754()) { + if (PyIEEE_GET() == PyIEEE_Python) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); return NULL; @@ -801,7 +821,7 @@ return NULL; #ifdef Py_NAN if (b == 0.0) { - if (!PyFloat_GetIEEE754()) { + if (PyIEEE_GET() == PyIEEE_Python) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); return NULL; @@ -827,7 +847,7 @@ CONVERT_TO_DOUBLE(w, wx); #ifdef Py_NAN if (wx == 0.0) { - if (!PyFloat_GetIEEE754()) { + if (PyIEEE_GET() == PyIEEE_Python) { PyErr_SetString(PyExc_ZeroDivisionError, "float modulo"); return NULL; @@ -1587,13 +1607,13 @@ _Py_NewReference(var); \ } - state = PyFloat_SetIEEE754(1); + state = PyIEEE_SetState(PyIEEE_Python); #ifdef Py_NAN static_float(PyFloat_NAN, Py_NAN); #endif static_float(PyFloat_PINF, Py_HUGE_VAL); static_float(PyFloat_NINF, -Py_HUGE_VAL); - PyFloat_SetIEEE754(state); + PyIEEE_SetState(state); #undef static_float } @@ -1702,25 +1722,6 @@ } } -/* inline this */ -int -PyFloat_GetIEEE754(void) -{ - PyThreadState *tstate = PyThreadState_GET(); - return tstate->float_ieee754; -} - -int -PyFloat_SetIEEE754(state) -{ - int old_state; - PyThreadState *tstate = PyThreadState_GET(); - - old_state = tstate->float_ieee754; - tstate->float_ieee754 = state; - return old_state; -} - /*---------------------------------------------------------------------------- * _PyFloat_{Pack,Unpack}{4,8}. See floatobject.h. * Modified: python/branches/trunk-math/Python/pystate.c ============================================================================== --- python/branches/trunk-math/Python/pystate.c (original) +++ python/branches/trunk-math/Python/pystate.c Sat Feb 16 15:50:56 2008 @@ -193,7 +193,7 @@ tstate->c_profileobj = NULL; tstate->c_traceobj = NULL; - tstate->float_ieee754 = 0; + tstate->float_ieee754 = PyIEEE_Python; #ifdef WITH_THREAD _PyGILState_NoteThreadState(tstate); @@ -635,6 +635,23 @@ PyEval_SaveThread(); } +int +PyIEEE_GetState(void) +{ + return PyThreadState_Get()->float_ieee754; +} + +int +PyIEEE_SetState(int state) +{ + int old_state; + PyThreadState *tstate = PyThreadState_Get(); + + old_state = tstate->float_ieee754; + tstate->float_ieee754 = state; + return old_state; +} + #ifdef __cplusplus } #endif From buildbot at python.org Sat Feb 16 16:31:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 16 Feb 2008 15:31:37 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080216153138.16EDD1E400F@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/676 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From buildbot at python.org Sat Feb 16 16:46:44 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 16 Feb 2008 15:46:44 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080216154644.D07B01E400F@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2550 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: amaury.forgeotdarc,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_smtplib test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From python-checkins at python.org Sat Feb 16 19:05:17 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 19:05:17 +0100 (CET) Subject: [Python-checkins] r60862 - in tracker/instances/jobs: detectors/sendmail.py detectors/statusauditor.py html/offer.item.html html/page.html schema.py Message-ID: <20080216180517.AD3E51E4022@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 19:05:17 2008 New Revision: 60862 Modified: tracker/instances/jobs/detectors/sendmail.py tracker/instances/jobs/detectors/statusauditor.py tracker/instances/jobs/html/offer.item.html tracker/instances/jobs/html/page.html tracker/instances/jobs/schema.py Log: Implement all known requirements. Modified: tracker/instances/jobs/detectors/sendmail.py ============================================================================== --- tracker/instances/jobs/detectors/sendmail.py (original) +++ tracker/instances/jobs/detectors/sendmail.py Sat Feb 16 19:05:17 2008 @@ -186,5 +186,6 @@ def init(db): + return db.offer.react('set', sendmail) db.offer.react('create', sendmail) Modified: tracker/instances/jobs/detectors/statusauditor.py ============================================================================== --- tracker/instances/jobs/detectors/statusauditor.py (original) +++ tracker/instances/jobs/detectors/statusauditor.py Sat Feb 16 19:05:17 2008 @@ -1,95 +1,75 @@ +import os, roundup.date + def init_status(db, cl, nodeid, newvalues): """ Make sure the status is set on new offers""" if newvalues.has_key('status') and newvalues['status']: + if newvalues['status'] == posted: + raise ValueError, "You can only set the offer to submitted, not posted" return new_id = db.status.lookup('submitted') newvalues['status'] = new_id -def block_resolution(db, cl, nodeid, newvalues): - """ If the offer has blockers, don't allow it to be resolved.""" - - if nodeid is None: - dependencies = [] - else: - dependencies = cl.get(nodeid, 'dependencies') - dependencies = newvalues.get('dependencies', dependencies) - - # don't do anything if there's no blockers or the status hasn't - # changed - if not dependencies or not newvalues.has_key('status'): +def audit_status(db, cl, nodeid, newvalues): + "Prevent regular users from posting their offers themselves." + user = db.getuid() + if newvalues.get('status') != posted: return - - # format the info - u = db.config.TRACKER_WEB - s = ', '.join(['%s'%(u,id,id) for id in dependencies]) - if len(dependencies) == 1: - s = 'offer %s is'%s + if db.user.get(user, 'roles').lower().find('editor') != -1: + # Ok if an editor posted it; set the posting date + newvalues['posted'] = roundup.date.Date() else: - s = 'offers %s are'%s - - # ok, see if we're trying to resolve - if newvalues.get('status') and newvalues['status'] == db.status.lookup('closed'): - raise ValueError, "This offer can't be closed until %s closed."%s - - -def resolve(db, cl, nodeid, newvalues): - """Make sure status, resolution, and superseder values match.""" - - status_change = newvalues.get('status') - status_close = status_change and newvalues['status'] == db.status.lookup('closed') - - # Make sure resolution and superseder get only set when status->close - if not status_change or not status_close: - if newvalues.get('resolution') or newvalues.get('superseder'): - raise ValueError, "resolution and superseder must only be set when a offer is closed" - - # Make sure resolution is set when status->close - if status_close: - if not newvalues.get('resolution'): - raise ValueError, "resolution must be set when a offer is closed" - - # Make sure superseder is set when resolution->duplicate - if newvalues['resolution'] == db.resolution.lookup('duplicate'): - if not newvalues.get('superseder'): - raise ValueError, "please provide a superseder when closing a offer as 'duplicate'" - - - -def resolve_dependencies(db, cl, nodeid, oldvalues): - """ When we resolve an offer that's a blocker, remove it from the - blockers list of the offer(s) it blocks.""" - - newstatus = cl.get(nodeid,'status') - - # no change? - if oldvalues.get('status', None) == newstatus: - return - - closed_id = db.status.lookup('closed') - - # interesting? - if newstatus != closed_id: - return + # reject posts attempted by mere users + raise ValueError, "You must not set the status to 'posted'." - # yes - find all the dependend offers, if any, and remove me from - # their dependency list - offers = cl.find(dependencies=nodeid) - for offerid in offers: - dependencies = cl.get(offerid, 'dependencies') - if nodeid in dependencies: - dependencies.remove(nodeid) - cl.set(offerid, dependencies=dependencies) +def inner_generate(db, cl): + filename = os.path.join(db.config.HOME, + db.config.options['TEMPLATES'].get(), + "posted.txt") + f = open(filename, "w") + for offer in cl.filter(None, {'status':posted}, + sort=[('-','posted')]): + offer = cl.getnode(offer) + head = "" + if offer.organization_url: + head += "`" + head += offer.organization + if offer.organization_url: + head += "`__" + if offer.agency: + head += " [AGENCY]" + head += " (%s)" % offer.location + print >>f, head + print >>f, "="*len(head) + print >>f + print >>f, "*Posted: %s*" % offer.posted.pretty() + print >>f + if offer.description: + print >>f, "**Job Description**:", db.msg.get(offer.description, + 'content') + print >>f + if offer.python_used_for: + print >>f, "**What Python is used for**:", \ + db.msg.get(offer.python_used_for, 'content') + print >>f + print >>f, '----------' + print >>f + + f.close() + +def generate(db, cl, nodeid, oldvalues): + if cl.get(nodeid, 'status') == posted: + inner_generate(db,cl) def init(db): + global posted + posted = db.status.lookup('posted') # fire before changes are made db.offer.audit('create', init_status) -# db.offer.audit('create', block_resolution) -# db.offer.audit('set', block_resolution) -# db.offer.audit('set', resolve) + db.offer.audit('set', audit_status) # adjust after changes are committed -# db.offer.react('set', resolve_dependencies) + db.offer.react('set', generate) Modified: tracker/instances/jobs/html/offer.item.html ============================================================================== --- tracker/instances/jobs/html/offer.item.html (original) +++ tracker/instances/jobs/html/offer.item.html Sat Feb 16 19:05:17 2008 @@ -40,14 +40,13 @@
    Posted content -submit button - - @@ -55,9 +54,9 @@ - - @@ -65,33 +64,57 @@ - - - + + + + + + + + + + + + + - + - + - + -
    Title:Title +
    Company +
    Company URL (optional)OK - + +
    We are a job agencyOK + + +
    Job LocationOK + + +
    Description: +
    What Python is used for: +
    +submit button
    Modified: tracker/instances/jobs/html/page.html ============================================================================== --- tracker/instances/jobs/html/page.html (original) +++ tracker/instances/jobs/html/page.html Sat Feb 16 19:05:17 2008 @@ -201,6 +201,8 @@
    +

    This is a demo installation. Do not use it for real jobs.

    +

    Modified: tracker/instances/jobs/schema.py ============================================================================== --- tracker/instances/jobs/schema.py (original) +++ tracker/instances/jobs/schema.py Sat Feb 16 19:05:17 2008 @@ -67,10 +67,12 @@ offer = IssueClass(db, "offer", organization=String(), organization_url=String(), + location=String(), agency=Boolean(), description=Link('msg'), python_used_for=Link('msg'), status=Link('status'), + posted=Date() ) # @@ -167,12 +169,29 @@ description='User can report and discuss offers') db.security.addPermissionToRole('User', p) +# Users may edit their offers before they get posted +def edit_unposted(db, userid, itemid): + status = db.offer.get(itemid, 'status') + status = db.status.get(status, 'name') + if status == 'posted': + return False + return own_offer(db, userid, itemid) + p = db.security.addPermission(name='Edit', klass='offer', properties=('title','organization', 'organization_url', 'agency', 'description', 'python_used_for', - 'messages', 'files', 'nosy'), - description='User can add and discuss offers') + 'messages', 'files'), + description='User can edit unposted offers', + check=edit_unposted) +db.security.addPermissionToRole('User', p) + +# Users can edit the status always (e.g. to withdraw an issue); +# an auditor will make sure they don't change it to "posted". +p = db.security.addPermission(name='Edit', klass='offer', + properties=('status','nosy'), + description='User can change the status of their offers', + check=own_offer) db.security.addPermissionToRole('User', p) db.security.addPermissionToRole('User', 'SB: May Report Misclassified') @@ -278,7 +297,7 @@ # Note permissions settings for file and msg above (due to spambayes # integration). -for cl in 'offer', 'status': +for cl in 'status',: db.security.addPermissionToRole('Anonymous', 'View', cl) # Allow users to see the realname From python-checkins at python.org Sat Feb 16 19:21:40 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 19:21:40 +0100 (CET) Subject: [Python-checkins] r60863 - tracker/instances/jobs/detectors/statusauditor.py Message-ID: <20080216182140.B60E51E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 19:21:40 2008 New Revision: 60863 Modified: tracker/instances/jobs/detectors/statusauditor.py Log: Avoid status lookups in detector init. Modified: tracker/instances/jobs/detectors/statusauditor.py ============================================================================== --- tracker/instances/jobs/detectors/statusauditor.py (original) +++ tracker/instances/jobs/detectors/statusauditor.py Sat Feb 16 19:21:40 2008 @@ -4,7 +4,7 @@ """ Make sure the status is set on new offers""" if newvalues.has_key('status') and newvalues['status']: - if newvalues['status'] == posted: + if db.status.get(newvalues['status'], 'name') == 'posted': raise ValueError, "You can only set the offer to submitted, not posted" return @@ -15,7 +15,8 @@ def audit_status(db, cl, nodeid, newvalues): "Prevent regular users from posting their offers themselves." user = db.getuid() - if newvalues.get('status') != posted: + if (newvalues.has_key('status') and + db.status.get(newvalues['status'], 'name') != 'posted'): return if db.user.get(user, 'roles').lower().find('editor') != -1: # Ok if an editor posted it; set the posting date @@ -29,7 +30,7 @@ db.config.options['TEMPLATES'].get(), "posted.txt") f = open(filename, "w") - for offer in cl.filter(None, {'status':posted}, + for offer in cl.filter(None, {'status':db.status.lookup('posted')}, sort=[('-','posted')]): offer = cl.getnode(offer) head = "" @@ -60,13 +61,15 @@ f.close() def generate(db, cl, nodeid, oldvalues): - if cl.get(nodeid, 'status') == posted: + newstatus = cl.get(nodeid, 'status') + oldstatus = oldvalues['status'] + posted = db.status.lookup('posted') + print oldstatus, newstatus, posted + if newstatus != oldstatus and (newstatus==posted or oldstatus==posted): inner_generate(db,cl) def init(db): - global posted - posted = db.status.lookup('posted') # fire before changes are made db.offer.audit('create', init_status) db.offer.audit('set', audit_status) From python-checkins at python.org Sat Feb 16 19:32:33 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Feb 2008 19:32:33 +0100 (CET) Subject: [Python-checkins] r60864 - tracker/instances/jobs/html/offer.item.html Message-ID: <20080216183233.703031E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 16 19:32:33 2008 New Revision: 60864 Modified: tracker/instances/jobs/html/offer.item.html Log: Fix cut-n-paste error. Modified: tracker/instances/jobs/html/offer.item.html ============================================================================== --- tracker/instances/jobs/html/offer.item.html (original) +++ tracker/instances/jobs/html/offer.item.html Sat Feb 16 19:32:33 2008 @@ -53,22 +53,22 @@

    CompanyOrganization - +
    Company URL (optional)Organization URL (optional) OK - +
    - +
    - +
    {% if collapse -%} - {%- endif %} {% if indent %}   {% endif %} Modified: doctools/trunk/sphinx/templates/search.html ============================================================================== --- doctools/trunk/sphinx/templates/search.html (original) +++ doctools/trunk/sphinx/templates/search.html Sat Feb 23 16:24:30 2008 @@ -1,7 +1,7 @@ {% extends "layout.html" %} {% set title = 'Search Documentation' %} {% block head %} - + {% endblock %} {% block body %}

    Search Documentation

    Modified: doctools/trunk/sphinx/web/application.py ============================================================================== --- doctools/trunk/sphinx/web/application.py (original) +++ doctools/trunk/sphinx/web/application.py Sat Feb 23 16:24:30 2008 @@ -821,6 +821,6 @@ if check_superuser: _check_superuser(app) app = SharedDataMiddleware(app, { - '/style': path.join(config['data_root_path'], 'style') + '/static': path.join(config['data_root_path'], 'static') }) return app From python-checkins at python.org Sat Feb 23 16:41:52 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 16:41:52 +0100 (CET) Subject: [Python-checkins] r60987 - python/trunk/Doc/library/simplexmlrpcserver.rst Message-ID: <20080223154152.097FC1E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 16:41:51 2008 New Revision: 60987 Modified: python/trunk/Doc/library/simplexmlrpcserver.rst Log: #2072: correct documentation for .rpc_paths Modified: python/trunk/Doc/library/simplexmlrpcserver.rst ============================================================================== --- python/trunk/Doc/library/simplexmlrpcserver.rst (original) +++ python/trunk/Doc/library/simplexmlrpcserver.rst Sat Feb 23 16:41:51 2008 @@ -120,7 +120,7 @@ Registers the XML-RPC multicall function system.multicall. -.. attribute:: SimpleXMLRPCServer.rpc_paths +.. attribute:: SimpleXMLRPCRequestHandler.rpc_paths An attribute value that must be a tuple listing valid path portions of the URL for receiving XML-RPC requests. Requests posted to other paths will result in a @@ -136,9 +136,15 @@ Server code:: from SimpleXMLRPCServer import SimpleXMLRPCServer + from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler + + # Restrict to a particular path. + class RequestHandler(SimpleXMLRPCRequestHandler): + rpc_paths = ('/RPC2',) # Create server - server = SimpleXMLRPCServer(("localhost", 8000)) + server = SimpleXMLRPCServer(("localhost", 8000), + requestHandler=RequestHandler) server.register_introspection_functions() # Register pow() function; this will use the value of From buildbot at python.org Sat Feb 23 16:42:38 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 15:42:38 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080223154238.E56FF1E4016@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/372 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_compiler ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_compiler.py", line 55, in testCompileLibrary args[0] += "[in file %s]" % basename TypeError: unsupported operand type(s) for +=: 'int' and 'str' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 16:43:48 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 16:43:48 +0100 (CET) Subject: [Python-checkins] r60988 - python/trunk/Doc/library/dis.rst Message-ID: <20080223154348.E812B1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 16:43:48 2008 New Revision: 60988 Modified: python/trunk/Doc/library/dis.rst Log: #2161: Fix opcode name. Modified: python/trunk/Doc/library/dis.rst ============================================================================== --- python/trunk/Doc/library/dis.rst (original) +++ python/trunk/Doc/library/dis.rst Sat Feb 23 16:43:48 2008 @@ -544,7 +544,7 @@ .. opcode:: STORE_NAME (namei) Implements ``name = TOS``. *namei* is the index of *name* in the attribute - :attr:`co_names` of the code object. The compiler tries to use ``STORE_LOCAL`` + :attr:`co_names` of the code object. The compiler tries to use ``STORE_FAST`` or ``STORE_GLOBAL`` if possible. From python-checkins at python.org Sat Feb 23 16:49:36 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 16:49:36 +0100 (CET) Subject: [Python-checkins] r60989 - python/trunk/Lib/curses/__init__.py Message-ID: <20080223154936.1965E1E402B@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 16:49:35 2008 New Revision: 60989 Modified: python/trunk/Lib/curses/__init__.py Log: #1119331: ncurses will just call exit() if the terminal name isn't found. Call setupterm() first so that we get a Python exception instead of just existing. Modified: python/trunk/Lib/curses/__init__.py ============================================================================== --- python/trunk/Lib/curses/__init__.py (original) +++ python/trunk/Lib/curses/__init__.py Sat Feb 23 16:49:35 2008 @@ -14,6 +14,7 @@ from _curses import * from curses.wrapper import wrapper +import os as _os # Some constants, most notably the ACS_* ones, are only added to the C # _curses module's dictionary after initscr() is called. (Some @@ -25,6 +26,9 @@ def initscr(): import _curses, curses + # we call setupterm() here because it raises an error + # instead of calling exit() in error cases. + setupterm(term=_os.environ.get("TERM", "unknown")) stdscr = _curses.initscr() for key, value in _curses.__dict__.items(): if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'): From buildbot at python.org Sat Feb 23 16:56:24 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 15:56:24 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080223155625.025EE1E4016@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2893 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,facundo.batista,georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 17:05:26 2008 From: python-checkins at python.org (eric.smith) Date: Sat, 23 Feb 2008 17:05:26 +0100 (CET) Subject: [Python-checkins] r60990 - python/trunk/Python/mystrtoul.c Message-ID: <20080223160526.BEC9B1E4016@bag.python.org> Author: eric.smith Date: Sat Feb 23 17:05:26 2008 New Revision: 60990 Modified: python/trunk/Python/mystrtoul.c Log: Removed duplicate Py_CHARMASK define. It's already defined in Python.h. Modified: python/trunk/Python/mystrtoul.c ============================================================================== --- python/trunk/Python/mystrtoul.c (original) +++ python/trunk/Python/mystrtoul.c Sat Feb 23 17:05:26 2008 @@ -5,14 +5,6 @@ #define _SGI_MP_SOURCE #endif -/* Convert a possibly signed character to a nonnegative int */ -/* XXX This assumes characters are 8 bits wide */ -#ifdef __CHAR_UNSIGNED__ -#define Py_CHARMASK(c) (c) -#else -#define Py_CHARMASK(c) ((c) & 0xff) -#endif - /* strtol and strtoul, renamed to avoid conflicts */ From buildbot at python.org Sat Feb 23 17:12:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 16:12:55 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080223161255.D148A1E4016@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/229 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_compiler test_curses ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_compiler.py", line 55, in testCompileLibrary args[0] += "[in file %s]" % basename TypeError: unsupported operand type(s) for +=: 'int' and 'str' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 17:23:06 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 17:23:06 +0100 (CET) Subject: [Python-checkins] r60991 - in python/trunk: Doc/library/xmlrpclib.rst Doc/whatsnew/2.6.rst Lib/test/test_xmlrpc.py Lib/xmlrpclib.py Message-ID: <20080223162306.6A2921E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 17:23:05 2008 New Revision: 60991 Modified: python/trunk/Doc/library/xmlrpclib.rst python/trunk/Doc/whatsnew/2.6.rst python/trunk/Lib/test/test_xmlrpc.py python/trunk/Lib/xmlrpclib.py Log: #1330538: Improve comparison of xmlrpclib.DateTime and datetime instances. Remove automatic handling of datetime.date and datetime.time. This breaks backward compatibility, but python-dev discussion was strongly against this automatic conversion; see the bug for a link. Modified: python/trunk/Doc/library/xmlrpclib.rst ============================================================================== --- python/trunk/Doc/library/xmlrpclib.rst (original) +++ python/trunk/Doc/library/xmlrpclib.rst Sat Feb 23 17:23:05 2008 @@ -34,10 +34,7 @@ all clients and servers; see http://ontosys.com/xml-rpc/extensions.php for a description. The *use_datetime* flag can be used to cause date/time values to be presented as :class:`datetime.datetime` objects; this is false by default. - :class:`datetime.datetime`, :class:`datetime.date` and :class:`datetime.time` - objects may be passed to calls. :class:`datetime.date` objects are converted - with a time of "00:00:00". :class:`datetime.time` objects are converted using - today's date. + :class:`datetime.datetime` objects may be passed to calls. Both the HTTP and HTTPS transports support the URL syntax extension for HTTP Basic Authentication: ``http://user:pass at host:port/path``. The ``user:pass`` @@ -81,9 +78,7 @@ +---------------------------------+---------------------------------------------+ | :const:`dates` | in seconds since the epoch (pass in an | | | instance of the :class:`DateTime` class) or | - | | a :class:`datetime.datetime`, | - | | :class:`datetime.date` or | - | | :class:`datetime.time` instance | + | | a :class:`datetime.datetime` instance. | +---------------------------------+---------------------------------------------+ | :const:`binary data` | pass in an instance of the :class:`Binary` | | | wrapper class | @@ -221,10 +216,10 @@ DateTime Objects ---------------- -This class may be initialized with seconds since the epoch, a time tuple, an ISO -8601 time/date string, or a :class:`datetime.datetime`, :class:`datetime.date` -or :class:`datetime.time` instance. It has the following methods, supported -mainly for internal use by the marshalling/unmarshalling code: +This class may be initialized with seconds since the epoch, a time +tuple, an ISO 8601 time/date string, or a :class:`datetime.datetime` +instance. It has the following methods, supported mainly for internal +use by the marshalling/unmarshalling code: .. method:: DateTime.decode(string) @@ -507,10 +502,7 @@ ``None`` if no method name is present in the packet. If the XML-RPC packet represents a fault condition, this function will raise a :exc:`Fault` exception. The *use_datetime* flag can be used to cause date/time values to be presented as - :class:`datetime.datetime` objects; this is false by default. Note that even if - you call an XML-RPC method with :class:`datetime.date` or :class:`datetime.time` - objects, they are converted to :class:`DateTime` objects internally, so only - :class:`datetime.datetime` objects will be returned. + :class:`datetime.datetime` objects; this is false by default. .. versionchanged:: 2.5 The *use_datetime* flag was added. Modified: python/trunk/Doc/whatsnew/2.6.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.6.rst (original) +++ python/trunk/Doc/whatsnew/2.6.rst Sat Feb 23 17:23:05 2008 @@ -1511,6 +1511,15 @@ .. Issue 1706815 +* The :mod:`xmlrpclib` module no longer automatically converts + :class:`datetime.date` and :class:`datetime.time` to the + :class:`xmlrpclib.DateTime` type; the conversion semantics were + not necessarily correct for all applications. Code using + :mod:`xmlrpclib` should convert :class:`date` and :class:`time` + instances. + + .. Issue 1330538 + .. ====================================================================== Modified: python/trunk/Lib/test/test_xmlrpc.py ============================================================================== --- python/trunk/Lib/test/test_xmlrpc.py (original) +++ python/trunk/Lib/test/test_xmlrpc.py Sat Feb 23 17:23:05 2008 @@ -33,10 +33,6 @@ (2005, 02, 10, 11, 41, 23, 0, 1, -1)), 'datetime3': xmlrpclib.DateTime( datetime.datetime(2005, 02, 10, 11, 41, 23)), - 'datetime4': xmlrpclib.DateTime( - datetime.date(2005, 02, 10)), - 'datetime5': xmlrpclib.DateTime( - datetime.time(11, 41, 23)), }] class XMLRPCTestCase(unittest.TestCase): @@ -59,34 +55,14 @@ (newdt,), m = xmlrpclib.loads(s, use_datetime=0) self.assertEquals(newdt, xmlrpclib.DateTime('20050210T11:41:23')) - def test_dump_bare_date(self): - # This checks that an unwrapped datetime.date object can be handled - # by the marshalling code. This can't be done via test_dump_load() - # since the unmarshaller produces a datetime object - d = datetime.datetime(2005, 02, 10, 11, 41, 23).date() - s = xmlrpclib.dumps((d,)) - (newd,), m = xmlrpclib.loads(s, use_datetime=1) - self.assertEquals(newd.date(), d) - self.assertEquals(newd.time(), datetime.time(0, 0, 0)) - self.assertEquals(m, None) - - (newdt,), m = xmlrpclib.loads(s, use_datetime=0) - self.assertEquals(newdt, xmlrpclib.DateTime('20050210T00:00:00')) - - def test_dump_bare_time(self): - # This checks that an unwrapped datetime.time object can be handled - # by the marshalling code. This can't be done via test_dump_load() - # since the unmarshaller produces a datetime object - t = datetime.datetime(2005, 02, 10, 11, 41, 23).time() - s = xmlrpclib.dumps((t,)) - (newt,), m = xmlrpclib.loads(s, use_datetime=1) - today = datetime.datetime.now().date().strftime("%Y%m%d") - self.assertEquals(newt.time(), t) - self.assertEquals(newt.date(), datetime.datetime.now().date()) - self.assertEquals(m, None) - - (newdt,), m = xmlrpclib.loads(s, use_datetime=0) - self.assertEquals(newdt, xmlrpclib.DateTime('%sT11:41:23'%today)) + def test_cmp_datetime_DateTime(self): + now = datetime.datetime.now() + dt = xmlrpclib.DateTime(now.timetuple()) + self.assert_(dt == now) + self.assert_(now == dt) + then = now + datetime.timedelta(seconds=4) + self.assert_(then >= dt) + self.assert_(dt < then) def test_bug_1164912 (self): d = xmlrpclib.DateTime() @@ -242,21 +218,6 @@ t = xmlrpclib.DateTime(d) self.assertEqual(str(t), '20070102T03:04:05') - def test_datetime_date(self): - d = datetime.date(2007,9,8) - t = xmlrpclib.DateTime(d) - self.assertEqual(str(t), '20070908T00:00:00') - - def test_datetime_time(self): - d = datetime.time(13,17,19) - # allow for date rollover by checking today's or tomorrow's dates - dd1 = datetime.datetime.now().date() - dd2 = dd1 + datetime.timedelta(days=1) - vals = (dd1.strftime('%Y%m%dT13:17:19'), - dd2.strftime('%Y%m%dT13:17:19')) - t = xmlrpclib.DateTime(d) - self.assertEqual(str(t) in vals, True) - def test_repr(self): d = datetime.datetime(2007,1,2,3,4,5) t = xmlrpclib.DateTime(d) Modified: python/trunk/Lib/xmlrpclib.py ============================================================================== --- python/trunk/Lib/xmlrpclib.py (original) +++ python/trunk/Lib/xmlrpclib.py Sat Feb 23 17:23:05 2008 @@ -357,13 +357,6 @@ if datetime and isinstance(value, datetime.datetime): self.value = value.strftime("%Y%m%dT%H:%M:%S") return - if datetime and isinstance(value, datetime.date): - self.value = value.strftime("%Y%m%dT%H:%M:%S") - return - if datetime and isinstance(value, datetime.time): - today = datetime.datetime.now().strftime("%Y%m%d") - self.value = value.strftime(today+"T%H:%M:%S") - return if not isinstance(value, (TupleType, time.struct_time)): if value == 0: value = time.time() @@ -371,10 +364,57 @@ value = time.strftime("%Y%m%dT%H:%M:%S", value) self.value = value - def __cmp__(self, other): + def make_comparable(self, other): if isinstance(other, DateTime): - other = other.value - return cmp(self.value, other) + s = self.value + o = other.value + elif datetime and isinstance(other, datetime.datetime): + s = self.value + o = other.strftime("%Y%m%dT%H:%M:%S") + elif isinstance(other, (str, unicode)): + s = self.value + o = other + elif hasattr(other, "timetuple"): + s = self.timetuple() + o = other.timetuple() + else: + otype = (hasattr(other, "__class__") + and other.__class__.__name__ + or type(other)) + raise TypeError("Can't compare %s and %s" % + (self.__class__.__name__, otype)) + return s, o + + def __lt__(self, other): + s, o = self.make_comparable(other) + return s < o + + def __le__(self, other): + s, o = self.make_comparable(other) + return s <= o + + def __gt__(self, other): + s, o = self.make_comparable(other) + return s > o + + def __ge__(self, other): + s, o = self.make_comparable(other) + return s >= o + + def __eq__(self, other): + s, o = self.make_comparable(other) + return s == o + + def __ne__(self, other): + s, o = self.make_comparable(other) + return s != o + + def timetuple(self): + return time.strptime(self.value, "%Y%m%dT%H:%M:%S") + + def __cmp__(self, other): + s, o = self.make_comparable(other) + return cmp(s, o) ## # Get date/time value. @@ -736,19 +776,6 @@ write("\n") dispatch[datetime.datetime] = dump_datetime - def dump_date(self, value, write): - write("") - write(value.strftime("%Y%m%dT00:00:00")) - write("\n") - dispatch[datetime.date] = dump_date - - def dump_time(self, value, write): - write("") - write(datetime.datetime.now().date().strftime("%Y%m%dT")) - write(value.strftime("%H:%M:%S")) - write("\n") - dispatch[datetime.time] = dump_time - def dump_instance(self, value, write): # check for special wrappers if value.__class__ in WRAPPERS: From python-checkins at python.org Sat Feb 23 17:39:43 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 17:39:43 +0100 (CET) Subject: [Python-checkins] r60994 - python/trunk/Doc/library/pickle.rst Message-ID: <20080223163943.BD2C51E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 17:39:43 2008 New Revision: 60994 Modified: python/trunk/Doc/library/pickle.rst Log: #835521: Add index entries for various pickle-protocol methods and attributes Modified: python/trunk/Doc/library/pickle.rst ============================================================================== --- python/trunk/Doc/library/pickle.rst (original) +++ python/trunk/Doc/library/pickle.rst Sat Feb 23 17:39:43 2008 @@ -463,6 +463,11 @@ Pickling and unpickling extension types ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. index:: + single: __reduce__() (pickle protocol) + single: __reduce_ex__() (pickle protocol) + single: __safe_for_unpickling__ (pickle protocol) + When the :class:`Pickler` encounters an object of a type it knows nothing about --- such as an extension type --- it looks in two places for a hint of how to pickle it. One alternative is for the object to implement a :meth:`__reduce__` @@ -541,6 +546,10 @@ Pickling and unpickling external objects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. index:: + single: persistent_id (pickle protocol) + single: persistent_load (pickle protocol) + For the benefit of object persistence, the :mod:`pickle` module supports the notion of a reference to an object outside the pickled data stream. Such objects are referenced by a "persistent id", which is just an arbitrary string @@ -630,6 +639,10 @@ Subclassing Unpicklers ---------------------- +.. index:: + single: load_global() (pickle protocol) + single: find_global() (pickle protocol) + By default, unpickling will import any class that it finds in the pickle data. You can control exactly what gets unpickled and what gets called by customizing your unpickler. Unfortunately, exactly how you do this is different depending From python-checkins at python.org Sat Feb 23 18:10:46 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 18:10:46 +0100 (CET) Subject: [Python-checkins] r60995 - in python/trunk: Lib/test/test_minidom.py Lib/xml/dom/minidom.py Misc/ACKS Message-ID: <20080223171046.B114A1E400B@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 18:10:46 2008 New Revision: 60995 Modified: python/trunk/Lib/test/test_minidom.py python/trunk/Lib/xml/dom/minidom.py python/trunk/Misc/ACKS Log: #1433694: minidom's .normalize() failed to set .nextSibling for last element. Fix by Malte Helmert Modified: python/trunk/Lib/test/test_minidom.py ============================================================================== --- python/trunk/Lib/test/test_minidom.py (original) +++ python/trunk/Lib/test/test_minidom.py Sat Feb 23 18:10:46 2008 @@ -791,6 +791,14 @@ "testNormalize -- single empty node removed") doc.unlink() + def testBug1433694(self): + doc = parseString("t") + node = doc.documentElement + node.childNodes[1].nodeValue = "" + node.normalize() + self.confirm(node.childNodes[-1].nextSibling == None, + "Final child's .nextSibling should be None") + def testSiblings(self): doc = parseString("text?") root = doc.documentElement Modified: python/trunk/Lib/xml/dom/minidom.py ============================================================================== --- python/trunk/Lib/xml/dom/minidom.py (original) +++ python/trunk/Lib/xml/dom/minidom.py Sat Feb 23 18:10:46 2008 @@ -203,6 +203,8 @@ L.append(child) if child.nodeType == Node.ELEMENT_NODE: child.normalize() + if L: + L[-1].nextSibling = None self.childNodes[:] = L def cloneNode(self, deep): Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sat Feb 23 18:10:46 2008 @@ -274,6 +274,7 @@ Rycharde Hawkes Jochen Hayek Thomas Heller +Malte Helmert Lance Finn Helsten Jonathan Hendry James Henstridge From python-checkins at python.org Sat Feb 23 18:14:24 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 18:14:24 +0100 (CET) Subject: [Python-checkins] r60996 - python/branches/release25-maint/Misc/NEWS Message-ID: <20080223171424.1DE691E400B@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 18:14:23 2008 New Revision: 60996 Modified: python/branches/release25-maint/Misc/NEWS Log: Add old NEWS item Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Feb 23 18:14:23 2008 @@ -102,6 +102,9 @@ Library ------- +- curses.textpad: Fix off-by-one error that resulted in characters + being missed from the contents of a Textbox. + - Patch #1966: Break infinite loop in httplib when the servers implements the chunked encoding incorrectly. From buildbot at python.org Sat Feb 23 18:16:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 17:16:36 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080223171636.4C69B1E4019@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/552 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 18:18:20 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 18:18:20 +0100 (CET) Subject: [Python-checkins] r60997 - python/branches/release25-maint/Misc/NEWS Message-ID: <20080223171820.50D9B1E400B@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 18:18:19 2008 New Revision: 60997 Modified: python/branches/release25-maint/Misc/NEWS Log: Update NEWS for a future 2.5.3 release Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Feb 23 18:18:19 2008 @@ -4,6 +4,29 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) +What's New in Python 2.5.3? +============================= + +*Release date: XX-XXX-20XX* + +Core and builtins +----------------- + +Library +------- + +Extension Modules +----------------- + +Documentation +------------- + +Build +----- + +Windows +------- + What's New in Python 2.5.2? ============================= From python-checkins at python.org Sat Feb 23 18:21:44 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 18:21:44 +0100 (CET) Subject: [Python-checkins] r60998 - in python/branches/release25-maint: Lib/test/test_minidom.py Lib/xml/dom/minidom.py Misc/ACKS Misc/NEWS Message-ID: <20080223172144.90A3F1E401E@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 18:21:44 2008 New Revision: 60998 Modified: python/branches/release25-maint/Lib/test/test_minidom.py python/branches/release25-maint/Lib/xml/dom/minidom.py python/branches/release25-maint/Misc/ACKS python/branches/release25-maint/Misc/NEWS Log: #1433694: minidom's .normalize() failed to set .nextSibling for last element. Fix by Malte Helmert Modified: python/branches/release25-maint/Lib/test/test_minidom.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_minidom.py (original) +++ python/branches/release25-maint/Lib/test/test_minidom.py Sat Feb 23 18:21:44 2008 @@ -806,6 +806,14 @@ "testNormalize -- single empty node removed") doc.unlink() +def testBug1433694(): + doc = parseString("t") + node = doc.documentElement + node.childNodes[1].nodeValue = "" + node.normalize() + confirm(node.childNodes[-1].nextSibling == None, + "Final child's .nextSibling should be None") + def testSiblings(): doc = parseString("text?") root = doc.documentElement Modified: python/branches/release25-maint/Lib/xml/dom/minidom.py ============================================================================== --- python/branches/release25-maint/Lib/xml/dom/minidom.py (original) +++ python/branches/release25-maint/Lib/xml/dom/minidom.py Sat Feb 23 18:21:44 2008 @@ -203,6 +203,8 @@ L.append(child) if child.nodeType == Node.ELEMENT_NODE: child.normalize() + if L: + L[-1].nextSibling = None self.childNodes[:] = L def cloneNode(self, deep): Modified: python/branches/release25-maint/Misc/ACKS ============================================================================== --- python/branches/release25-maint/Misc/ACKS (original) +++ python/branches/release25-maint/Misc/ACKS Sat Feb 23 18:21:44 2008 @@ -266,6 +266,7 @@ Rycharde Hawkes Jochen Hayek Thomas Heller +Malte Helmert Lance Finn Helsten Jonathan Hendry James Henstridge Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Feb 23 18:21:44 2008 @@ -15,6 +15,10 @@ Library ------- +- Bug #1433694: minidom's .normalize() failed to set .nextSibling for + last child element. + + Extension Modules ----------------- From buildbot at python.org Sat Feb 23 18:30:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 17:30:10 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080223173010.7D91C1E4019@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/632 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,christian.heimes,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 98, in run svr.serve_a_few() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_socketserver.py", line 67, in serve_a_few self.handle_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=44006 and list=[44033] Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 318, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 301, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 3 tests failed: test_compiler test_curses test_socketserver ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/test/test_compiler.py", line 55, in testCompileLibrary args[0] += "[in file %s]" % basename TypeError: unsupported operand type(s) for +=: 'int' and 'str' sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 18:32:50 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 17:32:50 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080223173250.ABD401E4019@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2581 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,eric.smith,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_compiler test_shelve test_smtplib ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_compiler.py", line 55, in testCompileLibrary args[0] += "[in file %s]" % basename TypeError: unsupported operand type(s) for +=: 'int' and 'str' ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 18:35:47 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 23 Feb 2008 18:35:47 +0100 (CET) Subject: [Python-checkins] r60999 - python/branches/release25-maint/Include/patchlevel.h Message-ID: <20080223173547.4C33E1E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 23 18:35:47 2008 New Revision: 60999 Modified: python/branches/release25-maint/Include/patchlevel.h Log: Bump version for 2.5.3a0. Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Sat Feb 23 18:35:47 2008 @@ -21,12 +21,12 @@ /* Version parsed out into numeric values */ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 5 -#define PY_MICRO_VERSION 2 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_MICRO_VERSION 3 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "2.5.2" +#define PY_VERSION "2.5.3a0" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" From python-checkins at python.org Sat Feb 23 18:40:16 2008 From: python-checkins at python.org (christian.heimes) Date: Sat, 23 Feb 2008 18:40:16 +0100 (CET) Subject: [Python-checkins] r61000 - in python/trunk: Lib/SimpleHTTPServer.py Lib/bsddb/test/test_basics.py Lib/bsddb/test/test_compat.py Lib/bsddb/test/test_cursor_pget_bug.py Lib/bsddb/test/test_dbobj.py Lib/bsddb/test/test_dbshelve.py Lib/bsddb/test/test_dbtables.py Lib/bsddb/test/test_env_close.py Lib/bsddb/test/test_get_none.py Lib/bsddb/test/test_join.py Lib/bsddb/test/test_lock.py Lib/bsddb/test/test_misc.py Lib/bsddb/test/test_pickle.py Lib/bsddb/test/test_queue.py Lib/bsddb/test/test_recno.py Lib/bsddb/test/test_sequence.py Lib/bsddb/test/test_thread.py Lib/compiler/transformer.py Lib/ctypes/test/__init__.py Lib/ctypes/test/test_checkretval.py Lib/ctypes/test/test_find.py Lib/ctypes/test/test_libc.py Lib/ctypes/test/test_loading.py Lib/ctypes/test/test_numbers.py Lib/curses/wrapper.py Lib/distutils/bcppcompiler.py Lib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_msi.py Lib/distutils/command/bdist_rpm.py Lib/distutils/command/build_py.py Lib/distutils/command/build_scripts.py Lib/distutils/command/install.py Lib/distutils/command/install_headers.py Lib/distutils/command/install_lib.py Lib/distutils/command/register.py Lib/distutils/command/sdist.py Lib/distutils/filelist.py Lib/distutils/tests/test_dist.py Lib/distutils/tests/test_sysconfig.py Lib/distutils/unixccompiler.py Lib/email/base64mime.py Lib/email/utils.py Lib/hotshot/log.py Lib/hotshot/stones.py Lib/httplib.py Lib/idlelib/MultiCall.py Lib/idlelib/RemoteDebugger.py Lib/idlelib/TreeWidget.py Lib/idlelib/UndoDelegator.py Lib/idlelib/configDialog.py Lib/idlelib/keybindingDialog.py Lib/idlelib/run.py Lib/lib-tk/tkSimpleDialog.py Lib/logging/handlers.py Lib/ntpath.py Lib/plat-mac/MiniAEFrame.py Lib/plat-mac/aepack.py Lib/plat-mac/bgenlocations.py Lib/plat-mac/macostools.py Lib/plat-riscos/rourl2path.py Lib/sqlite3/test/hooks.py Lib/ssl.py Lib/test/fork_wait.py Lib/test/list_tests.py Lib/test/seq_tests.py Lib/test/test_MimeWriter.py Lib/test/test___all__.py Lib/test/test_abc.py Lib/test/test_applesingle.py Lib/test/test_array.py Lib/test/test_bsddb185.py Lib/test/test_class.py Lib/test/test_cmd.py Lib/test/test_coercion.py Lib/test/test_compare.py Lib/test/test_compiler.py Lib/test/test_copy.py Lib/test/test_cpickle.py Lib/test/test_datetime.py Lib/test/test_dbm.py Lib/test/test_deque.py Lib/test/test_dict.py Lib/test/test_dis.py Lib/test/test_doctest.py Lib/test/test_dummy_threading.py Lib/test/test_email.py Lib/test/test_email_renamed.py Lib/test/test_eof.py Lib/test/test_extcall.py Lib/test/test_fileinput.py Lib/test/test_fractions.py Lib/test/test_getargs2.py Lib/test/test_gzip.py Lib/test/test_htmlparser.py Lib/test/test_httplib.py Lib/test/test_imgfile.py Lib/test/test_imp.py Lib/test/test_index.py Lib/test/test_linuxaudiodev.py Lib/test/test_list.py Lib/test/test_logging.py Lib/test/test_minidom.py Lib/test/test_module.py Lib/test/test_modulefinder.py Lib/test/test_multibytecodec_support.py Lib/test/test_optparse.py Lib/test/test_ossaudiodev.py Lib/test/test_pickle.py Lib/test/test_pkg.py Lib/test/test_plistlib.py Lib/test/test_poll.py Lib/test/test_posix.py Lib/test/test_pyclbr.py Lib/test/test_quopri.py Lib/test/test_resource.py Lib/test/test_rfc822.py Lib/test/test_scriptpackages.py Lib/test/test_sgmllib.py Lib/test/test_shlex.py Lib/test/test_site.py Lib/test/test_socketserver.py Lib/test/test_sqlite.py Lib/test/test_str.py Lib/test/test_strftime.py Lib/test/test_sunaudiodev.py Lib/test/test_support.py Lib/test/test_tuple.py Lib/test/test_unicode.py Lib/test/test_unpack.py Lib/test/test_urllib.py Lib/test/test_urllib2.py Lib/test/test_urllib2_localnet.py Lib/test/test_userdict.py Lib/test/test_userlist.py Lib/test/test_userstring.py Lib/test/test_uu.py Lib/test/test_whichdb.py Lib/test/test_xml_etree.py Lib/test/test_xml_etree_c.py Lib/test/test_xpickle.py Lib/test/test_zipfile64.py Mac/Demo/PICTbrowse/ICONbrowse.py Mac/Demo/PICTbrowse/PICTbrowse.py Mac/Demo/PICTbrowse/PICTbrowse2.py Mac/Demo/PICTbrowse/cicnbrowse.py Mac/Demo/PICTbrowse/oldPICTbrowse.py Mac/Demo/example1/dnslookup-1.py Mac/Demo/example2/dnslookup-2.py Mac/Demo/imgbrowse/imgbrowse.py Mac/Demo/imgbrowse/mac_image.py Mac/Demo/sound/morse.py Mac/Modules/ae/aescan.py Mac/Modules/ah/ahscan.py Mac/Modules/app/appscan.py Mac/Modules/carbonevt/CarbonEvtscan.py Mac/Modules/cf/cfscan.py Mac/Modules/cg/cgscan.py Mac/Modules/cm/cmscan.py Mac/Modules/ctl/ctlscan.py Mac/Modules/dlg/dlgscan.py Mac/Modules/drag/dragscan.py Mac/Modules/evt/evtscan.py Mac/Modules/file/filescan.py Mac/Modules/fm/fmscan.py Mac/Modules/folder/folderscan.py Mac/Modules/help/helpscan.py Mac/Modules/ibcarbon/IBCarbonscan.py Mac/Modules/icn/icnscan.py Mac/Modules/launch/launchscan.py Mac/Modules/list/listscan.py Mac/Modules/menu/menuscan.py Mac/Modules/mlte/mltescan.py Mac/Modules/osa/osascan.py Mac/Modules/qd/qdscan.py Mac/Modules/qdoffs/qdoffsscan.py Mac/Modules/qt/qtscan.py Mac/Modules/res/resscan.py Mac/Modules/scrap/scrapscan.py Mac/Modules/snd/sndscan.py Mac/Modules/te/tescan.py Mac/Modules/win/winscan.py Misc/BeOS-setup.py PC/VS8.0/build_tkinter.py PCbuild/build_tkinter.py Parser/asdl_c.py Parser/spark.py Tools/compiler/astgen.py Tools/compiler/dumppyc.py Tools/faqwiz/faqw.py Tools/modulator/Tkextra.py Tools/pybench/systimes.py Tools/pynche/ChipViewer.py Tools/pynche/TypeinViewer.py Tools/scripts/logmerge.py Tools/scripts/nm2def.py Tools/scripts/pindent.py Tools/scripts/pysource.py Tools/scripts/xxci.py Tools/ssl/get-remote-certificate.py Tools/unicode/gencodec.py Tools/webchecker/wcgui.py Tools/webchecker/wsgui.py Message-ID: <20080223174016.506C61E4019@bag.python.org> Author: christian.heimes Date: Sat Feb 23 18:40:11 2008 New Revision: 61000 Modified: python/trunk/Lib/SimpleHTTPServer.py python/trunk/Lib/bsddb/test/test_basics.py python/trunk/Lib/bsddb/test/test_compat.py python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py python/trunk/Lib/bsddb/test/test_dbobj.py python/trunk/Lib/bsddb/test/test_dbshelve.py python/trunk/Lib/bsddb/test/test_dbtables.py python/trunk/Lib/bsddb/test/test_env_close.py python/trunk/Lib/bsddb/test/test_get_none.py python/trunk/Lib/bsddb/test/test_join.py python/trunk/Lib/bsddb/test/test_lock.py python/trunk/Lib/bsddb/test/test_misc.py python/trunk/Lib/bsddb/test/test_pickle.py python/trunk/Lib/bsddb/test/test_queue.py python/trunk/Lib/bsddb/test/test_recno.py python/trunk/Lib/bsddb/test/test_sequence.py python/trunk/Lib/bsddb/test/test_thread.py python/trunk/Lib/compiler/transformer.py python/trunk/Lib/ctypes/test/__init__.py python/trunk/Lib/ctypes/test/test_checkretval.py python/trunk/Lib/ctypes/test/test_find.py python/trunk/Lib/ctypes/test/test_libc.py python/trunk/Lib/ctypes/test/test_loading.py python/trunk/Lib/ctypes/test/test_numbers.py python/trunk/Lib/curses/wrapper.py python/trunk/Lib/distutils/bcppcompiler.py python/trunk/Lib/distutils/command/bdist.py python/trunk/Lib/distutils/command/bdist_dumb.py python/trunk/Lib/distutils/command/bdist_msi.py python/trunk/Lib/distutils/command/bdist_rpm.py python/trunk/Lib/distutils/command/build_py.py python/trunk/Lib/distutils/command/build_scripts.py python/trunk/Lib/distutils/command/install.py python/trunk/Lib/distutils/command/install_headers.py python/trunk/Lib/distutils/command/install_lib.py python/trunk/Lib/distutils/command/register.py python/trunk/Lib/distutils/command/sdist.py python/trunk/Lib/distutils/filelist.py python/trunk/Lib/distutils/tests/test_dist.py python/trunk/Lib/distutils/tests/test_sysconfig.py python/trunk/Lib/distutils/unixccompiler.py python/trunk/Lib/email/base64mime.py python/trunk/Lib/email/utils.py python/trunk/Lib/hotshot/log.py python/trunk/Lib/hotshot/stones.py python/trunk/Lib/httplib.py python/trunk/Lib/idlelib/MultiCall.py python/trunk/Lib/idlelib/RemoteDebugger.py python/trunk/Lib/idlelib/TreeWidget.py python/trunk/Lib/idlelib/UndoDelegator.py python/trunk/Lib/idlelib/configDialog.py python/trunk/Lib/idlelib/keybindingDialog.py python/trunk/Lib/idlelib/run.py python/trunk/Lib/lib-tk/tkSimpleDialog.py python/trunk/Lib/logging/handlers.py python/trunk/Lib/ntpath.py python/trunk/Lib/plat-mac/MiniAEFrame.py python/trunk/Lib/plat-mac/aepack.py python/trunk/Lib/plat-mac/bgenlocations.py python/trunk/Lib/plat-mac/macostools.py python/trunk/Lib/plat-riscos/rourl2path.py python/trunk/Lib/sqlite3/test/hooks.py python/trunk/Lib/ssl.py python/trunk/Lib/test/fork_wait.py python/trunk/Lib/test/list_tests.py python/trunk/Lib/test/seq_tests.py python/trunk/Lib/test/test_MimeWriter.py python/trunk/Lib/test/test___all__.py python/trunk/Lib/test/test_abc.py python/trunk/Lib/test/test_applesingle.py python/trunk/Lib/test/test_array.py python/trunk/Lib/test/test_bsddb185.py python/trunk/Lib/test/test_class.py python/trunk/Lib/test/test_cmd.py python/trunk/Lib/test/test_coercion.py python/trunk/Lib/test/test_compare.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_copy.py python/trunk/Lib/test/test_cpickle.py python/trunk/Lib/test/test_datetime.py python/trunk/Lib/test/test_dbm.py python/trunk/Lib/test/test_deque.py python/trunk/Lib/test/test_dict.py python/trunk/Lib/test/test_dis.py python/trunk/Lib/test/test_doctest.py python/trunk/Lib/test/test_dummy_threading.py python/trunk/Lib/test/test_email.py python/trunk/Lib/test/test_email_renamed.py python/trunk/Lib/test/test_eof.py python/trunk/Lib/test/test_extcall.py python/trunk/Lib/test/test_fileinput.py python/trunk/Lib/test/test_fractions.py python/trunk/Lib/test/test_getargs2.py python/trunk/Lib/test/test_gzip.py python/trunk/Lib/test/test_htmlparser.py python/trunk/Lib/test/test_httplib.py python/trunk/Lib/test/test_imgfile.py python/trunk/Lib/test/test_imp.py python/trunk/Lib/test/test_index.py python/trunk/Lib/test/test_linuxaudiodev.py python/trunk/Lib/test/test_list.py python/trunk/Lib/test/test_logging.py python/trunk/Lib/test/test_minidom.py python/trunk/Lib/test/test_module.py python/trunk/Lib/test/test_modulefinder.py python/trunk/Lib/test/test_multibytecodec_support.py python/trunk/Lib/test/test_optparse.py python/trunk/Lib/test/test_ossaudiodev.py python/trunk/Lib/test/test_pickle.py python/trunk/Lib/test/test_pkg.py python/trunk/Lib/test/test_plistlib.py python/trunk/Lib/test/test_poll.py python/trunk/Lib/test/test_posix.py python/trunk/Lib/test/test_pyclbr.py python/trunk/Lib/test/test_quopri.py python/trunk/Lib/test/test_resource.py python/trunk/Lib/test/test_rfc822.py python/trunk/Lib/test/test_scriptpackages.py python/trunk/Lib/test/test_sgmllib.py python/trunk/Lib/test/test_shlex.py python/trunk/Lib/test/test_site.py python/trunk/Lib/test/test_socketserver.py python/trunk/Lib/test/test_sqlite.py python/trunk/Lib/test/test_str.py python/trunk/Lib/test/test_strftime.py python/trunk/Lib/test/test_sunaudiodev.py python/trunk/Lib/test/test_support.py python/trunk/Lib/test/test_tuple.py python/trunk/Lib/test/test_unicode.py python/trunk/Lib/test/test_unpack.py python/trunk/Lib/test/test_urllib.py python/trunk/Lib/test/test_urllib2.py python/trunk/Lib/test/test_urllib2_localnet.py python/trunk/Lib/test/test_userdict.py python/trunk/Lib/test/test_userlist.py python/trunk/Lib/test/test_userstring.py python/trunk/Lib/test/test_uu.py python/trunk/Lib/test/test_whichdb.py python/trunk/Lib/test/test_xml_etree.py python/trunk/Lib/test/test_xml_etree_c.py python/trunk/Lib/test/test_xpickle.py python/trunk/Lib/test/test_zipfile64.py python/trunk/Mac/Demo/PICTbrowse/ICONbrowse.py python/trunk/Mac/Demo/PICTbrowse/PICTbrowse.py python/trunk/Mac/Demo/PICTbrowse/PICTbrowse2.py python/trunk/Mac/Demo/PICTbrowse/cicnbrowse.py python/trunk/Mac/Demo/PICTbrowse/oldPICTbrowse.py python/trunk/Mac/Demo/example1/dnslookup-1.py python/trunk/Mac/Demo/example2/dnslookup-2.py python/trunk/Mac/Demo/imgbrowse/imgbrowse.py python/trunk/Mac/Demo/imgbrowse/mac_image.py python/trunk/Mac/Demo/sound/morse.py python/trunk/Mac/Modules/ae/aescan.py python/trunk/Mac/Modules/ah/ahscan.py python/trunk/Mac/Modules/app/appscan.py python/trunk/Mac/Modules/carbonevt/CarbonEvtscan.py python/trunk/Mac/Modules/cf/cfscan.py python/trunk/Mac/Modules/cg/cgscan.py python/trunk/Mac/Modules/cm/cmscan.py python/trunk/Mac/Modules/ctl/ctlscan.py python/trunk/Mac/Modules/dlg/dlgscan.py python/trunk/Mac/Modules/drag/dragscan.py python/trunk/Mac/Modules/evt/evtscan.py python/trunk/Mac/Modules/file/filescan.py python/trunk/Mac/Modules/fm/fmscan.py python/trunk/Mac/Modules/folder/folderscan.py python/trunk/Mac/Modules/help/helpscan.py python/trunk/Mac/Modules/ibcarbon/IBCarbonscan.py python/trunk/Mac/Modules/icn/icnscan.py python/trunk/Mac/Modules/launch/launchscan.py python/trunk/Mac/Modules/list/listscan.py python/trunk/Mac/Modules/menu/menuscan.py python/trunk/Mac/Modules/mlte/mltescan.py python/trunk/Mac/Modules/osa/osascan.py python/trunk/Mac/Modules/qd/qdscan.py python/trunk/Mac/Modules/qdoffs/qdoffsscan.py python/trunk/Mac/Modules/qt/qtscan.py python/trunk/Mac/Modules/res/resscan.py python/trunk/Mac/Modules/scrap/scrapscan.py python/trunk/Mac/Modules/snd/sndscan.py python/trunk/Mac/Modules/te/tescan.py python/trunk/Mac/Modules/win/winscan.py python/trunk/Misc/BeOS-setup.py python/trunk/PC/VS8.0/build_tkinter.py python/trunk/PCbuild/build_tkinter.py python/trunk/Parser/asdl_c.py python/trunk/Parser/spark.py python/trunk/Tools/compiler/astgen.py python/trunk/Tools/compiler/dumppyc.py python/trunk/Tools/faqwiz/faqw.py python/trunk/Tools/modulator/Tkextra.py python/trunk/Tools/pybench/systimes.py python/trunk/Tools/pynche/ChipViewer.py python/trunk/Tools/pynche/TypeinViewer.py python/trunk/Tools/scripts/logmerge.py python/trunk/Tools/scripts/nm2def.py python/trunk/Tools/scripts/pindent.py python/trunk/Tools/scripts/pysource.py python/trunk/Tools/scripts/xxci.py python/trunk/Tools/ssl/get-remote-certificate.py python/trunk/Tools/unicode/gencodec.py python/trunk/Tools/webchecker/wcgui.py python/trunk/Tools/webchecker/wsgui.py Log: Patch #2167 from calvin: Remove unused imports Modified: python/trunk/Lib/SimpleHTTPServer.py ============================================================================== --- python/trunk/Lib/SimpleHTTPServer.py (original) +++ python/trunk/Lib/SimpleHTTPServer.py Sat Feb 23 18:40:11 2008 @@ -14,7 +14,6 @@ import posixpath import BaseHTTPServer import urllib -import urlparse import cgi import shutil import mimetypes Modified: python/trunk/Lib/bsddb/test/test_basics.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_basics.py (original) +++ python/trunk/Lib/bsddb/test/test_basics.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ """ import os -import sys import errno import shutil import string Modified: python/trunk/Lib/bsddb/test/test_compat.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_compat.py (original) +++ python/trunk/Lib/bsddb/test/test_compat.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,7 @@ regression test suite. """ -import sys, os, string +import os, string import unittest import tempfile Modified: python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py (original) +++ python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ import unittest import tempfile -import sys, os, glob +import os, glob try: # For Pythons w/distutils pybsddb Modified: python/trunk/Lib/bsddb/test/test_dbobj.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbobj.py (original) +++ python/trunk/Lib/bsddb/test/test_dbobj.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,5 @@ -import sys, os, string +import os, string import unittest import glob import tempfile Modified: python/trunk/Lib/bsddb/test/test_dbshelve.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbshelve.py (original) +++ python/trunk/Lib/bsddb/test/test_dbshelve.py Sat Feb 23 18:40:11 2008 @@ -2,9 +2,8 @@ TestCases for checking dbShelve objects. """ -import sys, os, string +import os, string import tempfile, random -from pprint import pprint from types import * import unittest Modified: python/trunk/Lib/bsddb/test/test_dbtables.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbtables.py (original) +++ python/trunk/Lib/bsddb/test/test_dbtables.py Sat Feb 23 18:40:11 2008 @@ -20,7 +20,7 @@ # # $Id$ -import sys, os, re +import os, re import tempfile import shutil try: Modified: python/trunk/Lib/bsddb/test/test_env_close.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_env_close.py (original) +++ python/trunk/Lib/bsddb/test/test_env_close.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ """ import os -import sys import tempfile import glob import unittest Modified: python/trunk/Lib/bsddb/test/test_get_none.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_get_none.py (original) +++ python/trunk/Lib/bsddb/test/test_get_none.py Sat Feb 23 18:40:11 2008 @@ -2,9 +2,8 @@ TestCases for checking set_get_returns_none. """ -import sys, os, string +import os, string import tempfile -from pprint import pprint import unittest try: Modified: python/trunk/Lib/bsddb/test/test_join.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_join.py (original) +++ python/trunk/Lib/bsddb/test/test_join.py Sat Feb 23 18:40:11 2008 @@ -1,10 +1,8 @@ """TestCases for using the DB.join and DBCursor.join_item methods. """ -import sys, os, string +import os import tempfile -import time -from pprint import pprint try: from threading import Thread, currentThread Modified: python/trunk/Lib/bsddb/test/test_lock.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_lock.py (original) +++ python/trunk/Lib/bsddb/test/test_lock.py Sat Feb 23 18:40:11 2008 @@ -2,10 +2,7 @@ TestCases for testing the locking sub-system. """ -import os -from pprint import pprint import shutil -import sys import tempfile import time Modified: python/trunk/Lib/bsddb/test/test_misc.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_misc.py (original) +++ python/trunk/Lib/bsddb/test/test_misc.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ """ import os -import sys import unittest import tempfile Modified: python/trunk/Lib/bsddb/test/test_pickle.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_pickle.py (original) +++ python/trunk/Lib/bsddb/test/test_pickle.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,5 @@ -import sys, os, string +import os import pickle try: import cPickle Modified: python/trunk/Lib/bsddb/test/test_queue.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_queue.py (original) +++ python/trunk/Lib/bsddb/test/test_queue.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,7 @@ TestCases for exercising a Queue DB. """ -import sys, os, string +import os, string import tempfile from pprint import pprint import unittest Modified: python/trunk/Lib/bsddb/test/test_recno.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_recno.py (original) +++ python/trunk/Lib/bsddb/test/test_recno.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ """ import os -import sys import errno import tempfile from pprint import pprint Modified: python/trunk/Lib/bsddb/test/test_sequence.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_sequence.py (original) +++ python/trunk/Lib/bsddb/test/test_sequence.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ import unittest import os -import sys import tempfile import glob @@ -10,8 +9,6 @@ except ImportError: from bsddb import db -from test_all import verbose - class DBSequenceTest(unittest.TestCase): def setUp(self): Modified: python/trunk/Lib/bsddb/test/test_thread.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_thread.py (original) +++ python/trunk/Lib/bsddb/test/test_thread.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ import errno import shutil import tempfile -from pprint import pprint from random import random try: Modified: python/trunk/Lib/compiler/transformer.py ============================================================================== --- python/trunk/Lib/compiler/transformer.py (original) +++ python/trunk/Lib/compiler/transformer.py Sat Feb 23 18:40:11 2008 @@ -29,7 +29,6 @@ import parser import symbol import token -import sys class WalkerError(StandardError): pass Modified: python/trunk/Lib/ctypes/test/__init__.py ============================================================================== --- python/trunk/Lib/ctypes/test/__init__.py (original) +++ python/trunk/Lib/ctypes/test/__init__.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,4 @@ -import glob, os, sys, unittest, getopt, time +import os, sys, unittest, getopt, time use_resources = [] Modified: python/trunk/Lib/ctypes/test/test_checkretval.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_checkretval.py (original) +++ python/trunk/Lib/ctypes/test/test_checkretval.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import unittest -import sys from ctypes import * Modified: python/trunk/Lib/ctypes/test/test_find.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_find.py (original) +++ python/trunk/Lib/ctypes/test/test_find.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,5 @@ import unittest -import os, sys +import sys from ctypes import * from ctypes.util import find_library from ctypes.test import is_resource_enabled Modified: python/trunk/Lib/ctypes/test/test_libc.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_libc.py (original) +++ python/trunk/Lib/ctypes/test/test_libc.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import sys, os import unittest from ctypes import * Modified: python/trunk/Lib/ctypes/test/test_loading.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_loading.py (original) +++ python/trunk/Lib/ctypes/test/test_loading.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ from ctypes import * import sys, unittest -import os, StringIO +import os from ctypes.util import find_library from ctypes.test import is_resource_enabled Modified: python/trunk/Lib/ctypes/test/test_numbers.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_numbers.py (original) +++ python/trunk/Lib/ctypes/test/test_numbers.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ from ctypes import * import unittest -import sys, struct +import struct def valid_ranges(*types): # given a sequence of numeric types, collect their _type_ Modified: python/trunk/Lib/curses/wrapper.py ============================================================================== --- python/trunk/Lib/curses/wrapper.py (original) +++ python/trunk/Lib/curses/wrapper.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,7 @@ """ -import sys, curses +import curses def wrapper(func, *args, **kwds): """Wrapper function that initializes curses and calls another function, Modified: python/trunk/Lib/distutils/bcppcompiler.py ============================================================================== --- python/trunk/Lib/distutils/bcppcompiler.py (original) +++ python/trunk/Lib/distutils/bcppcompiler.py Sat Feb 23 18:40:11 2008 @@ -16,7 +16,7 @@ __revision__ = "$Id$" -import sys, os +import os from distutils.errors import \ DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError, UnknownFileError Modified: python/trunk/Lib/distutils/command/bdist.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist.py (original) +++ python/trunk/Lib/distutils/command/bdist.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,7 @@ __revision__ = "$Id$" -import os, string +import os from types import * from distutils.core import Command from distutils.errors import * Modified: python/trunk/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_dumb.py (original) +++ python/trunk/Lib/distutils/command/bdist_dumb.py Sat Feb 23 18:40:11 2008 @@ -11,7 +11,7 @@ import os from distutils.core import Command from distutils.util import get_platform -from distutils.dir_util import create_tree, remove_tree, ensure_relative +from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import * from distutils.sysconfig import get_python_version from distutils import log Modified: python/trunk/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_msi.py (original) +++ python/trunk/Lib/distutils/command/bdist_msi.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,7 @@ Implements the bdist_msi command. """ -import sys, os, string +import sys, os from distutils.core import Command from distutils.util import get_platform from distutils.dir_util import remove_tree Modified: python/trunk/Lib/distutils/command/bdist_rpm.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_rpm.py (original) +++ python/trunk/Lib/distutils/command/bdist_rpm.py Sat Feb 23 18:40:11 2008 @@ -8,7 +8,6 @@ __revision__ = "$Id$" import sys, os, string -import glob from types import * from distutils.core import Command from distutils.debug import DEBUG Modified: python/trunk/Lib/distutils/command/build_py.py ============================================================================== --- python/trunk/Lib/distutils/command/build_py.py (original) +++ python/trunk/Lib/distutils/command/build_py.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, string, os +import string, os from types import * from glob import glob Modified: python/trunk/Lib/distutils/command/build_scripts.py ============================================================================== --- python/trunk/Lib/distutils/command/build_scripts.py (original) +++ python/trunk/Lib/distutils/command/build_scripts.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, os, re +import os, re from stat import ST_MODE from distutils import sysconfig from distutils.core import Command Modified: python/trunk/Lib/distutils/command/install.py ============================================================================== --- python/trunk/Lib/distutils/command/install.py (original) +++ python/trunk/Lib/distutils/command/install.py Sat Feb 23 18:40:11 2008 @@ -17,7 +17,6 @@ from distutils.file_util import write_file from distutils.util import convert_path, subst_vars, change_root from distutils.errors import DistutilsOptionError -from glob import glob if sys.version < "2.2": WINDOWS_SCHEME = { Modified: python/trunk/Lib/distutils/command/install_headers.py ============================================================================== --- python/trunk/Lib/distutils/command/install_headers.py (original) +++ python/trunk/Lib/distutils/command/install_headers.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ __revision__ = "$Id$" -import os from distutils.core import Command Modified: python/trunk/Lib/distutils/command/install_lib.py ============================================================================== --- python/trunk/Lib/distutils/command/install_lib.py (original) +++ python/trunk/Lib/distutils/command/install_lib.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,7 @@ __revision__ = "$Id$" -import sys, os, string +import os from types import IntType from distutils.core import Command from distutils.errors import DistutilsOptionError Modified: python/trunk/Lib/distutils/command/register.py ============================================================================== --- python/trunk/Lib/distutils/command/register.py (original) +++ python/trunk/Lib/distutils/command/register.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,7 @@ __revision__ = "$Id$" -import sys, os, string, urllib2, getpass, urlparse +import os, string, urllib2, getpass, urlparse import StringIO, ConfigParser from distutils.core import Command Modified: python/trunk/Lib/distutils/command/sdist.py ============================================================================== --- python/trunk/Lib/distutils/command/sdist.py (original) +++ python/trunk/Lib/distutils/command/sdist.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, os, string +import os, string from types import * from glob import glob from distutils.core import Command Modified: python/trunk/Lib/distutils/filelist.py ============================================================================== --- python/trunk/Lib/distutils/filelist.py (original) +++ python/trunk/Lib/distutils/filelist.py Sat Feb 23 18:40:11 2008 @@ -11,7 +11,6 @@ import os, string, re import fnmatch from types import * -from glob import glob from distutils.util import convert_path from distutils.errors import DistutilsTemplateError, DistutilsInternalError from distutils import log Modified: python/trunk/Lib/distutils/tests/test_dist.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_dist.py (original) +++ python/trunk/Lib/distutils/tests/test_dist.py Sat Feb 23 18:40:11 2008 @@ -3,10 +3,8 @@ import distutils.cmd import distutils.dist import os -import shutil import StringIO import sys -import tempfile import unittest from test.test_support import TESTFN Modified: python/trunk/Lib/distutils/tests/test_sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_sysconfig.py (original) +++ python/trunk/Lib/distutils/tests/test_sysconfig.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ from distutils import sysconfig import os -import sys import unittest from test.test_support import TESTFN Modified: python/trunk/Lib/distutils/unixccompiler.py ============================================================================== --- python/trunk/Lib/distutils/unixccompiler.py (original) +++ python/trunk/Lib/distutils/unixccompiler.py Sat Feb 23 18:40:11 2008 @@ -17,7 +17,6 @@ import os, sys from types import StringType, NoneType -from copy import copy from distutils import sysconfig from distutils.dep_util import newer Modified: python/trunk/Lib/email/base64mime.py ============================================================================== --- python/trunk/Lib/email/base64mime.py (original) +++ python/trunk/Lib/email/base64mime.py Sat Feb 23 18:40:11 2008 @@ -35,7 +35,6 @@ 'header_encode', ] -import re from binascii import b2a_base64, a2b_base64 from email.utils import fix_eols Modified: python/trunk/Lib/email/utils.py ============================================================================== --- python/trunk/Lib/email/utils.py (original) +++ python/trunk/Lib/email/utils.py Sat Feb 23 18:40:11 2008 @@ -27,7 +27,6 @@ import socket import urllib import warnings -from cStringIO import StringIO from email._parseaddr import quote from email._parseaddr import AddressList as _AddressList Modified: python/trunk/Lib/hotshot/log.py ============================================================================== --- python/trunk/Lib/hotshot/log.py (original) +++ python/trunk/Lib/hotshot/log.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ import os.path import parser import symbol -import sys from _hotshot import \ WHAT_ENTER, \ Modified: python/trunk/Lib/hotshot/stones.py ============================================================================== --- python/trunk/Lib/hotshot/stones.py (original) +++ python/trunk/Lib/hotshot/stones.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ import errno import hotshot import hotshot.stats -import os import sys import test.pystone Modified: python/trunk/Lib/httplib.py ============================================================================== --- python/trunk/Lib/httplib.py (original) +++ python/trunk/Lib/httplib.py Sat Feb 23 18:40:11 2008 @@ -66,7 +66,6 @@ Req-sent-unread-response _CS_REQ_SENT """ -import errno import mimetools import socket from urlparse import urlsplit Modified: python/trunk/Lib/idlelib/MultiCall.py ============================================================================== --- python/trunk/Lib/idlelib/MultiCall.py (original) +++ python/trunk/Lib/idlelib/MultiCall.py Sat Feb 23 18:40:11 2008 @@ -30,7 +30,6 @@ """ import sys -import os import string import re import Tkinter Modified: python/trunk/Lib/idlelib/RemoteDebugger.py ============================================================================== --- python/trunk/Lib/idlelib/RemoteDebugger.py (original) +++ python/trunk/Lib/idlelib/RemoteDebugger.py Sat Feb 23 18:40:11 2008 @@ -20,7 +20,6 @@ """ -import sys import types import rpc import Debugger Modified: python/trunk/Lib/idlelib/TreeWidget.py ============================================================================== --- python/trunk/Lib/idlelib/TreeWidget.py (original) +++ python/trunk/Lib/idlelib/TreeWidget.py Sat Feb 23 18:40:11 2008 @@ -15,7 +15,6 @@ # - optimize tree redraw after expand of subnode import os -import sys from Tkinter import * import imp Modified: python/trunk/Lib/idlelib/UndoDelegator.py ============================================================================== --- python/trunk/Lib/idlelib/UndoDelegator.py (original) +++ python/trunk/Lib/idlelib/UndoDelegator.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import sys import string from Tkinter import * from Delegator import Delegator Modified: python/trunk/Lib/idlelib/configDialog.py ============================================================================== --- python/trunk/Lib/idlelib/configDialog.py (original) +++ python/trunk/Lib/idlelib/configDialog.py Sat Feb 23 18:40:11 2008 @@ -11,7 +11,7 @@ """ from Tkinter import * import tkMessageBox, tkColorChooser, tkFont -import string, copy +import string from configHandler import idleConf from dynOptionMenuWidget import DynOptionMenu Modified: python/trunk/Lib/idlelib/keybindingDialog.py ============================================================================== --- python/trunk/Lib/idlelib/keybindingDialog.py (original) +++ python/trunk/Lib/idlelib/keybindingDialog.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,7 @@ """ from Tkinter import * import tkMessageBox -import string, os +import string class GetKeysDialog(Toplevel): def __init__(self,parent,title,action,currentKeySequences): Modified: python/trunk/Lib/idlelib/run.py ============================================================================== --- python/trunk/Lib/idlelib/run.py (original) +++ python/trunk/Lib/idlelib/run.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import sys -import os import linecache import time import socket Modified: python/trunk/Lib/lib-tk/tkSimpleDialog.py ============================================================================== --- python/trunk/Lib/lib-tk/tkSimpleDialog.py (original) +++ python/trunk/Lib/lib-tk/tkSimpleDialog.py Sat Feb 23 18:40:11 2008 @@ -26,7 +26,6 @@ ''' from Tkinter import * -import os class Dialog(Toplevel): Modified: python/trunk/Lib/logging/handlers.py ============================================================================== --- python/trunk/Lib/logging/handlers.py (original) +++ python/trunk/Lib/logging/handlers.py Sat Feb 23 18:40:11 2008 @@ -27,7 +27,7 @@ To use, simply 'import logging' and log away! """ -import sys, logging, socket, types, os, string, cPickle, struct, time, glob +import logging, socket, types, os, string, cPickle, struct, time, glob from stat import ST_DEV, ST_INO try: Modified: python/trunk/Lib/ntpath.py ============================================================================== --- python/trunk/Lib/ntpath.py (original) +++ python/trunk/Lib/ntpath.py Sat Feb 23 18:40:11 2008 @@ -6,8 +6,8 @@ """ import os -import stat import sys +import stat import genericpath from genericpath import * Modified: python/trunk/Lib/plat-mac/MiniAEFrame.py ============================================================================== --- python/trunk/Lib/plat-mac/MiniAEFrame.py (original) +++ python/trunk/Lib/plat-mac/MiniAEFrame.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,6 @@ only suitable for the simplest of AppleEvent servers. """ -import sys import traceback import MacOS from Carbon import AE Modified: python/trunk/Lib/plat-mac/aepack.py ============================================================================== --- python/trunk/Lib/plat-mac/aepack.py (original) +++ python/trunk/Lib/plat-mac/aepack.py Sat Feb 23 18:40:11 2008 @@ -13,18 +13,14 @@ # import struct -import string import types -from string import strip from types import * from Carbon import AE from Carbon.AppleEvents import * import MacOS import Carbon.File -import StringIO import aetypes from aetypes import mkenum, ObjectSpecifier -import os # These ones seem to be missing from AppleEvents # (they're in AERegistry.h) Modified: python/trunk/Lib/plat-mac/bgenlocations.py ============================================================================== --- python/trunk/Lib/plat-mac/bgenlocations.py (original) +++ python/trunk/Lib/plat-mac/bgenlocations.py Sat Feb 23 18:40:11 2008 @@ -5,7 +5,7 @@ # but mac-style for MacPython, whether running on OS9 or OSX. # -import sys, os +import os Error = "bgenlocations.Error" # Modified: python/trunk/Lib/plat-mac/macostools.py ============================================================================== --- python/trunk/Lib/plat-mac/macostools.py (original) +++ python/trunk/Lib/plat-mac/macostools.py Sat Feb 23 18:40:11 2008 @@ -7,9 +7,7 @@ from Carbon import Res from Carbon import File, Files import os -import sys import MacOS -import time try: openrf = MacOS.openrf except AttributeError: Modified: python/trunk/Lib/plat-riscos/rourl2path.py ============================================================================== --- python/trunk/Lib/plat-riscos/rourl2path.py (original) +++ python/trunk/Lib/plat-riscos/rourl2path.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ import string import urllib -import os __all__ = ["url2pathname","pathname2url"] Modified: python/trunk/Lib/sqlite3/test/hooks.py ============================================================================== --- python/trunk/Lib/sqlite3/test/hooks.py (original) +++ python/trunk/Lib/sqlite3/test/hooks.py Sat Feb 23 18:40:11 2008 @@ -21,7 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import os, unittest +import unittest import sqlite3 as sqlite class CollationTests(unittest.TestCase): Modified: python/trunk/Lib/ssl.py ============================================================================== --- python/trunk/Lib/ssl.py (original) +++ python/trunk/Lib/ssl.py Sat Feb 23 18:40:11 2008 @@ -55,7 +55,7 @@ PROTOCOL_TLSv1 """ -import os, sys, textwrap +import textwrap import _ssl # if we can't import it, let the error propagate Modified: python/trunk/Lib/test/fork_wait.py ============================================================================== --- python/trunk/Lib/test/fork_wait.py (original) +++ python/trunk/Lib/test/fork_wait.py Sat Feb 23 18:40:11 2008 @@ -13,7 +13,6 @@ """ import os, sys, time, thread, unittest -from test.test_support import TestSkipped LONGSLEEP = 2 SHORTSLEEP = 0.5 Modified: python/trunk/Lib/test/list_tests.py ============================================================================== --- python/trunk/Lib/test/list_tests.py (original) +++ python/trunk/Lib/test/list_tests.py Sat Feb 23 18:40:11 2008 @@ -5,7 +5,6 @@ import sys import os -import unittest from test import test_support, seq_tests class CommonTest(seq_tests.CommonTest): Modified: python/trunk/Lib/test/seq_tests.py ============================================================================== --- python/trunk/Lib/test/seq_tests.py (original) +++ python/trunk/Lib/test/seq_tests.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ """ import unittest -from test import test_support import sys # Various iterables Modified: python/trunk/Lib/test/test_MimeWriter.py ============================================================================== --- python/trunk/Lib/test/test_MimeWriter.py (original) +++ python/trunk/Lib/test/test_MimeWriter.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,7 @@ """ -import unittest, sys, StringIO +import unittest, StringIO from test.test_support import run_unittest import warnings Modified: python/trunk/Lib/test/test___all__.py ============================================================================== --- python/trunk/Lib/test/test___all__.py (original) +++ python/trunk/Lib/test/test___all__.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,5 @@ import unittest -from test.test_support import verbose, run_unittest +from test.test_support import run_unittest import sys import warnings Modified: python/trunk/Lib/test/test_abc.py ============================================================================== --- python/trunk/Lib/test/test_abc.py (original) +++ python/trunk/Lib/test/test_abc.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ """Unit tests for abc.py.""" -import sys import unittest from test import test_support Modified: python/trunk/Lib/test/test_applesingle.py ============================================================================== --- python/trunk/Lib/test/test_applesingle.py (original) +++ python/trunk/Lib/test/test_applesingle.py Sat Feb 23 18:40:11 2008 @@ -5,7 +5,6 @@ import Carbon.File import MacOS import os -import sys from test import test_support import struct import applesingle Modified: python/trunk/Lib/test/test_array.py ============================================================================== --- python/trunk/Lib/test/test_array.py (original) +++ python/trunk/Lib/test/test_array.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ import unittest from test import test_support from weakref import proxy -import array, cStringIO, math +import array, cStringIO from cPickle import loads, dumps class ArraySubclass(array.array): Modified: python/trunk/Lib/test/test_bsddb185.py ============================================================================== --- python/trunk/Lib/test/test_bsddb185.py (original) +++ python/trunk/Lib/test/test_bsddb185.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,7 @@ testing suite. """ -from test.test_support import verbose, run_unittest, findfile +from test.test_support import run_unittest, findfile import unittest import bsddb185 import anydbm Modified: python/trunk/Lib/test/test_class.py ============================================================================== --- python/trunk/Lib/test/test_class.py (original) +++ python/trunk/Lib/test/test_class.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ "Test the functionality of Python classes implementing operators." import unittest -import sys from test import test_support Modified: python/trunk/Lib/test/test_cmd.py ============================================================================== --- python/trunk/Lib/test/test_cmd.py (original) +++ python/trunk/Lib/test/test_cmd.py Sat Feb 23 18:40:11 2008 @@ -5,7 +5,6 @@ """ -from test import test_support import cmd import sys @@ -170,7 +169,7 @@ from test import test_support, test_cmd test_support.run_doctest(test_cmd, verbose) -import trace, sys,re,StringIO +import trace, sys def test_coverage(coverdir): tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) Modified: python/trunk/Lib/test/test_coercion.py ============================================================================== --- python/trunk/Lib/test/test_coercion.py (original) +++ python/trunk/Lib/test/test_coercion.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import copy -import sys import warnings import unittest from test.test_support import run_unittest, TestFailed Modified: python/trunk/Lib/test/test_compare.py ============================================================================== --- python/trunk/Lib/test/test_compare.py (original) +++ python/trunk/Lib/test/test_compare.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import sys import unittest from test import test_support Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Sat Feb 23 18:40:11 2008 @@ -52,7 +52,8 @@ compiler.compile(buf, basename, "exec") except Exception, e: args = list(e.args) - args[0] += "[in file %s]" % basename + args.append("in file %s]" % basename) + #args[0] += "[in file %s]" % basename e.args = tuple(args) raise Modified: python/trunk/Lib/test/test_copy.py ============================================================================== --- python/trunk/Lib/test/test_copy.py (original) +++ python/trunk/Lib/test/test_copy.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ """Unit tests for the copy module.""" -import sys import copy import copy_reg Modified: python/trunk/Lib/test/test_cpickle.py ============================================================================== --- python/trunk/Lib/test/test_cpickle.py (original) +++ python/trunk/Lib/test/test_cpickle.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import cPickle -import unittest from cStringIO import StringIO from test.pickletester import AbstractPickleTests, AbstractPickleModuleTests from test import test_support Modified: python/trunk/Lib/test/test_datetime.py ============================================================================== --- python/trunk/Lib/test/test_datetime.py (original) +++ python/trunk/Lib/test/test_datetime.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ """ import os -import sys import pickle import cPickle import unittest Modified: python/trunk/Lib/test/test_dbm.py ============================================================================== --- python/trunk/Lib/test/test_dbm.py (original) +++ python/trunk/Lib/test/test_dbm.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ Roger E. Masse """ import os -import random import dbm from dbm import error from test.test_support import verbose, verify, TestSkipped, TESTFN Modified: python/trunk/Lib/test/test_deque.py ============================================================================== --- python/trunk/Lib/test/test_deque.py (original) +++ python/trunk/Lib/test/test_deque.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ from weakref import proxy import copy import cPickle as pickle -from cStringIO import StringIO import random import os Modified: python/trunk/Lib/test/test_dict.py ============================================================================== --- python/trunk/Lib/test/test_dict.py (original) +++ python/trunk/Lib/test/test_dict.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,7 @@ import unittest from test import test_support -import sys, UserDict, cStringIO, random, string +import UserDict, random, string class DictTest(unittest.TestCase): Modified: python/trunk/Lib/test/test_dis.py ============================================================================== --- python/trunk/Lib/test/test_dis.py (original) +++ python/trunk/Lib/test/test_dis.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ # Minimal tests for dis module -from test.test_support import verbose, run_unittest +from test.test_support import run_unittest import unittest import sys import dis Modified: python/trunk/Lib/test/test_doctest.py ============================================================================== --- python/trunk/Lib/test/test_doctest.py (original) +++ python/trunk/Lib/test/test_doctest.py Sat Feb 23 18:40:11 2008 @@ -2418,7 +2418,7 @@ from test import test_doctest test_support.run_doctest(test_doctest, verbosity=True) -import trace, sys, re, StringIO +import trace, sys def test_coverage(coverdir): tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) Modified: python/trunk/Lib/test/test_dummy_threading.py ============================================================================== --- python/trunk/Lib/test/test_dummy_threading.py (original) +++ python/trunk/Lib/test/test_dummy_threading.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ # Create a bunch of threads, let each do some work, wait until all are done from test.test_support import verbose -import random import dummy_threading as _threading import time Modified: python/trunk/Lib/test/test_email.py ============================================================================== --- python/trunk/Lib/test/test_email.py (original) +++ python/trunk/Lib/test/test_email.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Copyright (C) 2001,2002 Python Software Foundation # email package unit tests -import unittest # The specific tests now live in Lib/email/test from email.test.test_email import suite from test import test_support Modified: python/trunk/Lib/test/test_email_renamed.py ============================================================================== --- python/trunk/Lib/test/test_email_renamed.py (original) +++ python/trunk/Lib/test/test_email_renamed.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Copyright (C) 2001-2006 Python Software Foundation # email package unit tests -import unittest # The specific tests now live in Lib/email/test from email.test.test_email_renamed import suite from test import test_support Modified: python/trunk/Lib/test/test_eof.py ============================================================================== --- python/trunk/Lib/test/test_eof.py (original) +++ python/trunk/Lib/test/test_eof.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ #! /usr/bin/env python """test script for a few new invalid token catches""" -import os import unittest from test import test_support Modified: python/trunk/Lib/test/test_extcall.py ============================================================================== --- python/trunk/Lib/test/test_extcall.py (original) +++ python/trunk/Lib/test/test_extcall.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,4 @@ -from test.test_support import verify, verbose, TestFailed, sortdict +from test.test_support import verify, TestFailed, sortdict from UserList import UserList from UserDict import UserDict Modified: python/trunk/Lib/test/test_fileinput.py ============================================================================== --- python/trunk/Lib/test/test_fileinput.py (original) +++ python/trunk/Lib/test/test_fileinput.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ import unittest from test.test_support import verbose, TESTFN, run_unittest from test.test_support import unlink as safe_unlink -import sys, os, re +import sys, re from StringIO import StringIO from fileinput import FileInput, hook_encoded Modified: python/trunk/Lib/test/test_fractions.py ============================================================================== --- python/trunk/Lib/test/test_fractions.py (original) +++ python/trunk/Lib/test/test_fractions.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,7 @@ """Tests for Lib/fractions.py.""" from decimal import Decimal -from test.test_support import run_unittest, verbose +from test.test_support import run_unittest import math import operator import fractions Modified: python/trunk/Lib/test/test_getargs2.py ============================================================================== --- python/trunk/Lib/test/test_getargs2.py (original) +++ python/trunk/Lib/test/test_getargs2.py Sat Feb 23 18:40:11 2008 @@ -1,8 +1,7 @@ import unittest from test import test_support -import sys -import warnings, re +import warnings warnings.filterwarnings("ignore", category=DeprecationWarning, message=".*integer argument expected, got float", Modified: python/trunk/Lib/test/test_gzip.py ============================================================================== --- python/trunk/Lib/test/test_gzip.py (original) +++ python/trunk/Lib/test/test_gzip.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,7 @@ import unittest from test import test_support -import sys, os +import os import gzip Modified: python/trunk/Lib/test/test_htmlparser.py ============================================================================== --- python/trunk/Lib/test/test_htmlparser.py (original) +++ python/trunk/Lib/test/test_htmlparser.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ import HTMLParser import pprint -import sys import unittest from test import test_support Modified: python/trunk/Lib/test/test_httplib.py ============================================================================== --- python/trunk/Lib/test/test_httplib.py (original) +++ python/trunk/Lib/test/test_httplib.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ import httplib import StringIO -import sys import socket from unittest import TestCase Modified: python/trunk/Lib/test/test_imgfile.py ============================================================================== --- python/trunk/Lib/test/test_imgfile.py (original) +++ python/trunk/Lib/test/test_imgfile.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ from test.test_support import verbose, unlink, findfile -import imgfile, uu, os +import imgfile, uu def main(): Modified: python/trunk/Lib/test/test_imp.py ============================================================================== --- python/trunk/Lib/test/test_imp.py (original) +++ python/trunk/Lib/test/test_imp.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import imp -import thread import unittest from test import test_support Modified: python/trunk/Lib/test/test_index.py ============================================================================== --- python/trunk/Lib/test/test_index.py (original) +++ python/trunk/Lib/test/test_index.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ import unittest from test import test_support import operator -import sys from sys import maxint maxsize = test_support.MAX_Py_ssize_t minsize = -maxsize-1 Modified: python/trunk/Lib/test/test_linuxaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_linuxaudiodev.py (original) +++ python/trunk/Lib/test/test_linuxaudiodev.py Sat Feb 23 18:40:11 2008 @@ -4,13 +4,9 @@ from test.test_support import findfile, TestSkipped, run_unittest import errno -import fcntl import linuxaudiodev -import os import sys -import select import sunaudio -import time import audioop import unittest Modified: python/trunk/Lib/test/test_list.py ============================================================================== --- python/trunk/Lib/test/test_list.py (original) +++ python/trunk/Lib/test/test_list.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import unittest import sys from test import test_support, list_tests Modified: python/trunk/Lib/test/test_logging.py ============================================================================== --- python/trunk/Lib/test/test_logging.py (original) +++ python/trunk/Lib/test/test_logging.py Sat Feb 23 18:40:11 2008 @@ -1858,8 +1858,8 @@ """ import select -import os, sys, string, struct, types, cPickle, cStringIO -import socket, tempfile, threading, time +import os, sys, string, struct, cPickle, cStringIO +import socket, threading import logging, logging.handlers, logging.config, test.test_support Modified: python/trunk/Lib/test/test_minidom.py ============================================================================== --- python/trunk/Lib/test/test_minidom.py (original) +++ python/trunk/Lib/test/test_minidom.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ import os import sys import pickle -import traceback from StringIO import StringIO from test.test_support import verbose, run_unittest, TestSkipped import unittest Modified: python/trunk/Lib/test/test_module.py ============================================================================== --- python/trunk/Lib/test/test_module.py (original) +++ python/trunk/Lib/test/test_module.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ # Test the module type import unittest -from test.test_support import verbose, run_unittest +from test.test_support import run_unittest import sys ModuleType = type(sys) Modified: python/trunk/Lib/test/test_modulefinder.py ============================================================================== --- python/trunk/Lib/test/test_modulefinder.py (original) +++ python/trunk/Lib/test/test_modulefinder.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,5 @@ import __future__ -import sys, os +import os import unittest import distutils.dir_util import tempfile Modified: python/trunk/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/trunk/Lib/test/test_multibytecodec_support.py (original) +++ python/trunk/Lib/test/test_multibytecodec_support.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,7 @@ # Common Unittest Routines for CJK codecs # -import sys, codecs, os.path +import sys, codecs import unittest, re from test import test_support from StringIO import StringIO Modified: python/trunk/Lib/test/test_optparse.py ============================================================================== --- python/trunk/Lib/test/test_optparse.py (original) +++ python/trunk/Lib/test/test_optparse.py Sat Feb 23 18:40:11 2008 @@ -16,7 +16,6 @@ import unittest from StringIO import StringIO -from pprint import pprint from test import test_support Modified: python/trunk/Lib/test/test_ossaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_ossaudiodev.py (original) +++ python/trunk/Lib/test/test_ossaudiodev.py Sat Feb 23 18:40:11 2008 @@ -1,14 +1,11 @@ from test import test_support test_support.requires('audio') -from test.test_support import verbose, findfile, TestSkipped +from test.test_support import findfile, TestSkipped import errno -import fcntl import ossaudiodev -import os import sys -import select import sunaudio import time import audioop Modified: python/trunk/Lib/test/test_pickle.py ============================================================================== --- python/trunk/Lib/test/test_pickle.py (original) +++ python/trunk/Lib/test/test_pickle.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import pickle -import unittest from cStringIO import StringIO from test import test_support Modified: python/trunk/Lib/test/test_pkg.py ============================================================================== --- python/trunk/Lib/test/test_pkg.py (original) +++ python/trunk/Lib/test/test_pkg.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ import os import tempfile import textwrap -import traceback import unittest from test import test_support Modified: python/trunk/Lib/test/test_plistlib.py ============================================================================== --- python/trunk/Lib/test/test_plistlib.py (original) +++ python/trunk/Lib/test/test_plistlib.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ import unittest import plistlib import os -import time import datetime from test import test_support Modified: python/trunk/Lib/test/test_poll.py ============================================================================== --- python/trunk/Lib/test/test_poll.py (original) +++ python/trunk/Lib/test/test_poll.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,6 @@ # Test case for the os.poll() function -import sys, os, select, random, unittest +import os, select, random, unittest from test.test_support import TestSkipped, TESTFN, run_unittest try: Modified: python/trunk/Lib/test/test_posix.py ============================================================================== --- python/trunk/Lib/test/test_posix.py (original) +++ python/trunk/Lib/test/test_posix.py Sat Feb 23 18:40:11 2008 @@ -9,7 +9,6 @@ import time import os -import sys import unittest import warnings warnings.filterwarnings('ignore', '.* potential security risk .*', Modified: python/trunk/Lib/test/test_pyclbr.py ============================================================================== --- python/trunk/Lib/test/test_pyclbr.py (original) +++ python/trunk/Lib/test/test_pyclbr.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,7 @@ Nick Mathewson ''' from test.test_support import run_unittest -import unittest, sys +import sys from types import ClassType, FunctionType, MethodType, BuiltinFunctionType import pyclbr from unittest import TestCase Modified: python/trunk/Lib/test/test_quopri.py ============================================================================== --- python/trunk/Lib/test/test_quopri.py (original) +++ python/trunk/Lib/test/test_quopri.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,7 @@ from test import test_support import unittest -import sys, os, cStringIO, subprocess +import sys, cStringIO, subprocess import quopri Modified: python/trunk/Lib/test/test_resource.py ============================================================================== --- python/trunk/Lib/test/test_resource.py (original) +++ python/trunk/Lib/test/test_resource.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ import unittest from test import test_support -import os import resource import time Modified: python/trunk/Lib/test/test_rfc822.py ============================================================================== --- python/trunk/Lib/test/test_rfc822.py (original) +++ python/trunk/Lib/test/test_rfc822.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ import rfc822 -import sys import unittest from test import test_support Modified: python/trunk/Lib/test/test_scriptpackages.py ============================================================================== --- python/trunk/Lib/test/test_scriptpackages.py (original) +++ python/trunk/Lib/test/test_scriptpackages.py Sat Feb 23 18:40:11 2008 @@ -1,9 +1,6 @@ # Copyright (C) 2003 Python Software Foundation import unittest -import os -import sys -import tempfile from test import test_support import aetools Modified: python/trunk/Lib/test/test_sgmllib.py ============================================================================== --- python/trunk/Lib/test/test_sgmllib.py (original) +++ python/trunk/Lib/test/test_sgmllib.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import htmlentitydefs import pprint import re import sgmllib @@ -116,7 +115,7 @@ try: events = self.get_events(source) except: - import sys + #import sys #print >>sys.stderr, pprint.pformat(self.events) raise if events != expected_events: Modified: python/trunk/Lib/test/test_shlex.py ============================================================================== --- python/trunk/Lib/test/test_shlex.py (original) +++ python/trunk/Lib/test/test_shlex.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # -*- coding: iso-8859-1 -*- import unittest -import os, sys import shlex from test import test_support Modified: python/trunk/Lib/test/test_site.py ============================================================================== --- python/trunk/Lib/test/test_site.py (original) +++ python/trunk/Lib/test/test_site.py Sat Feb 23 18:40:11 2008 @@ -5,12 +5,11 @@ """ import unittest -from test.test_support import TestSkipped, TestFailed, run_unittest, TESTFN +from test.test_support import TestSkipped, run_unittest, TESTFN import __builtin__ import os import sys import encodings -import tempfile # Need to make sure to not import 'site' if someone specified ``-S`` at the # command-line. Detect this by just making sure 'site' has not been imported # already. Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Sat Feb 23 18:40:11 2008 @@ -9,7 +9,6 @@ import select import time import threading -from functools import wraps import unittest import SocketServer Modified: python/trunk/Lib/test/test_sqlite.py ============================================================================== --- python/trunk/Lib/test/test_sqlite.py (original) +++ python/trunk/Lib/test/test_sqlite.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ from test.test_support import run_unittest, TestSkipped -import unittest try: import _sqlite3 Modified: python/trunk/Lib/test/test_str.py ============================================================================== --- python/trunk/Lib/test/test_str.py (original) +++ python/trunk/Lib/test/test_str.py Sat Feb 23 18:40:11 2008 @@ -1,5 +1,4 @@ -import unittest import struct import sys from test import test_support, string_tests Modified: python/trunk/Lib/test/test_strftime.py ============================================================================== --- python/trunk/Lib/test/test_strftime.py (original) +++ python/trunk/Lib/test/test_strftime.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,7 @@ # Sanity checker for time.strftime -import time, calendar, sys, os, re +import time, calendar, sys, re from test.test_support import verbose def main(): Modified: python/trunk/Lib/test/test_sunaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_sunaudiodev.py (original) +++ python/trunk/Lib/test/test_sunaudiodev.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,4 @@ -from test.test_support import verbose, findfile, TestFailed, TestSkipped +from test.test_support import findfile, TestFailed, TestSkipped import sunaudiodev import os Modified: python/trunk/Lib/test/test_support.py ============================================================================== --- python/trunk/Lib/test/test_support.py (original) +++ python/trunk/Lib/test/test_support.py Sat Feb 23 18:40:11 2008 @@ -10,7 +10,6 @@ import os import os.path import warnings -import types import unittest class Error(Exception): Modified: python/trunk/Lib/test/test_tuple.py ============================================================================== --- python/trunk/Lib/test/test_tuple.py (original) +++ python/trunk/Lib/test/test_tuple.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,3 @@ -import unittest from test import test_support, seq_tests class TupleTest(seq_tests.CommonTest): Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ (c) Copyright CNRI, All Rights Reserved. NO WARRANTY. """#" -import unittest, sys, struct, codecs, new +import sys, struct, codecs from test import test_support, string_tests # Error handling (bad decoder return) Modified: python/trunk/Lib/test/test_unpack.py ============================================================================== --- python/trunk/Lib/test/test_unpack.py (original) +++ python/trunk/Lib/test/test_unpack.py Sat Feb 23 18:40:11 2008 @@ -122,7 +122,6 @@ __test__ = {'doctests' : doctests} def test_main(verbose=False): - import sys from test import test_support from test import test_unpack test_support.run_doctest(test_unpack, verbose) Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Sat Feb 23 18:40:11 2008 @@ -8,10 +8,6 @@ import mimetools import tempfile import StringIO -import ftplib -import threading -import socket -import time def hexescape(char): """Escape char as RFC 2396 specifies""" Modified: python/trunk/Lib/test/test_urllib2.py ============================================================================== --- python/trunk/Lib/test/test_urllib2.py (original) +++ python/trunk/Lib/test/test_urllib2.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,7 @@ import unittest from test import test_support -import os, socket +import os import StringIO import urllib2 @@ -589,7 +589,7 @@ self.assertEqual(int(headers["Content-length"]), len(data)) def test_file(self): - import time, rfc822, socket + import rfc822, socket h = urllib2.FileHandler() o = h.parent = MockOpener() @@ -993,7 +993,7 @@ def _test_basic_auth(self, opener, auth_handler, auth_header, realm, http_handler, password_manager, request_url, protected_url): - import base64, httplib + import base64 user, password = "wile", "coyote" # .add_password() fed through to password manager Modified: python/trunk/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/trunk/Lib/test/test_urllib2_localnet.py (original) +++ python/trunk/Lib/test/test_urllib2_localnet.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ #!/usr/bin/env python -import sys import threading import urlparse import urllib2 Modified: python/trunk/Lib/test/test_userdict.py ============================================================================== --- python/trunk/Lib/test/test_userdict.py (original) +++ python/trunk/Lib/test/test_userdict.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Check every path through every method of UserDict -import unittest from test import test_support, mapping_tests import UserDict Modified: python/trunk/Lib/test/test_userlist.py ============================================================================== --- python/trunk/Lib/test/test_userlist.py (original) +++ python/trunk/Lib/test/test_userlist.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Check every path through every method of UserList from UserList import UserList -import unittest from test import test_support, list_tests class UserListTest(list_tests.CommonTest): Modified: python/trunk/Lib/test/test_userstring.py ============================================================================== --- python/trunk/Lib/test/test_userstring.py (original) +++ python/trunk/Lib/test/test_userstring.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ # UserString is a wrapper around the native builtin string type. # UserString instances should behave similar to builtin string objects. -import unittest import string from test import test_support, string_tests Modified: python/trunk/Lib/test/test_uu.py ============================================================================== --- python/trunk/Lib/test/test_uu.py (original) +++ python/trunk/Lib/test/test_uu.py Sat Feb 23 18:40:11 2008 @@ -8,7 +8,6 @@ import sys, os, uu, cStringIO import uu -from StringIO import StringIO plaintext = "The smooth-scaled python crept over the sleeping dog\n" Modified: python/trunk/Lib/test/test_whichdb.py ============================================================================== --- python/trunk/Lib/test/test_whichdb.py (original) +++ python/trunk/Lib/test/test_whichdb.py Sat Feb 23 18:40:11 2008 @@ -8,7 +8,6 @@ import unittest import whichdb import anydbm -import tempfile import glob _fname = test.test_support.TESTFN Modified: python/trunk/Lib/test/test_xml_etree.py ============================================================================== --- python/trunk/Lib/test/test_xml_etree.py (original) +++ python/trunk/Lib/test/test_xml_etree.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,8 @@ # all included components work as they should. For a more extensive # test suite, see the selftest script in the ElementTree distribution. -import doctest, sys +import doctest +import sys from test import test_support Modified: python/trunk/Lib/test/test_xml_etree_c.py ============================================================================== --- python/trunk/Lib/test/test_xml_etree_c.py (original) +++ python/trunk/Lib/test/test_xml_etree_c.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,7 @@ # xml.etree test for cElementTree -import doctest, sys +import doctest +import sys from test import test_support Modified: python/trunk/Lib/test/test_xpickle.py ============================================================================== --- python/trunk/Lib/test/test_xpickle.py (original) +++ python/trunk/Lib/test/test_xpickle.py Sat Feb 23 18:40:11 2008 @@ -5,7 +5,6 @@ import pickle import cPickle -import unittest from test import test_support from test.pickletester import AbstractPickleTests Modified: python/trunk/Lib/test/test_zipfile64.py ============================================================================== --- python/trunk/Lib/test/test_zipfile64.py (original) +++ python/trunk/Lib/test/test_zipfile64.py Sat Feb 23 18:40:11 2008 @@ -20,7 +20,6 @@ import time import sys -from StringIO import StringIO from tempfile import TemporaryFile from test.test_support import TESTFN, run_unittest Modified: python/trunk/Mac/Demo/PICTbrowse/ICONbrowse.py ============================================================================== --- python/trunk/Mac/Demo/PICTbrowse/ICONbrowse.py (original) +++ python/trunk/Mac/Demo/PICTbrowse/ICONbrowse.py Sat Feb 23 18:40:11 2008 @@ -7,8 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys -import struct from Carbon import Icn import macresource Modified: python/trunk/Mac/Demo/PICTbrowse/PICTbrowse.py ============================================================================== --- python/trunk/Mac/Demo/PICTbrowse/PICTbrowse.py (original) +++ python/trunk/Mac/Demo/PICTbrowse/PICTbrowse.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys import struct import macresource Modified: python/trunk/Mac/Demo/PICTbrowse/PICTbrowse2.py ============================================================================== --- python/trunk/Mac/Demo/PICTbrowse/PICTbrowse2.py (original) +++ python/trunk/Mac/Demo/PICTbrowse/PICTbrowse2.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys import struct import macresource Modified: python/trunk/Mac/Demo/PICTbrowse/cicnbrowse.py ============================================================================== --- python/trunk/Mac/Demo/PICTbrowse/cicnbrowse.py (original) +++ python/trunk/Mac/Demo/PICTbrowse/cicnbrowse.py Sat Feb 23 18:40:11 2008 @@ -7,8 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys -import struct from Carbon import Icn import macresource Modified: python/trunk/Mac/Demo/PICTbrowse/oldPICTbrowse.py ============================================================================== --- python/trunk/Mac/Demo/PICTbrowse/oldPICTbrowse.py (original) +++ python/trunk/Mac/Demo/PICTbrowse/oldPICTbrowse.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,6 @@ from Carbon import Qd from Carbon import Win from Carbon import List -import sys import struct import macresource Modified: python/trunk/Mac/Demo/example1/dnslookup-1.py ============================================================================== --- python/trunk/Mac/Demo/example1/dnslookup-1.py (original) +++ python/trunk/Mac/Demo/example1/dnslookup-1.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ import EasyDialogs from Carbon import Res from Carbon import Dlg -import sys import socket import string import macresource Modified: python/trunk/Mac/Demo/example2/dnslookup-2.py ============================================================================== --- python/trunk/Mac/Demo/example2/dnslookup-2.py (original) +++ python/trunk/Mac/Demo/example2/dnslookup-2.py Sat Feb 23 18:40:11 2008 @@ -2,7 +2,6 @@ import EasyDialogs from Carbon import Res from Carbon import Dlg -import sys import socket import string import macresource Modified: python/trunk/Mac/Demo/imgbrowse/imgbrowse.py ============================================================================== --- python/trunk/Mac/Demo/imgbrowse/imgbrowse.py (original) +++ python/trunk/Mac/Demo/imgbrowse/imgbrowse.py Sat Feb 23 18:40:11 2008 @@ -7,11 +7,9 @@ from Carbon import QuickDraw from Carbon import Win #ifrom Carbon mport List -import sys import struct import img import imgformat -import struct import mac_image Modified: python/trunk/Mac/Demo/imgbrowse/mac_image.py ============================================================================== --- python/trunk/Mac/Demo/imgbrowse/mac_image.py (original) +++ python/trunk/Mac/Demo/imgbrowse/mac_image.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ """mac_image - Helper routines (hacks) for images""" import imgformat from Carbon import Qd -import time import struct import MacOS Modified: python/trunk/Mac/Demo/sound/morse.py ============================================================================== --- python/trunk/Mac/Demo/sound/morse.py (original) +++ python/trunk/Mac/Demo/sound/morse.py Sat Feb 23 18:40:11 2008 @@ -1,4 +1,4 @@ -import sys, math, audiodev +import sys, math DOT = 30 DAH = 80 Modified: python/trunk/Mac/Modules/ae/aescan.py ============================================================================== --- python/trunk/Mac/Modules/ae/aescan.py (original) +++ python/trunk/Mac/Modules/ae/aescan.py Sat Feb 23 18:40:11 2008 @@ -3,8 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os -import string import MacOS from bgenlocations import TOOLBOXDIR, BGENDIR Modified: python/trunk/Mac/Modules/ah/ahscan.py ============================================================================== --- python/trunk/Mac/Modules/ah/ahscan.py (original) +++ python/trunk/Mac/Modules/ah/ahscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/app/appscan.py ============================================================================== --- python/trunk/Mac/Modules/app/appscan.py (original) +++ python/trunk/Mac/Modules/app/appscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/carbonevt/CarbonEvtscan.py ============================================================================== --- python/trunk/Mac/Modules/carbonevt/CarbonEvtscan.py (original) +++ python/trunk/Mac/Modules/carbonevt/CarbonEvtscan.py Sat Feb 23 18:40:11 2008 @@ -1,8 +1,6 @@ # IBCarbonscan.py import sys -import os -import string import MacOS import sys Modified: python/trunk/Mac/Modules/cf/cfscan.py ============================================================================== --- python/trunk/Mac/Modules/cf/cfscan.py (original) +++ python/trunk/Mac/Modules/cf/cfscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/cg/cgscan.py ============================================================================== --- python/trunk/Mac/Modules/cg/cgscan.py (original) +++ python/trunk/Mac/Modules/cg/cgscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/cm/cmscan.py ============================================================================== --- python/trunk/Mac/Modules/cm/cmscan.py (original) +++ python/trunk/Mac/Modules/cm/cmscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/ctl/ctlscan.py ============================================================================== --- python/trunk/Mac/Modules/ctl/ctlscan.py (original) +++ python/trunk/Mac/Modules/ctl/ctlscan.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Scan , generating ctlgen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/dlg/dlgscan.py ============================================================================== --- python/trunk/Mac/Modules/dlg/dlgscan.py (original) +++ python/trunk/Mac/Modules/dlg/dlgscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/drag/dragscan.py ============================================================================== --- python/trunk/Mac/Modules/drag/dragscan.py (original) +++ python/trunk/Mac/Modules/drag/dragscan.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Scan , generating draggen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/evt/evtscan.py ============================================================================== --- python/trunk/Mac/Modules/evt/evtscan.py (original) +++ python/trunk/Mac/Modules/evt/evtscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/file/filescan.py ============================================================================== --- python/trunk/Mac/Modules/file/filescan.py (original) +++ python/trunk/Mac/Modules/file/filescan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/fm/fmscan.py ============================================================================== --- python/trunk/Mac/Modules/fm/fmscan.py (original) +++ python/trunk/Mac/Modules/fm/fmscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/folder/folderscan.py ============================================================================== --- python/trunk/Mac/Modules/folder/folderscan.py (original) +++ python/trunk/Mac/Modules/folder/folderscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/help/helpscan.py ============================================================================== --- python/trunk/Mac/Modules/help/helpscan.py (original) +++ python/trunk/Mac/Modules/help/helpscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/ibcarbon/IBCarbonscan.py ============================================================================== --- python/trunk/Mac/Modules/ibcarbon/IBCarbonscan.py (original) +++ python/trunk/Mac/Modules/ibcarbon/IBCarbonscan.py Sat Feb 23 18:40:11 2008 @@ -1,8 +1,6 @@ # IBCarbonscan.py import sys -import os -import string from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/icn/icnscan.py ============================================================================== --- python/trunk/Mac/Modules/icn/icnscan.py (original) +++ python/trunk/Mac/Modules/icn/icnscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/launch/launchscan.py ============================================================================== --- python/trunk/Mac/Modules/launch/launchscan.py (original) +++ python/trunk/Mac/Modules/launch/launchscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/list/listscan.py ============================================================================== --- python/trunk/Mac/Modules/list/listscan.py (original) +++ python/trunk/Mac/Modules/list/listscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/menu/menuscan.py ============================================================================== --- python/trunk/Mac/Modules/menu/menuscan.py (original) +++ python/trunk/Mac/Modules/menu/menuscan.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Scan , generating menugen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/mlte/mltescan.py ============================================================================== --- python/trunk/Mac/Modules/mlte/mltescan.py (original) +++ python/trunk/Mac/Modules/mlte/mltescan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/trunk/Mac/Modules/osa/osascan.py ============================================================================== --- python/trunk/Mac/Modules/osa/osascan.py (original) +++ python/trunk/Mac/Modules/osa/osascan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/qd/qdscan.py ============================================================================== --- python/trunk/Mac/Modules/qd/qdscan.py (original) +++ python/trunk/Mac/Modules/qd/qdscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/qdoffs/qdoffsscan.py ============================================================================== --- python/trunk/Mac/Modules/qdoffs/qdoffsscan.py (original) +++ python/trunk/Mac/Modules/qdoffs/qdoffsscan.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/qt/qtscan.py ============================================================================== --- python/trunk/Mac/Modules/qt/qtscan.py (original) +++ python/trunk/Mac/Modules/qt/qtscan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/res/resscan.py ============================================================================== --- python/trunk/Mac/Modules/res/resscan.py (original) +++ python/trunk/Mac/Modules/res/resscan.py Sat Feb 23 18:40:11 2008 @@ -3,8 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os -import string import MacOS from bgenlocations import TOOLBOXDIR, BGENDIR Modified: python/trunk/Mac/Modules/scrap/scrapscan.py ============================================================================== --- python/trunk/Mac/Modules/scrap/scrapscan.py (original) +++ python/trunk/Mac/Modules/scrap/scrapscan.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,6 @@ # generates a boilerplate to be edited by hand. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/snd/sndscan.py ============================================================================== --- python/trunk/Mac/Modules/snd/sndscan.py (original) +++ python/trunk/Mac/Modules/snd/sndscan.py Sat Feb 23 18:40:11 2008 @@ -3,7 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Mac/Modules/te/tescan.py ============================================================================== --- python/trunk/Mac/Modules/te/tescan.py (original) +++ python/trunk/Mac/Modules/te/tescan.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/trunk/Mac/Modules/win/winscan.py ============================================================================== --- python/trunk/Mac/Modules/win/winscan.py (original) +++ python/trunk/Mac/Modules/win/winscan.py Sat Feb 23 18:40:11 2008 @@ -1,6 +1,5 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/trunk/Misc/BeOS-setup.py ============================================================================== --- python/trunk/Misc/BeOS-setup.py (original) +++ python/trunk/Misc/BeOS-setup.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,7 @@ __version__ = "special BeOS after 1.37" -import sys, os, getopt +import sys, os from distutils import sysconfig from distutils import text_file from distutils.errors import * Modified: python/trunk/PC/VS8.0/build_tkinter.py ============================================================================== --- python/trunk/PC/VS8.0/build_tkinter.py (original) +++ python/trunk/PC/VS8.0/build_tkinter.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ import os import sys -import shutil here = os.path.abspath(os.path.dirname(__file__)) par = os.path.pardir Modified: python/trunk/PCbuild/build_tkinter.py ============================================================================== --- python/trunk/PCbuild/build_tkinter.py (original) +++ python/trunk/PCbuild/build_tkinter.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ import os import sys -import shutil here = os.path.abspath(os.path.dirname(__file__)) par = os.path.pardir Modified: python/trunk/Parser/asdl_c.py ============================================================================== --- python/trunk/Parser/asdl_c.py (original) +++ python/trunk/Parser/asdl_c.py Sat Feb 23 18:40:11 2008 @@ -4,7 +4,7 @@ # TO DO # handle fields that have a type but no name -import os, sys, traceback +import os, sys import asdl Modified: python/trunk/Parser/spark.py ============================================================================== --- python/trunk/Parser/spark.py (original) +++ python/trunk/Parser/spark.py Sat Feb 23 18:40:11 2008 @@ -22,7 +22,6 @@ __version__ = 'SPARK-0.7 (pre-alpha-5)' import re -import sys import string def _namelist(instance): Modified: python/trunk/Tools/compiler/astgen.py ============================================================================== --- python/trunk/Tools/compiler/astgen.py (original) +++ python/trunk/Tools/compiler/astgen.py Sat Feb 23 18:40:11 2008 @@ -8,7 +8,6 @@ """ import fileinput -import getopt import re import sys from StringIO import StringIO Modified: python/trunk/Tools/compiler/dumppyc.py ============================================================================== --- python/trunk/Tools/compiler/dumppyc.py (original) +++ python/trunk/Tools/compiler/dumppyc.py Sat Feb 23 18:40:11 2008 @@ -1,7 +1,6 @@ #! /usr/bin/env python import marshal -import os import dis import types Modified: python/trunk/Tools/faqwiz/faqw.py ============================================================================== --- python/trunk/Tools/faqwiz/faqw.py (original) +++ python/trunk/Tools/faqwiz/faqw.py Sat Feb 23 18:40:11 2008 @@ -20,7 +20,7 @@ try: FAQDIR = "/usr/people/guido/python/FAQ" SRCDIR = "/usr/people/guido/python/src/Tools/faqwiz" - import os, sys, time, operator + import os, sys os.chdir(FAQDIR) sys.path.insert(0, SRCDIR) import faqwiz Modified: python/trunk/Tools/modulator/Tkextra.py ============================================================================== --- python/trunk/Tools/modulator/Tkextra.py (original) +++ python/trunk/Tools/modulator/Tkextra.py Sat Feb 23 18:40:11 2008 @@ -218,7 +218,6 @@ 0, 'Save', 'Save as text') def _test(): - import sys global mainWidget mainWidget = Frame() Pack.config(mainWidget) Modified: python/trunk/Tools/pybench/systimes.py ============================================================================== --- python/trunk/Tools/pybench/systimes.py (original) +++ python/trunk/Tools/pybench/systimes.py Sat Feb 23 18:40:11 2008 @@ -31,7 +31,7 @@ the author. All Rights Reserved. """ -import time, sys, struct +import time, sys # # Note: Please keep this module compatible to Python 1.5.2. Modified: python/trunk/Tools/pynche/ChipViewer.py ============================================================================== --- python/trunk/Tools/pynche/ChipViewer.py (original) +++ python/trunk/Tools/pynche/ChipViewer.py Sat Feb 23 18:40:11 2008 @@ -13,7 +13,6 @@ selected and nearest ChipWidgets. """ -from types import StringType from Tkinter import * import ColorDB Modified: python/trunk/Tools/pynche/TypeinViewer.py ============================================================================== --- python/trunk/Tools/pynche/TypeinViewer.py (original) +++ python/trunk/Tools/pynche/TypeinViewer.py Sat Feb 23 18:40:11 2008 @@ -12,8 +12,6 @@ you must hit Return or Tab to select the color. """ -import sys -import re from Tkinter import * Modified: python/trunk/Tools/scripts/logmerge.py ============================================================================== --- python/trunk/Tools/scripts/logmerge.py (original) +++ python/trunk/Tools/scripts/logmerge.py Sat Feb 23 18:40:11 2008 @@ -34,7 +34,7 @@ from their output. """ -import os, sys, errno, getopt, re +import sys, errno, getopt, re sep1 = '='*77 + '\n' # file separator sep2 = '-'*28 + '\n' # revision separator Modified: python/trunk/Tools/scripts/nm2def.py ============================================================================== --- python/trunk/Tools/scripts/nm2def.py (original) +++ python/trunk/Tools/scripts/nm2def.py Sat Feb 23 18:40:11 2008 @@ -34,7 +34,7 @@ option to produce this format (since it is the original v7 Unix format). """ -import os,re,sys +import os, sys PYTHONLIB = 'libpython'+sys.version[:3]+'.a' PC_PYTHONLIB = 'Python'+sys.version[0]+sys.version[2]+'.dll' Modified: python/trunk/Tools/scripts/pindent.py ============================================================================== --- python/trunk/Tools/scripts/pindent.py (original) +++ python/trunk/Tools/scripts/pindent.py Sat Feb 23 18:40:11 2008 @@ -81,7 +81,6 @@ TABSIZE = 8 EXPANDTABS = 0 -import os import re import sys Modified: python/trunk/Tools/scripts/pysource.py ============================================================================== --- python/trunk/Tools/scripts/pysource.py (original) +++ python/trunk/Tools/scripts/pysource.py Sat Feb 23 18:40:11 2008 @@ -20,7 +20,7 @@ __all__ = ["has_python_ext", "looks_like_python", "can_be_compiled", "walk_python_files"] -import sys, os, re +import os, re binary_re = re.compile('[\x00-\x08\x0E-\x1F\x7F]') Modified: python/trunk/Tools/scripts/xxci.py ============================================================================== --- python/trunk/Tools/scripts/xxci.py (original) +++ python/trunk/Tools/scripts/xxci.py Sat Feb 23 18:40:11 2008 @@ -7,7 +7,6 @@ import sys import os from stat import * -import commands import fnmatch EXECMAGIC = '\001\140\000\010' Modified: python/trunk/Tools/ssl/get-remote-certificate.py ============================================================================== --- python/trunk/Tools/ssl/get-remote-certificate.py (original) +++ python/trunk/Tools/ssl/get-remote-certificate.py Sat Feb 23 18:40:11 2008 @@ -6,7 +6,7 @@ # # By Bill Janssen. -import sys, os +import sys def fetch_server_certificate (host, port): Modified: python/trunk/Tools/unicode/gencodec.py ============================================================================== --- python/trunk/Tools/unicode/gencodec.py (original) +++ python/trunk/Tools/unicode/gencodec.py Sat Feb 23 18:40:11 2008 @@ -26,7 +26,7 @@ """#" -import re, os, time, marshal, codecs +import re, os, marshal, codecs # Maximum allowed size of charmap tables MAX_TABLE_SIZE = 8192 Modified: python/trunk/Tools/webchecker/wcgui.py ============================================================================== --- python/trunk/Tools/webchecker/wcgui.py (original) +++ python/trunk/Tools/webchecker/wcgui.py Sat Feb 23 18:40:11 2008 @@ -63,7 +63,6 @@ from Tkinter import * import tktools import webchecker -import random # Override some for a weaker platform if sys.platform == 'mac': Modified: python/trunk/Tools/webchecker/wsgui.py ============================================================================== --- python/trunk/Tools/webchecker/wsgui.py (original) +++ python/trunk/Tools/webchecker/wsgui.py Sat Feb 23 18:40:11 2008 @@ -7,9 +7,7 @@ """ from Tkinter import * -import Tkinter import websucker -import sys import os import threading import Queue From python-checkins at python.org Sat Feb 23 18:42:31 2008 From: python-checkins at python.org (christian.heimes) Date: Sat, 23 Feb 2008 18:42:31 +0100 (CET) Subject: [Python-checkins] r61001 - in python/trunk: Misc/NEWS Modules/syslogmodule.c Message-ID: <20080223174231.B234C1E4016@bag.python.org> Author: christian.heimes Date: Sat Feb 23 18:42:31 2008 New Revision: 61001 Modified: python/trunk/Misc/NEWS python/trunk/Modules/syslogmodule.c Log: Patch #1957: syslogmodule: Release GIL when calling syslog(3) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 18:42:31 2008 @@ -1193,6 +1193,8 @@ Extension Modules ----------------- +- Patch #1957: syslogmodule: Release GIL when calling syslog(3) + - #2112: mmap.error is now a subclass of EnvironmentError and not a direct EnvironmentError Modified: python/trunk/Modules/syslogmodule.c ============================================================================== --- python/trunk/Modules/syslogmodule.c (original) +++ python/trunk/Modules/syslogmodule.c Sat Feb 23 18:42:31 2008 @@ -92,7 +92,9 @@ return NULL; } + Py_BEGIN_ALLOW_THREADS; syslog(priority, "%s", message); + Py_END_ALLOW_THREADS; Py_INCREF(Py_None); return Py_None; } From python-checkins at python.org Sat Feb 23 18:52:07 2008 From: python-checkins at python.org (christian.heimes) Date: Sat, 23 Feb 2008 18:52:07 +0100 (CET) Subject: [Python-checkins] r61002 - in python/trunk: Misc/NEWS Python/Python-ast.c Python/import.c Message-ID: <20080223175207.E17251E4016@bag.python.org> Author: christian.heimes Date: Sat Feb 23 18:52:07 2008 New Revision: 61002 Modified: python/trunk/Misc/NEWS python/trunk/Python/Python-ast.c python/trunk/Python/import.c Log: Issue #2051 and patch from Alexander Belopolsky: Permission for pyc and pyo files are inherited from the py file. Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Feb 23 18:52:07 2008 @@ -12,6 +12,9 @@ Core and builtins ----------------- +- Issue #2051: pyc and pyo files are not longer created with permission 644. The + mode is now inherited from the py file. + - Issue #2067: file.__exit__() now calls subclasses' close() method. - Patch #1759: Backport of PEP 3129 class decorators. Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sat Feb 23 18:52:07 2008 @@ -2,7 +2,7 @@ /* - __version__ 53731. + __version__ 60978. This module must be committed separately after each AST grammar change; The __version__ number is set to the revision number of the commit @@ -2958,7 +2958,7 @@ if (PyDict_SetItemString(d, "AST", (PyObject*)AST_type) < 0) return; if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) return; - if (PyModule_AddStringConstant(m, "__version__", "53731") < 0) + if (PyModule_AddStringConstant(m, "__version__", "60978") < 0) return; if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return; if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) Modified: python/trunk/Python/import.c ============================================================================== --- python/trunk/Python/import.c (original) +++ python/trunk/Python/import.c Sat Feb 23 18:52:07 2008 @@ -829,7 +829,7 @@ /* Helper to open a bytecode file for writing in exclusive mode */ static FILE * -open_exclusive(char *filename) +open_exclusive(char *filename, mode_t mode) { #if defined(O_EXCL)&&defined(O_CREAT)&&defined(O_WRONLY)&&defined(O_TRUNC) /* Use O_EXCL to avoid a race condition when another process tries to @@ -845,9 +845,9 @@ |O_BINARY /* necessary for Windows */ #endif #ifdef __VMS - , 0666, "ctxt=bin", "shr=nil" + , mode, "ctxt=bin", "shr=nil" #else - , 0666 + , mode #endif ); if (fd < 0) @@ -866,11 +866,13 @@ remove the file. */ static void -write_compiled_module(PyCodeObject *co, char *cpathname, time_t mtime) +write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat) { FILE *fp; + time_t mtime = srcstat->st_mtime; + mode_t mode = srcstat->st_mode; - fp = open_exclusive(cpathname); + fp = open_exclusive(cpathname, mode); if (fp == NULL) { if (Py_VerboseFlag) PySys_WriteStderr( @@ -907,17 +909,16 @@ static PyObject * load_source_module(char *name, char *pathname, FILE *fp) { - time_t mtime; + struct stat st; FILE *fpc; char buf[MAXPATHLEN+1]; char *cpathname; PyCodeObject *co; PyObject *m; - - mtime = PyOS_GetLastModificationTime(pathname, fp); - if (mtime == (time_t)(-1)) { + + if (fstat(fileno(fp), &st) != 0) { PyErr_Format(PyExc_RuntimeError, - "unable to get modification time from '%s'", + "unable to get file status from '%s'", pathname); return NULL; } @@ -926,7 +927,7 @@ in 4 bytes. This will be fine until sometime in the year 2038, when a 4-byte signed time_t will overflow. */ - if (mtime >> 32) { + if (st.st_mtime >> 32) { PyErr_SetString(PyExc_OverflowError, "modification time overflows a 4 byte field"); return NULL; @@ -935,7 +936,7 @@ cpathname = make_compiled_pathname(pathname, buf, (size_t)MAXPATHLEN + 1); if (cpathname != NULL && - (fpc = check_compiled_module(pathname, mtime, cpathname))) { + (fpc = check_compiled_module(pathname, st.st_mtime, cpathname))) { co = read_compiled_module(cpathname, fpc); fclose(fpc); if (co == NULL) @@ -955,7 +956,7 @@ if (cpathname) { PyObject *ro = PySys_GetObject("dont_write_bytecode"); if (ro == NULL || !PyObject_IsTrue(ro)) - write_compiled_module(co, cpathname, mtime); + write_compiled_module(co, cpathname, &st); } } m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, pathname); From fdrake at acm.org Sat Feb 23 19:19:08 2008 From: fdrake at acm.org (Fred Drake) Date: Sat, 23 Feb 2008 13:19:08 -0500 Subject: [Python-checkins] r60976 - in python/trunk: Doc/library/configparser.rst Lib/ConfigParser.py Lib/test/test_cfgparser.py Misc/NEWS In-Reply-To: <20080223124611.06FCD1E401A@bag.python.org> References: <20080223124611.06FCD1E401A@bag.python.org> Message-ID: <1AB00138-CA9B-4CB7-846A-BF4C6879AB86@acm.org> On Feb 23, 2008, at 7:46 AM, facundo.batista wrote: > Issue 1781. Now ConfigParser.add_section does not let you add a > DEFAULT section any more, because it duplicated sections with > the rest of the machinery. Thanks Tim Lesher and Manuel Kaufmann. That's a good catch; thanks! > Modified: python/trunk/Doc/library/configparser.rst ... > + already exists, :exc:`DuplicateSectionError` is raised. If the > name > + ``DEFAULT`` (or any of it's case-insensitive variants) is passed, > + :exc:`ValueError` is raised. Why are we concerned about the case-insensitive variants? Section names are not case-folded, as option names are by default. There are also no ways to control the interpretation of section names, so I think checking only for "DEFAULT" is sufficient. If a config file contains a [default] section, that's currently loaded and accessible. -Fred -- Fred Drake From python-checkins at python.org Sat Feb 23 19:47:05 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 19:47:05 +0100 (CET) Subject: [Python-checkins] r61004 - python/trunk/Doc/Makefile python/trunk/Doc/README.txt python/trunk/Doc/conf.py Message-ID: <20080223184705.42E8E1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 19:47:04 2008 New Revision: 61004 Modified: python/trunk/Doc/Makefile python/trunk/Doc/README.txt python/trunk/Doc/conf.py Log: Documentation coverage builder, part 1. Modified: python/trunk/Doc/Makefile ============================================================================== --- python/trunk/Doc/Makefile (original) +++ python/trunk/Doc/Makefile Sat Feb 23 19:47:04 2008 @@ -12,7 +12,7 @@ ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_paper_size=$(PAPER) \ $(SPHINXOPTS) . build/$(BUILDER) -.PHONY: help checkout update build html web htmlhelp clean +.PHONY: help checkout update build html web htmlhelp clean coverage help: @echo "Please use \`make ' where is one of" @@ -22,6 +22,7 @@ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview over all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" + @echo " coverage to check documentation coverage for library and C API" checkout: @if [ ! -d tools/sphinx ]; then \ @@ -74,9 +75,13 @@ linkcheck: BUILDER = linkcheck linkcheck: build - @echo "Link check complete; look for any errors in the above output "\ + @echo "Link check complete; look for any errors in the above output " \ "or in build/$(BUILDER)/output.txt" +coverage: BUILDER = coverage +coverage: build + @echo "Coverage finished; see c.txt and python.txt in build/coverage" + clean: -rm -rf build/* -rm -rf tools/sphinx Modified: python/trunk/Doc/README.txt ============================================================================== --- python/trunk/Doc/README.txt (original) +++ python/trunk/Doc/README.txt Sat Feb 23 19:47:04 2008 @@ -59,6 +59,9 @@ deprecated items in the current version. This is meant as a help for the writer of the "What's New" document. + * "coverage", which builds a coverage overview for standard library modules + and C API. + A "make update" updates the Subversion checkouts in `tools/`. Modified: python/trunk/Doc/conf.py ============================================================================== --- python/trunk/Doc/conf.py (original) +++ python/trunk/Doc/conf.py Sat Feb 23 19:47:04 2008 @@ -13,7 +13,7 @@ # General configuration # --------------------- -extensions = ['sphinx.addons.refcounting'] +extensions = ['sphinx.addons.refcounting', 'sphinx.addons.coverage'] # General substitutions. project = 'Python' @@ -139,3 +139,39 @@ # Documents to append as an appendix to all manuals. latex_appendices = ['glossary', 'about', 'license', 'copyright'] + +# Options for the coverage checker +# -------------------------------- + +# The coverage checker will ignore all modules/functions/classes whose names +# match any of the following regexes (using re.match). +coverage_ignore_modules = [ + r'[T|t][k|K]', + r'Tix', + r'distutils.*', +] + +coverage_ignore_functions = [ + 'test($|_)', +] + +coverage_ignore_classes = [ +] + +# Glob patterns for C source files for C API coverage, relative to this directory. +coverage_c_path = [ + '../Include/*.h', +] + +# Regexes to find C items in the source files. +coverage_c_regexes = { + 'cfunction': (r'^PyAPI_FUNC\(.*\)\s+([^_][\w_]+)'), + 'data': (r'^PyAPI_DATA\(.*\)\s+([^_][\w_]+)'), + 'macro': (r'^#define ([^_][\w_]+)\(.*\)[\s|\\]'), +} + +# The coverage checker will ignore all C items whose names match these regexes +# (using re.match) -- the keys must be the same as in coverage_c_regexes. +coverage_ignore_c_items = { +# 'cfunction': [...] +} From python-checkins at python.org Sat Feb 23 19:47:36 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 19:47:36 +0100 (CET) Subject: [Python-checkins] r61005 - in doctools/trunk/sphinx: addons/coverage.py config.py util/__init__.py Message-ID: <20080223184736.1BAD81E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 19:47:35 2008 New Revision: 61005 Added: doctools/trunk/sphinx/addons/coverage.py Modified: doctools/trunk/sphinx/config.py doctools/trunk/sphinx/util/__init__.py Log: Add coverage builder for Sphinx, written for GHOP by Josip Dzolonga. Added: doctools/trunk/sphinx/addons/coverage.py ============================================================================== --- (empty file) +++ doctools/trunk/sphinx/addons/coverage.py Sat Feb 23 19:47:35 2008 @@ -0,0 +1,246 @@ +# -*- coding: utf-8 -*- +""" + sphinx.addons.coverage + ~~~~~~~~~~~~~~~~~~~~~~ + + Check Python modules and C API for coverage. Mostly written by Josip + Dzolonga for the Google Highly Open Participation contest. + + :copyright: 2008 by Josip Dzolonga, Georg Brandl. + :license: BSD. +""" + +import os +import re +import glob +import inspect +import cPickle as pickle +from os import path + +from sphinx.builder import Builder + + +# utility +def write_header(f, text, char='-'): + f.write(text + '\n') + f.write(char * len(text) + '\n') + +def compile_regex_list(name, exps, warnfunc): + lst = [] + for exp in exps: + try: + lst.append(re.compile(exp)) + except Exception: + warnfunc('invalid regex %r in %s' % (exp, name)) + return lst + + +class CoverageBuilder(Builder): + """ + Checks the completeness of Python's C-API documentation. + """ + + name = 'coverage' + + def init(self): + self.c_sourcefiles = [] + for pattern in self.config.coverage_c_path: + pattern = path.join(self.srcdir, pattern) + self.c_sourcefiles.extend(glob.glob(pattern)) + + self.c_regexes = [] + for (name, exp) in self.config.coverage_c_regexes.items(): + try: + self.c_regexes.append((name, re.compile(exp))) + except Exception: + warnfunc('invalid regex %r in coverage_c_regexes' % exp) + + self.c_ignorexps = {} + for (name, exps) in self.config.coverage_ignore_c_items.iteritems(): + self.c_ignorexps[name] = compile_regex_list('coverage_ignore_c_items', + exps, self.warn) + self.mod_ignorexps = compile_regex_list('coverage_ignore_modules', + self.config.coverage_ignore_modules, + self.warn) + self.cls_ignorexps = compile_regex_list('coverage_ignore_classes', + self.config.coverage_ignore_classes, + self.warn) + self.fun_ignorexps = compile_regex_list('coverage_ignore_functions', + self.config.coverage_ignore_functions, + self.warn) + + def get_outdated_docs(self): + return 'coverage overview' + + def write(self, *ignored): + self.py_undoc = {} + self.build_py_coverage() + self.write_py_coverage() + + if self.c_sourcefiles: + self.c_undoc = {} + self.build_c_coverage() + self.write_c_coverage() + + def build_c_coverage(self): + # Fetch all the info from the header files + for filename in self.c_sourcefiles: + undoc = [] + f = open(filename, 'r') + try: + for line in f: + for key, regex in self.c_regexes: + match = regex.match(line) + if match: + name = match.groups()[0] + if name not in self.env.descrefs: + for exp in self.c_ignorexps.get(key, ()): + if exp.match(name): + break + else: + undoc.append((key, name)) + continue + finally: + f.close() + if undoc: + self.c_undoc[filename] = undoc + + def write_c_coverage(self): + output_file = path.join(self.outdir, 'c.txt') + op = open(output_file, 'w') + try: + write_header(op, 'Undocumented C API elements', '=') + op.write('\n') + + for filename, undoc in self.c_undoc.iteritems(): + write_header(op, filename) + for typ, name in undoc: + op.write(' * %-50s [%9s]\n' % (name, typ)) + op.write('\n') + finally: + op.close() + + def build_py_coverage(self): + for mod_name in self.env.modules: + ignore = False + for exp in self.mod_ignorexps: + if exp.match(mod_name): + ignore = True + break + if ignore: + continue + + try: + mod = __import__(mod_name, fromlist=['foo']) + except ImportError, err: + self.warn('module %s could not be imported: %s' % (mod_name, err)) + self.py_undoc[mod_name] = {'error': err} + continue + + funcs = [] + classes = {} + + for name, obj in inspect.getmembers(mod): + # diverse module attributes are ignored: + if name[0] == '_': + # begins in an underscore + continue + if not hasattr(obj, '__module__'): + # cannot be attributed to a module + continue + if obj.__module__ != mod_name: + # is not defined in this module + continue + + full_name = '%s.%s' % (mod_name, name) + + if inspect.isfunction(obj): + if full_name not in self.env.descrefs: + for exp in self.fun_ignorexps: + if exp.match(name): + break + else: + funcs.append(name) + elif inspect.isclass(obj): + for exp in self.cls_ignorexps: + if exp.match(name): + break + else: + if full_name not in self.env.descrefs: + # not documented at all + classes[name] = [] + continue + + attrs = [] + + for attr_name, attr in inspect.getmembers(obj, inspect.ismethod): + if attr_name[0] == '_': + # starts with an underscore, ignore it + continue + + full_attr_name = '%s.%s' % (full_name, attr_name) + if full_attr_name not in self.env.descrefs: + attrs.append(attr_name) + + if attrs: + # some attributes are undocumented + classes[name] = attrs + + self.py_undoc[mod_name] = {'funcs': funcs, 'classes': classes} + + def write_py_coverage(self): + output_file = path.join(self.outdir, 'python.txt') + op = open(output_file, 'w') + failed = [] + try: + write_header(op, 'Undocumented Python objects', '=') + + keys = self.py_undoc.keys() + keys.sort() + for name in keys: + undoc = self.py_undoc[name] + if 'error' in undoc: + failed.append((name, undoc['error'])) + else: + if not undoc['classes'] and not undoc['funcs']: + continue + + write_header(op, name) + if undoc['funcs']: + op.write('Functions:\n') + op.writelines(' * %s\n' % x for x in undoc['funcs']) + op.write('\n') + if undoc['classes']: + op.write('Classes:\n') + for name, methods in undoc['classes'].iteritems(): + if not methods: + op.write(' * %s\n' % name) + else: + op.write(' * %s -- missing methods:\n' % name) + op.writelines(' - %s\n' % x for x in methods) + op.write('\n') + + write_header(op, 'Modules that failed to import') + op.writelines(' * %s -- %s\n' % x for x in failed) + finally: + op.close() + + def finish(self): + # dump the coverage data to a pickle file too + picklepath = path.join(self.outdir, 'undoc.pickle') + dumpfile = open(picklepath, 'wb') + try: + pickle.dump((self.py_undoc, self.c_undoc), dumpfile) + finally: + dumpfile.close() + + +def setup(app): + app.add_builder(CoverageBuilder) + app.add_config_value('coverage_c_path', [], False) + app.add_config_value('coverage_c_regexes', [], False) + app.add_config_value('coverage_ignore_modules', [], False) + app.add_config_value('coverage_ignore_functions', [], False) + app.add_config_value('coverage_ignore_classes', [], False) + app.add_config_value('coverage_ignore_c_items', [], False) + Modified: doctools/trunk/sphinx/config.py ============================================================================== --- doctools/trunk/sphinx/config.py (original) +++ doctools/trunk/sphinx/config.py Sat Feb 23 19:47:35 2008 @@ -87,3 +87,6 @@ def __getitem__(self, name): return getattr(self, name) + + def __contains__(self, name): + return hasattr(self, name) Modified: doctools/trunk/sphinx/util/__init__.py ============================================================================== --- doctools/trunk/sphinx/util/__init__.py (original) +++ doctools/trunk/sphinx/util/__init__.py Sat Feb 23 19:47:35 2008 @@ -12,6 +12,7 @@ import os import sys import fnmatch +import traceback from os import path @@ -106,3 +107,8 @@ self[key] = val def __delattr__(self, key): del self[key] + + +def fmt_ex(ex): + """Format a single line with an exception description.""" + return traceback.format_exception_only(ex.__class__, ex)[-1].strip() From buildbot at python.org Sat Feb 23 19:56:09 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 18:56:09 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080223185609.C9E341E4016@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/105 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,christian.heimes,eric.smith,facundo.batista,georg.brandl BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_compiler test_curses ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_compiler.py", line 55, in testCompileLibrary args[0] += "[in file %s]" % basename TypeError: unsupported operand type(s) for +=: 'int' and 'str' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 20:02:33 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 20:02:33 +0100 (CET) Subject: [Python-checkins] r61006 - python/trunk/Lib/imaplib.py Message-ID: <20080223190233.805ED1E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 20:02:33 2008 New Revision: 61006 Modified: python/trunk/Lib/imaplib.py Log: #1389051: IMAP module tries to read entire message in one chunk. Patch by Fredrik Lundh. Modified: python/trunk/Lib/imaplib.py ============================================================================== --- python/trunk/Lib/imaplib.py (original) +++ python/trunk/Lib/imaplib.py Sat Feb 23 20:02:33 2008 @@ -1156,7 +1156,7 @@ chunks = [] read = 0 while read < size: - data = self.sslobj.read(size-read) + data = self.sslobj.read(min(size-read, 16384)) read += len(data) chunks.append(data) From python-checkins at python.org Sat Feb 23 20:06:55 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 20:06:55 +0100 (CET) Subject: [Python-checkins] r61007 - in python/branches/release25-maint: Lib/imaplib.py Misc/NEWS Message-ID: <20080223190655.62A731E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 20:06:54 2008 New Revision: 61007 Modified: python/branches/release25-maint/Lib/imaplib.py python/branches/release25-maint/Misc/NEWS Log: #1389051: IMAP module tries to read entire message in one chunk. Patch by Fredrik Lundh. Modified: python/branches/release25-maint/Lib/imaplib.py ============================================================================== --- python/branches/release25-maint/Lib/imaplib.py (original) +++ python/branches/release25-maint/Lib/imaplib.py Sat Feb 23 20:06:54 2008 @@ -1147,7 +1147,7 @@ chunks = [] read = 0 while read < size: - data = self.sslobj.read(size-read) + data = self.sslobj.read(min(size-read, 16384)) read += len(data) chunks.append(data) Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Feb 23 20:06:54 2008 @@ -15,6 +15,9 @@ Library ------- +- Bug #1389051: imaplib causes excessive memory fragmentation when reading + large messages. + - Bug #1433694: minidom's .normalize() failed to set .nextSibling for last child element. From python-checkins at python.org Sat Feb 23 20:28:58 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 20:28:58 +0100 (CET) Subject: [Python-checkins] r61008 - python/trunk/Lib/socket.py Message-ID: <20080223192858.67BDA1E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 20:28:58 2008 New Revision: 61008 Modified: python/trunk/Lib/socket.py Log: #1389051, #1092502: fix excessively large allocations when using read() on a socket Modified: python/trunk/Lib/socket.py ============================================================================== --- python/trunk/Lib/socket.py (original) +++ python/trunk/Lib/socket.py Sat Feb 23 20:28:58 2008 @@ -328,7 +328,7 @@ self._rbuf = "" while True: left = size - buf_len - recv_size = max(self._rbufsize, left) + recv_size = min(self._rbufsize, left) data = self._sock.recv(recv_size) if not data: break From python-checkins at python.org Sat Feb 23 20:30:59 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 20:30:59 +0100 (CET) Subject: [Python-checkins] r61009 - in python/branches/release25-maint: Lib/socket.py Misc/NEWS Message-ID: <20080223193059.883081E4016@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 20:30:59 2008 New Revision: 61009 Modified: python/branches/release25-maint/Lib/socket.py python/branches/release25-maint/Misc/NEWS Log: #1389051, #1092502: fix excessively large allocations when using read() on a socket Modified: python/branches/release25-maint/Lib/socket.py ============================================================================== --- python/branches/release25-maint/Lib/socket.py (original) +++ python/branches/release25-maint/Lib/socket.py Sat Feb 23 20:30:59 2008 @@ -305,7 +305,7 @@ self._rbuf = "" while True: left = size - buf_len - recv_size = max(self._rbufsize, left) + recv_size = min(self._rbufsize, left) data = self._sock.recv(recv_size) if not data: break Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sat Feb 23 20:30:59 2008 @@ -18,6 +18,9 @@ - Bug #1389051: imaplib causes excessive memory fragmentation when reading large messages. +- Bug #1389051, 1092502: fix excessively large memory allocations when + calling .read() on a socket object wrapped with makefile(). + - Bug #1433694: minidom's .normalize() failed to set .nextSibling for last child element. From python-checkins at python.org Sat Feb 23 20:39:02 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 23 Feb 2008 20:39:02 +0100 (CET) Subject: [Python-checkins] r61010 - tracker/instances/python-dev/html/issue.item.html Message-ID: <20080223193902.D5E4A1E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 23 20:39:02 2008 New Revision: 61010 Modified: tracker/instances/python-dev/html/issue.item.html Log: Format date and time prettier. Fixes #182. Modified: tracker/instances/python-dev/html/issue.item.html ============================================================================== --- tracker/instances/python-dev/html/issue.item.html (original) +++ tracker/instances/python-dev/html/issue.item.html Sat Feb 23 20:39:02 2008 @@ -193,7 +193,7 @@

    - Created on + Created on by , last changed by . @@ -215,7 +215,7 @@

    creator's name, - creation date + creation date msg (view) Author: ()Date: Date:
    Author: jeffrey.yasskin Date: Sat Feb 23 20:40:54 2008 New Revision: 61011 Modified: python/trunk/Lib/test/test_threading.py python/trunk/Lib/threading.py Log: Prevent classes like: class RunSelfFunction(object): def __init__(self): self.thread = threading.Thread(target=self._run) self.thread.start() def _run(self): pass from creating a permanent cycle between the object and the thread by having the Thread delete its references to the object when it completes. As an example of the effect of this bug, paramiko.Transport inherits from Thread to avoid it. Modified: python/trunk/Lib/test/test_threading.py ============================================================================== --- python/trunk/Lib/test/test_threading.py (original) +++ python/trunk/Lib/test/test_threading.py Sat Feb 23 20:40:54 2008 @@ -8,6 +8,7 @@ import thread import time import unittest +import weakref # A trivial mutable counter. class Counter(object): @@ -253,6 +254,25 @@ finally: sys.setcheckinterval(old_interval) + def test_no_refcycle_through_target(self): + class RunSelfFunction(object): + def __init__(self): + # The links in this refcycle from Thread back to self + # should be cleaned up when the thread completes. + self.thread = threading.Thread(target=self._run, + args=(self,), + kwargs={'yet_another':self}) + self.thread.start() + + def _run(self, other_ref, yet_another): + pass + + cyclic_object = RunSelfFunction() + weak_cyclic_object = weakref.ref(cyclic_object) + cyclic_object.thread.join() + del cyclic_object + self.assertEquals(None, weak_cyclic_object()) + class ThreadingExceptionTests(unittest.TestCase): # A RuntimeError should be raised if Thread.start() is called Modified: python/trunk/Lib/threading.py ============================================================================== --- python/trunk/Lib/threading.py (original) +++ python/trunk/Lib/threading.py Sat Feb 23 20:40:54 2008 @@ -444,6 +444,9 @@ def run(self): if self.__target: self.__target(*self.__args, **self.__kwargs) + # Avoid a refcycle if the thread is running a function with an + # argument that has a member that points to the thread. + del self.__target, self.__args, self.__kwargs def __bootstrap(self): # Wrapper around the real bootstrap code that ignores From python-checkins at python.org Sat Feb 23 20:57:10 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 23 Feb 2008 20:57:10 +0100 (CET) Subject: [Python-checkins] r61012 - tracker/roundup-src/roundup/backends/rdbms_common.py Message-ID: <20080223195710.76C331E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 23 20:57:10 2008 New Revision: 61012 Modified: tracker/roundup-src/roundup/backends/rdbms_common.py Log: Merge CVS version 1.183. Fixes #179. Modified: tracker/roundup-src/roundup/backends/rdbms_common.py ============================================================================== --- tracker/roundup-src/roundup/backends/rdbms_common.py (original) +++ tracker/roundup-src/roundup/backends/rdbms_common.py Sat Feb 23 20:57:10 2008 @@ -2175,7 +2175,7 @@ d[entry] = entry l = [] if d.has_key(None) or not d: - del d[None] + if d.has_key(None):del d[None] l.append('_%s._%s is NULL'%(pln, k)) if d: v = d.keys() From amk at amk.ca Sat Feb 23 21:03:10 2008 From: amk at amk.ca (A.M. Kuchling) Date: Sat, 23 Feb 2008 15:03:10 -0500 Subject: [Python-checkins] r61011 - in python/trunk/Lib: test/test_threading.py threading.py In-Reply-To: <20080223194054.E994A1E4016@bag.python.org> References: <20080223194054.E994A1E4016@bag.python.org> Message-ID: <20080223200310.GA26523@amk.local> On Sat, Feb 23, 2008 at 08:40:54PM +0100, jeffrey.yasskin wrote: > if self.__target: > self.__target(*self.__args, **self.__kwargs) > + # Avoid a refcycle if the thread is running a function with an > + # argument that has a member that points to the thread. > + del self.__target, self.__args, self.__kwargs Should the 'del' statement be in a 'finally:' block so that the attributes are deleted even if __target raises an exception? --amk From jyasskin at gmail.com Sat Feb 23 21:26:59 2008 From: jyasskin at gmail.com (Jeffrey Yasskin) Date: Sat, 23 Feb 2008 12:26:59 -0800 Subject: [Python-checkins] r61011 - in python/trunk/Lib: test/test_threading.py threading.py In-Reply-To: <20080223200310.GA26523@amk.local> References: <20080223194054.E994A1E4016@bag.python.org> <20080223200310.GA26523@amk.local> Message-ID: <5d44f72f0802231226y245c7111hb8e4531d541bddd0@mail.gmail.com> On Sat, Feb 23, 2008 at 12:03 PM, A.M. Kuchling wrote: > On Sat, Feb 23, 2008 at 08:40:54PM +0100, jeffrey.yasskin wrote: > > if self.__target: > > self.__target(*self.__args, **self.__kwargs) > > + # Avoid a refcycle if the thread is running a function with an > > + # argument that has a member that points to the thread. > > + del self.__target, self.__args, self.__kwargs > > Should the 'del' statement be in a 'finally:' block so that the > attributes are deleted even if __target raises an exception? Yes, thanks. Another patch coming up. From python-checkins at python.org Sat Feb 23 21:40:36 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Sat, 23 Feb 2008 21:40:36 +0100 (CET) Subject: [Python-checkins] r61013 - in python/trunk/Lib: test/test_threading.py threading.py Message-ID: <20080223204036.2DDE91E4016@bag.python.org> Author: jeffrey.yasskin Date: Sat Feb 23 21:40:35 2008 New Revision: 61013 Modified: python/trunk/Lib/test/test_threading.py python/trunk/Lib/threading.py Log: Followup to r61011: Also avoid the reference cycle when the Thread's target raises an exception. Modified: python/trunk/Lib/test/test_threading.py ============================================================================== --- python/trunk/Lib/test/test_threading.py (original) +++ python/trunk/Lib/test/test_threading.py Sat Feb 23 21:40:35 2008 @@ -256,23 +256,31 @@ def test_no_refcycle_through_target(self): class RunSelfFunction(object): - def __init__(self): + def __init__(self, should_raise): # The links in this refcycle from Thread back to self # should be cleaned up when the thread completes. + self.should_raise = should_raise self.thread = threading.Thread(target=self._run, args=(self,), kwargs={'yet_another':self}) self.thread.start() def _run(self, other_ref, yet_another): - pass + if self.should_raise: + raise SystemExit - cyclic_object = RunSelfFunction() + cyclic_object = RunSelfFunction(should_raise=False) weak_cyclic_object = weakref.ref(cyclic_object) cyclic_object.thread.join() del cyclic_object self.assertEquals(None, weak_cyclic_object()) + raising_cyclic_object = RunSelfFunction(should_raise=True) + weak_raising_cyclic_object = weakref.ref(raising_cyclic_object) + raising_cyclic_object.thread.join() + del raising_cyclic_object + self.assertEquals(None, weak_raising_cyclic_object()) + class ThreadingExceptionTests(unittest.TestCase): # A RuntimeError should be raised if Thread.start() is called Modified: python/trunk/Lib/threading.py ============================================================================== --- python/trunk/Lib/threading.py (original) +++ python/trunk/Lib/threading.py Sat Feb 23 21:40:35 2008 @@ -442,11 +442,13 @@ _sleep(0.000001) # 1 usec, to let the thread run (Solaris hack) def run(self): - if self.__target: - self.__target(*self.__args, **self.__kwargs) - # Avoid a refcycle if the thread is running a function with an - # argument that has a member that points to the thread. - del self.__target, self.__args, self.__kwargs + try: + if self.__target: + self.__target(*self.__args, **self.__kwargs) + finally: + # Avoid a refcycle if the thread is running a function with + # an argument that has a member that points to the thread. + del self.__target, self.__args, self.__kwargs def __bootstrap(self): # Wrapper around the real bootstrap code that ignores From python-checkins at python.org Sat Feb 23 21:47:23 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 23 Feb 2008 21:47:23 +0100 (CET) Subject: [Python-checkins] r61014 - tracker/instances/python-dev/detectors/patches.py Message-ID: <20080223204723.23EEC1E4016@bag.python.org> Author: martin.v.loewis Date: Sat Feb 23 21:47:22 2008 New Revision: 61014 Added: tracker/instances/python-dev/detectors/patches.py (contents, props changed) Log: Set content type of .diff, .patch and .py to text/plain. Fixes #177. Also add patch keyword for patches. Added: tracker/instances/python-dev/detectors/patches.py ============================================================================== --- (empty file) +++ tracker/instances/python-dev/detectors/patches.py Sat Feb 23 21:47:22 2008 @@ -0,0 +1,45 @@ +# Auditor for patch files +# Patches should be declared as text/plain (also .py files), +# independent of what the browser says, and +# the "patch" keyword should get set automatically. + +import posixpath + +patchtypes = ('.diff', '.patch') +sourcetypes = ('.diff', '.patch', '.py') + +def ispatch(file, types): + return posixpath.splitext(file)[1] in types + +def patches_text_plain(db, cl, nodeid, newvalues): + if ispatch(newvalues['name'], sourcetypes): + newvalues['type'] = 'text/plain' + +def patches_keyword(db, cl, nodeid, newvalues): + # Check whether there are any new files + newfiles = set(newvalues.get('files',())) + if nodeid: + newfiles -= set(db.issue.get(nodeid, 'files')) + # Check whether any of these is a patch + newpatch = False + for fileid in newfiles: + if ispatch(db.file.get(fileid, 'name'), patchtypes): + newpatch = True + break + if newpatch: + # Add the patch keyword if its not already there + patchid = db.keyword.lookup("patch") + oldkeywords = [] + if nodeid: + oldkeywords = db.issue.get(nodeid, 'keywords') + if patchid in oldkeywords: + # This is already marked as a patch + return + if not newvalues.has_key('keywords'): + newvalues['keywords'] = oldkeywords + newvalues['keywords'].append(patchid) + +def init(db): + db.file.audit('create', patches_text_plain) + db.issue.audit('create', patches_keyword) + db.issue.audit('set', patches_keyword) From buildbot at python.org Sat Feb 23 22:07:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 21:07:37 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080223210737.9AC751E4016@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2900 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: jeffrey.yasskin BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From nnorwitz at gmail.com Sat Feb 23 22:19:49 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 13:19:49 -0800 Subject: [Python-checkins] r61000 - in python/trunk: Lib/SimpleHTTPServer.py Lib/bsddb/test/test_basics.py Lib/bsddb/test/test_compat.py Lib/bsddb/test/test_cursor_pget_bug.py Lib/bsddb/test/test_dbobj.py Lib/bsddb/test/test_dbshelve.py Lib/bsddb/test/tes Message-ID: It looks like there were a coulpe of unintended changes in here. I think the test_compiler one caused a bunch of buildbots to fail. n On Sat, Feb 23, 2008 at 9:40 AM, christian.heimes wrote: > Author: christian.heimes > Date: Sat Feb 23 18:40:11 2008 > New Revision: 61000 > ... > > Modified: python/trunk/Lib/test/test_compiler.py > ============================================================================== > --- python/trunk/Lib/test/test_compiler.py (original) > +++ python/trunk/Lib/test/test_compiler.py Sat Feb 23 18:40:11 2008 > @@ -52,7 +52,8 @@ > compiler.compile(buf, basename, "exec") > except Exception, e: > args = list(e.args) > - args[0] += "[in file %s]" % basename > + args.append("in file %s]" % basename) > + #args[0] += "[in file %s]" % basename > e.args = tuple(args) > raise ... > Modified: python/trunk/Lib/test/test_sgmllib.py > ============================================================================== > --- python/trunk/Lib/test/test_sgmllib.py (original) > +++ python/trunk/Lib/test/test_sgmllib.py Sat Feb 23 18:40:11 2008 > @@ -1,4 +1,3 @@ > -import htmlentitydefs > import pprint > import re > import sgmllib > @@ -116,7 +115,7 @@ > try: > events = self.get_events(source) > except: > - import sys > + #import sys > #print >>sys.stderr, pprint.pformat(self.events) > raise > if events != expected_events: From python-checkins at python.org Sat Feb 23 22:26:50 2008 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 23 Feb 2008 22:26:50 +0100 (CET) Subject: [Python-checkins] r61015 - tracker/instances/python-dev/html/issue.item.html Message-ID: <20080223212650.7C9AA1E4024@bag.python.org> Author: martin.v.loewis Date: Sat Feb 23 22:26:50 2008 New Revision: 61015 Modified: tracker/instances/python-dev/html/issue.item.html Log: Format context/activity pretty. Modified: tracker/instances/python-dev/html/issue.item.html ============================================================================== --- tracker/instances/python-dev/html/issue.item.html (original) +++ tracker/instances/python-dev/html/issue.item.html Sat Feb 23 22:26:50 2008 @@ -195,7 +195,7 @@

    Created on by , - last changed + last changed by .

    From buildbot at python.org Sat Feb 23 22:27:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 21:27:36 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu 2.5 Message-ID: <20080223212737.0A2D41E4016@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%202.5/builds/164 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling,martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_urllib2 test_urllib2net ====================================================================== ERROR: test_trivial (test.test_urllib2.TrivialTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2.py", line 19, in test_trivial self.assertRaises(ValueError, urllib2.urlopen, 'bogus url') File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/unittest.py", line 320, in failUnlessRaises callableObj(*args, **kwargs) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2.py", line 617, in test_file r = h.file_open(Request(url)) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 1203, in file_open return self.open_local_file(req) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 1222, in open_local_file localfile = url2pathname(file) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 55, in url2pathname return unquote(pathname) TypeError: 'NoneType' object is not callable ====================================================================== ERROR: test_http (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2.py", line 721, in test_http r.read; r.readline # wrapped MockFile methods AttributeError: addinfourl instance has no attribute 'read' ====================================================================== ERROR: test_build_opener (test.test_urllib2.MiscTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2.py", line 1019, in test_build_opener o = build_opener(FooHandler, BarHandler) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: testURLread (test.test_urllib2net.URLTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 24, in testURLread f = urllib2.urlopen("http://www.python.org/") File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_bad_address (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 147, in test_bad_address urllib2.urlopen, "http://www.python.invalid./") File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/unittest.py", line 320, in failUnlessRaises callableObj(*args, **kwargs) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_basic (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 105, in test_basic open_url = urllib2.urlopen("http://www.python.org/") File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_geturl (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 129, in test_geturl open_url = urllib2.urlopen(URL) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_info (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 116, in test_info open_url = urllib2.urlopen("http://www.python.org/") File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 202, in test_file self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 250, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 174, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 250, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_gopher (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 187, in test_gopher self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 250, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 214, in test_http self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 250, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_range (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 160, in test_range result = urllib2.urlopen(req) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_close (test.test_urllib2net.CloseSocketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/test/test_urllib2net.py", line 76, in test_close response = urllib2.urlopen("http://www.python.org/") File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 462, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib2.py", line 669, in __init__ proxies = getproxies() File "/home/pybot/buildarea/2.5.klose-ubuntu-hppa/build/Lib/urllib.py", line 1289, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 22:32:06 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sat, 23 Feb 2008 22:32:06 +0100 (CET) Subject: [Python-checkins] r61016 - python/branches/release25-maint/Lib/test/test_resource.py Message-ID: <20080223213206.965411E401C@bag.python.org> Author: andrew.kuchling Date: Sat Feb 23 22:32:06 2008 New Revision: 61016 Modified: python/branches/release25-maint/Lib/test/test_resource.py Log: #1291: copy test_resource.py from the 2.6 trunk, to fix a test failure. The 2.6 version also converts to unittest, but it seems to work fine under 2.5. Modified: python/branches/release25-maint/Lib/test/test_resource.py ============================================================================== --- python/branches/release25-maint/Lib/test/test_resource.py (original) +++ python/branches/release25-maint/Lib/test/test_resource.py Sat Feb 23 22:32:06 2008 @@ -1,71 +1,110 @@ -import os +import unittest +from test import test_support + import resource +import time + +# This test is checking a few specific problem spots with the resource module. + +class ResourceTest(unittest.TestCase): -from test.test_support import TESTFN, unlink + def test_args(self): + self.assertRaises(TypeError, resource.getrlimit) + self.assertRaises(TypeError, resource.getrlimit, 42, 42) + self.assertRaises(TypeError, resource.setrlimit) + self.assertRaises(TypeError, resource.setrlimit, 42, 42, 42) -# This test is checking a few specific problem spots. RLIMIT_FSIZE -# should be RLIM_INFINITY, which will be a really big number on a -# platform with large file support. On these platforms, we need to -# test that the get/setrlimit functions properly convert the number to -# a C long long and that the conversion doesn't raise an error. - -try: - cur, max = resource.getrlimit(resource.RLIMIT_FSIZE) -except AttributeError: - pass -else: - print resource.RLIM_INFINITY == max - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - -# Now check to see what happens when the RLIMIT_FSIZE is small. Some -# versions of Python were terminated by an uncaught SIGXFSZ, but -# pythonrun.c has been fixed to ignore that exception. If so, the -# write() should return EFBIG when the limit is exceeded. - -# At least one platform has an unlimited RLIMIT_FSIZE and attempts to -# change it raise ValueError instead. - -try: - try: - resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) - limit_set = 1 - except ValueError: - limit_set = 0 - f = open(TESTFN, "wb") - try: - f.write("X" * 1024) + def test_fsize_ismax(self): try: - f.write("Y") - f.flush() - # On some systems (e.g., Ubuntu on hppa) the flush() - # doesn't always cause the exception, but the close() - # does eventually. Try flushing several times in - # an attempt to ensure the file is really synced and - # the exception raised. - for i in range(5): - time.sleep(.1) - f.flush() - except IOError: - if not limit_set: - raise - if limit_set: - # Close will attempt to flush the byte we wrote - # Restore limit first to avoid getting a spurious error + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + # RLIMIT_FSIZE should be RLIM_INFINITY, which will be a really big + # number on a platform with large file support. On these platforms, + # we need to test that the get/setrlimit functions properly convert + # the number to a C long long and that the conversion doesn't raise + # an error. + self.assertEqual(resource.RLIM_INFINITY, max) resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - finally: - f.close() -finally: - if limit_set: - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - unlink(TESTFN) - -# And be sure that setrlimit is checking for really large values -too_big = 10L**50 -try: - resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max)) -except (OverflowError, ValueError): - pass -try: - resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) -except (OverflowError, ValueError): - pass + + def test_fsize_enforced(self): + try: + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + # Check to see what happens when the RLIMIT_FSIZE is small. Some + # versions of Python were terminated by an uncaught SIGXFSZ, but + # pythonrun.c has been fixed to ignore that exception. If so, the + # write() should return EFBIG when the limit is exceeded. + + # At least one platform has an unlimited RLIMIT_FSIZE and attempts + # to change it raise ValueError instead. + try: + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) + limit_set = True + except ValueError: + limit_set = False + f = open(test_support.TESTFN, "wb") + try: + f.write("X" * 1024) + try: + f.write("Y") + f.flush() + # On some systems (e.g., Ubuntu on hppa) the flush() + # doesn't always cause the exception, but the close() + # does eventually. Try flushing several times in + # an attempt to ensure the file is really synced and + # the exception raised. + for i in range(5): + time.sleep(.1) + f.flush() + except IOError: + if not limit_set: + raise + if limit_set: + # Close will attempt to flush the byte we wrote + # Restore limit first to avoid getting a spurious error + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + finally: + f.close() + finally: + if limit_set: + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + test_support.unlink(test_support.TESTFN) + + def test_fsize_toobig(self): + # Be sure that setrlimit is checking for really large values + too_big = 10L**50 + try: + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max)) + except (OverflowError, ValueError): + pass + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) + except (OverflowError, ValueError): + pass + + def test_getrusage(self): + self.assertRaises(TypeError, resource.getrusage) + self.assertRaises(TypeError, resource.getrusage, 42, 42) + usageself = resource.getrusage(resource.RUSAGE_SELF) + usagechildren = resource.getrusage(resource.RUSAGE_CHILDREN) + # May not be available on all systems. + try: + usageboth = resource.getrusage(resource.RUSAGE_BOTH) + except (ValueError, AttributeError): + pass + +def test_main(verbose=None): + test_support.run_unittest(ResourceTest) + +if __name__ == "__main__": + test_main() From buildbot at python.org Sat Feb 23 22:58:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 21:58:35 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo 2.5 Message-ID: <20080223215835.32C591E4016@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%202.5/builds/56 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 486, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "/home/buildbot/slave/py-build/2.5.norwitz-amd64/build/Lib/bsddb/dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 22:58:47 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 21:58:47 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo 2.5 Message-ID: <20080223215847.8FBE81E401A@bag.python.org> The Buildbot has detected a new failure of x86 gentoo 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%202.5/builds/576 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 22:59:12 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 22:59:12 +0100 (CET) Subject: [Python-checkins] r61017 - python/trunk/Doc/library/xml.dom.rst Message-ID: <20080223215912.42FD61E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 22:59:11 2008 New Revision: 61017 Modified: python/trunk/Doc/library/xml.dom.rst Log: #2101: fix removeAttribute docs. Modified: python/trunk/Doc/library/xml.dom.rst ============================================================================== --- python/trunk/Doc/library/xml.dom.rst (original) +++ python/trunk/Doc/library/xml.dom.rst Sat Feb 23 22:59:11 2008 @@ -652,8 +652,8 @@ .. method:: Element.removeAttribute(name) - Remove an attribute by name. No exception is raised if there is no matching - attribute. + Remove an attribute by name. If there is no matching attribute, a + :exc:`NotFoundErr` is raised. .. method:: Element.removeAttributeNode(oldAttr) From python-checkins at python.org Sat Feb 23 23:05:38 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:05:38 +0100 (CET) Subject: [Python-checkins] r61018 - python/trunk/Doc/library/modulefinder.rst Message-ID: <20080223220538.F03BA1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:05:38 2008 New Revision: 61018 Modified: python/trunk/Doc/library/modulefinder.rst Log: Add examples to modulefinder docs. Written for GHOP by Josip Dzolonga. Modified: python/trunk/Doc/library/modulefinder.rst ============================================================================== --- python/trunk/Doc/library/modulefinder.rst (original) +++ python/trunk/Doc/library/modulefinder.rst Sat Feb 23 23:05:38 2008 @@ -50,3 +50,65 @@ Analyze the contents of the *pathname* file, which must contain Python code. +.. attribute:: ModuleFinder.modules + + A dictionary mapping module names to modules. See :ref:`modulefinder-example` + + +.. _modulefinder-example: + +Example usage of :class:`ModuleFinder` +-------------------------------------- + +The script that is going to get analyzed later on (bacon.py):: + + import re, itertools + + try: + import baconhameggs + except ImportError: + pass + + try: + import guido.python.ham + except ImportError: + pass + + +The script that will output the report of bacon.py:: + + from modulefinder import ModuleFinder + + finder = ModuleFinder() + finder.run_script('bacon.py') + + print 'Loaded modules:' + for name, mod in finder.modules.iteritems(): + print '%s: ' % name, + print ','.join(mod.globalnames.keys()[:3]) + + print '-'*50 + print 'Modules not imported:' + print '\n'.join(finder.badmodules.iterkeys()) + +Sample output (may vary depending on the architecture):: + + Loaded modules: + _types: + copy_reg: _inverted_registry,_slotnames,__all__ + sre_compile: isstring,_sre,_optimize_unicode + _sre: + sre_constants: REPEAT_ONE,makedict,AT_END_LINE + sys: + re: __module__,finditer,_expand + itertools: + __main__: re,itertools,baconhameggs + sre_parse: __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE + array: + types: __module__,IntType,TypeType + --------------------------------------------------- + Modules not imported: + guido.python.ham + baconhameggs + + From python-checkins at python.org Sat Feb 23 23:09:24 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:09:24 +0100 (CET) Subject: [Python-checkins] r61019 - python/trunk/Lib/popen2.py Message-ID: <20080223220924.559BB1E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:09:24 2008 New Revision: 61019 Modified: python/trunk/Lib/popen2.py Log: Use os.closerange() in popen2. Modified: python/trunk/Lib/popen2.py ============================================================================== --- python/trunk/Lib/popen2.py (original) +++ python/trunk/Lib/popen2.py Sat Feb 23 23:09:24 2008 @@ -82,11 +82,7 @@ def _run_child(self, cmd): if isinstance(cmd, basestring): cmd = ['/bin/sh', '-c', cmd] - for i in xrange(3, MAXFD): - try: - os.close(i) - except OSError: - pass + os.closerange(3, MAXFD) try: os.execvp(cmd[0], cmd) finally: From buildbot at python.org Sat Feb 23 23:11:56 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:11:56 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080223221156.D22031E4019@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/98 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,christian.heimes,eric.smith,facundo.batista,georg.brandl,nick.coghlan,raymond.hettinger BUILD FAILED: failed svn sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 23:11:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:11:57 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable 2.5 Message-ID: <20080223221157.3D5A51E4016@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%202.5/builds/199 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Sat Feb 23 23:39:54 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 17:39:54 -0500 Subject: [Python-checkins] Python Regression Test Failures all (2) Message-ID: <20080223223954.GA8893@python.psfb.org> 316 tests OK. 2 tests failed: test_bsddb3 test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file UserDict.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 316 tests OK. 2 tests failed: test_bsddb3 test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [570568 refs] From python-checkins at python.org Sat Feb 23 23:14:02 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:14:02 +0100 (CET) Subject: [Python-checkins] r61020 - python/trunk/Demo/tkinter/guido/ShellWindow.py Message-ID: <20080223221402.AC8741E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:14:02 2008 New Revision: 61020 Modified: python/trunk/Demo/tkinter/guido/ShellWindow.py Log: Use os.closerange(). Modified: python/trunk/Demo/tkinter/guido/ShellWindow.py ============================================================================== --- python/trunk/Demo/tkinter/guido/ShellWindow.py (original) +++ python/trunk/Demo/tkinter/guido/ShellWindow.py Sat Feb 23 23:14:02 2008 @@ -121,11 +121,7 @@ sys.stderr.write('popen2: bad write dup\n') if os.dup(c2pwrite) <> 2: sys.stderr.write('popen2: bad write dup\n') - for i in range(3, MAXFD): - try: - os.close(i) - except: - pass + os.closerange(3, MAXFD) try: os.execvp(prog, args) finally: From buildbot at python.org Sat Feb 23 23:16:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:16:57 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian 2.5 Message-ID: <20080223221658.00BBB1E4016@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%202.5/builds/195 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From nnorwitz at gmail.com Sat Feb 23 23:46:08 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 17:46:08 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20080223224608.GA8936@python.psfb.org> svn update tools/sphinx D tools/sphinx/style U tools/sphinx/quickstart.py U tools/sphinx/__init__.py A tools/sphinx/static A tools/sphinx/static/admin.css A tools/sphinx/static/nocomment.png A tools/sphinx/static/top.png A tools/sphinx/static/comment.png A tools/sphinx/static/stickysidebar.css A tools/sphinx/static/hovercomment.png A tools/sphinx/static/jquery.js A tools/sphinx/static/rightsidebar.css A tools/sphinx/static/searchtools.js A tools/sphinx/static/doctools.js A tools/sphinx/static/traditional.css A tools/sphinx/static/file.png A tools/sphinx/static/preview.png A tools/sphinx/static/plus.png A tools/sphinx/static/interface.js A tools/sphinx/static/default.css A tools/sphinx/static/minus.png U tools/sphinx/htmlwriter.py U tools/sphinx/application.py U tools/sphinx/highlighting.py U tools/sphinx/config.py U tools/sphinx/templates/layout.html U tools/sphinx/templates/search.html U tools/sphinx/templates/modindex.html U tools/sphinx/latexwriter.py A tools/sphinx/addons/coverage.py U tools/sphinx/builder.py U tools/sphinx/util/__init__.py U tools/sphinx/web/application.py Fetching external item into 'tools/sphinx/jinja' Updated external to revision 61019. Updated to revision 61019. svn update tools/docutils At revision 61019. svn update tools/pygments At revision 61019. mkdir -p build/html build/doctrees python tools/sphinx-build.py -b html -d build/doctrees -D latex_paper_size= . build/html Sphinx v5369, building html trying to load pickled env... done building [html]: targets for 10 source files that are out of date updating environment: [config changed] 439 added, 0 changed, 0 removed reading... about bugs c-api/abstract c-api/allocation c-api/arg c-api/bool c-api/buffer c-api/cell c-api/class c-api/cobject c-api/complex c-api/concrete c-api/conversion c-api/datetime c-api/descriptor c-api/dict c-api/exceptions c-api/file c-api/float c-api/function c-api/gcsupport c-api/gen c-api/import c-api/index c-api/init c-api/int c-api/intro c-api/iter c-api/iterator c-api/list c-api/long c-api/mapping c-api/marshal c-api/memory c-api/method c-api/module c-api/none c-api/number c-api/objbuffer c-api/object c-api/objimpl c-api/refcounting c-api/reflection c-api/sequence c-api/set c-api/slice c-api/string c-api/structures c-api/sys c-api/tuple c-api/type c-api/typeobj c-api/unicode c-api/utilities c-api/veryhigh c-api/weakref contents copyright distutils/apiref distutils/builtdist distutils/commandref distutils/configfile distutils/examples distutils/extending distutils/index distutils/introduction distutils/packageindex distutils/setupscript distutils/sourcedist distutils/uploading documenting/fromlatex documenting/index documenting/intro documenting/markup documenting/rest documenting/sphinx documenting/style extending/building extending/embedding extending/extending extending/index extending/newtypes extending/windows glossary howto/advocacy howto/curses howto/doanddont howto/functional howto/index howto/regex howto/sockets howto/unicode howto/urllib2 install/index library/__builtin__ library/__future__ library/__main__ library/_ast library/_winreg library/aepack library/aetools library/aetypes library/aifc library/al library/allos library/anydbm library/archiving library/array library/asynchat library/asyncore library/atexit library/audioop library/autogil library/base64 library/basehttpserver library/bastion library/bdb library/binascii library/binhex library/bisect library/bsddb library/bz2 library/calendar library/carbon library/cd library/cgi library/cgihttpserver library/cgitb library/chunk library/cmath library/cmd library/code library/codecs library/codeop library/collections library/colorpicker library/colorsys library/commands library/compileall library/compiler library/configparser library/constants library/contextlib library/cookie library/cookielib library/copy library/copy_reg library/crypt library/crypto library/csv library/ctypes library/curses library/curses.ascii library/curses.panel library/custominterp library/datatypes library/datetime library/dbhash library/dbm library/debug library/decimal library/development library/difflib library/dircache library/dis library/distutils library/dl library/doctest library/docxmlrpcserver library/dumbdbm library/dummy_thread library/dummy_threading library/easydialogs library/email library/email-examples library/email.charset library/email.encoders library/email.errors library/email.generator library/email.header library/email.iterators library/email.message library/email.mime library/email.parser library/email.util library/errno library/exceptions library/fcntl library/filecmp library/fileformats library/fileinput library/filesys library/fl library/fm library/fnmatch library/formatter library/fpectl library/fpformat library/fractions library/framework library/frameworks library/ftplib library/functions library/functools library/gc library/gdbm library/gensuitemodule library/getopt library/getpass library/gettext library/gl library/glob library/grp library/gzip library/hashlib library/heapq library/hmac library/hotshot library/htmllib library/htmlparser library/httplib library/i18n library/ic library/idle library/imageop library/imaplib library/imgfile library/imghdr library/imp library/imputil library/index library/inspect library/internet library/intro library/ipc library/itertools library/jpeg library/keyword library/language library/linecache library/locale library/logging library/mac library/macos library/macosa library/macostools library/macpath library/mailbox library/mailcap library/markup library/marshal library/math library/md5 library/mhlib library/mimetools library/mimetypes library/mimewriter library/mimify library/miniaeframe library/misc library/mm library/mmap library/modulefinder library/modules library/msilib library/msvcrt library/multifile library/mutex library/netdata library/netrc library/new library/nis library/nntplib library/numbers library/numeric library/objects library/operator library/optparse library/os library/os.path library/ossaudiodev library/othergui library/parser library/pdb library/persistence library/pickle library/pickletools library/pipes library/pkgutil library/platform library/plistlib library/popen2 library/poplib library/posix library/posixfile library/pprint library/profile library/pty library/pwd library/py_compile library/pyclbr library/pydoc library/pyexpat library/python library/queue library/quopri library/random library/re library/readline library/repr library/resource library/restricted library/rexec library/rfc822 library/rlcompleter library/robotparser library/runpy library/sched library/scrolledtext library/select library/sets library/sgi library/sgmllib library/sha library/shelve library/shlex library/shutil library/signal library/simplehttpserver library/simplexmlrpcserver library/site library/smtpd library/smtplib library/sndhdr library/socket library/socketserver library/someos library/spwd library/sqlite3 library/ssl library/stat library/statvfs library/stdtypes library/string library/stringio library/stringprep library/strings library/struct library/subprocess library/sun library/sunau library/sunaudio library/symbol library/sys library/syslog library/tabnanny library/tarfile library/telnetlib library/tempfile library/termios library/test library/textwrap library/thread library/threading library/time library/timeit library/tix library/tk library/tkinter library/token library/tokenize library/trace library/traceback library/tty library/turtle library/types library/undoc library/unicodedata library/unittest library/unix library/urllib library/urllib2 library/urlparse library/user library/userdict library/uu library/uuid library/warnings library/wave library/weakref library/webbrowser library/whichdb library/windows library/winsound library/wsgiref library/xdrlib library/xml.dom library/xml.dom.minidom library/xml.dom.pulldom library/xml.etree.elementtree library/xml.sax library/xml.sax.handler library/xml.sax.reader library/xml.sax.utils library/xmlrpclib library/zipfile library/zipimport library/zlib license reference/compound_stmts reference/datamodel reference/executionmodel reference/expressions reference/index reference/introduction reference/lexical_analysis reference/simple_stmts reference/toplevel_components tutorial/appetite tutorial/classes tutorial/controlflow tutorial/datastructures tutorial/errors tutorial/floatingpoint tutorial/index tutorial/inputoutput tutorial/interactive tutorial/interpreter tutorial/introduction tutorial/modules tutorial/stdlib tutorial/stdlib2 tutorial/whatnow using/cmdline using/index using/mac using/unix using/windows whatsnew/2.6 pickling the env... done checking consistency... creating index... writing output... about bugs c-api/abstract c-api/allocation c-api/arg c-api/bool c-api/buffer c-api/cell c-api/class c-api/cobject c-api/complex c-api/concrete c-api/conversion c-api/datetime c-api/descriptor c-api/dict c-api/exceptions c-api/file c-api/float c-api/function c-api/gcsupport c-api/gen c-api/import c-api/index c-api/init c-api/int c-api/intro c-api/iter c-api/iterator c-api/list c-api/long c-api/mapping c-api/marshal c-api/memory c-api/method c-api/module c-api/none c-api/number c-api/objbuffer c-api/object c-api/objimpl c-api/refcounting c-api/reflection c-api/sequence c-api/set c-api/slice c-api/string c-api/structures c-api/sys c-api/tuple c-api/type c-api/typeobj c-api/unicode c-api/utilities c-api/veryhigh c-api/weakref contents copyright distutils/apiref distutils/builtdist distutils/commandref distutils/configfile distutils/examples distutils/extending distutils/index distutils/introduction distutils/packageindex distutils/setupscript distutils/sourcedist distutils/uploading documenting/fromlatex documenting/index documenting/intro documenting/markup documenting/rest documenting/sphinx documenting/style extending/building extending/embedding extending/extending extending/index extending/newtypes extending/windows glossary howto/advocacy howto/curses howto/doanddont howto/functional howto/index howto/regex howto/sockets howto/unicode howto/urllib2 install/index library/__builtin__ library/__future__ library/__main__ library/_ast library/_winreg library/aepack library/aetools library/aetypes library/aifc library/al library/allos library/anydbm library/archiving library/array library/asynchat library/asyncore library/atexit library/audioop library/autogil library/base64 library/basehttpserver library/bastion library/bdb library/binascii library/binhex library/bisect library/bsddb library/bz2 library/calendar library/carbon library/cd library/cgi library/cgihttpserver library/cgitb library/chunk library/cmath library/cmd library/code library/codecs library/codeop library/collections library/colorpicker library/colorsys library/commands library/compileall library/compiler library/configparser library/constants library/contextlib library/cookie library/cookielib library/copy library/copy_reg library/crypt library/crypto library/csv library/ctypes library/curses library/curses.ascii library/curses.panel library/custominterp library/datatypes library/datetime library/dbhash library/dbm library/debug library/decimal library/development library/difflib library/dircache library/dis library/distutils library/dl library/doctest library/docxmlrpcserver library/dumbdbm library/dummy_thread library/dummy_threading library/easydialogs library/email library/email-examples library/email.charset library/email.encoders library/email.errors library/email.generator library/email.header library/email.iterators library/email.message library/email.mime library/email.parser library/email.util library/errno library/exceptions library/fcntl library/filecmp library/fileformats library/fileinput library/filesys library/fl library/fm library/fnmatch library/formatter library/fpectl library/fpformat library/fractions library/framework library/frameworks library/ftplib library/functions library/functools library/gc library/gdbm library/gensuitemodule library/getopt library/getpass library/gettext library/gl library/glob library/grp library/gzip library/hashlib library/heapq library/hmac library/hotshot library/htmllib library/htmlparser library/httplib library/i18n library/ic library/idle library/imageop library/imaplib library/imgfile library/imghdr library/imp library/imputil library/index library/inspect library/internet library/intro library/ipc library/itertools library/jpeg library/keyword library/language library/linecache library/locale library/logging library/mac library/macos library/macosa library/macostools library/macpath library/mailbox library/mailcap library/markup library/marshal library/math library/md5 library/mhlib library/mimetools library/mimetypes library/mimewriter library/mimify library/miniaeframe library/misc library/mm library/mmap library/modulefinder library/modules library/msilib library/msvcrt library/multifile library/mutex library/netdata library/netrc library/new library/nis library/nntplib library/numbers library/numeric library/objects library/operator library/optparse library/os library/os.path library/ossaudiodev library/othergui library/parser library/pdb library/persistence library/pickle library/pickletools library/pipes library/pkgutil library/platform library/plistlib library/popen2 library/poplib library/posix library/posixfile library/pprint library/profile library/pty library/pwd library/py_compile library/pyclbr library/pydoc library/pyexpat library/python library/queue library/quopri library/random library/re library/readline library/repr library/resource library/restricted library/rexec library/rfc822 library/rlcompleter library/robotparser library/runpy library/sched library/scrolledtext library/select library/sets library/sgi library/sgmllib library/sha library/shelve library/shlex library/shutil library/signal library/simplehttpserver library/simplexmlrpcserver library/site library/smtpd library/smtplib library/sndhdr library/socket library/socketserver library/someos library/spwd library/sqlite3 library/ssl library/stat library/statvfs library/stdtypes library/string library/stringio library/stringprep library/strings library/struct library/subprocess library/sun library/sunau library/sunaudio library/symbol library/sys library/syslog library/tabnanny library/tarfile library/telnetlib library/tempfile library/termios library/test library/textwrap library/thread library/threading library/time library/timeit library/tix library/tk library/tkinter library/token library/tokenize library/trace library/traceback library/tty library/turtle library/types library/undoc library/unicodedata library/unittest library/unix library/urllib library/urllib2 library/urlparse library/user library/userdict library/uu library/uuid library/warnings library/wave library/weakref library/webbrowser library/whichdb library/windows library/winsound library/wsgiref library/xdrlib library/xml.dom library/xml.dom.minidom library/xml.dom.pulldom library/xml.etree.elementtree library/xml.sax library/xml.sax.handler library/xml.sax.reader library/xml.sax.utils library/xmlrpclib library/zipfile library/zipimport library/zlib license reference/compound_stmts reference/datamodel reference/executionmodel reference/expressions reference/index reference/introduction reference/lexical_analysis reference/simple_stmts reference/toplevel_components tutorial/appetite tutorial/classes tutorial/controlflow tutorial/datastructures tutorial/errors tutorial/floatingpoint tutorial/index tutorial/inputoutput tutorial/interactive tutorial/interpreter tutorial/introduction tutorial/modules tutorial/stdlib tutorial/stdlib2 tutorial/whatnow using/cmdline using/index using/mac using/unix using/windows whatsnew/2.6 finishing... writing additional files... copying static files... Traceback (most recent call last): File "tools/sphinx-build.py", line 24, in sys.exit(main(sys.argv)) File "/home/neal/python/trunk/Doc/tools/sphinx/__init__.py", line 117, in main app.builder.build_update() File "/home/neal/python/trunk/Doc/tools/sphinx/builder.py", line 178, in build_update 'out of date' % len(to_build)) File "/home/neal/python/trunk/Doc/tools/sphinx/builder.py", line 217, in build self.finish() File "/home/neal/python/trunk/Doc/tools/sphinx/builder.py", line 452, in finish self.config.static_path AttributeError: 'Config' object has no attribute 'static_path' make: *** [build] Error 1 From buildbot at python.org Sat Feb 23 23:30:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:30:01 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc 2.5 Message-ID: <20080223223001.F064B1E4016@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%202.5/builds/554 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 23:35:34 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:35:34 +0100 (CET) Subject: [Python-checkins] r61021 - python/trunk/Lib/test/test_bisect.py python/trunk/Lib/test/test_heapq.py Message-ID: <20080223223534.0D6D31E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:35:33 2008 New Revision: 61021 Modified: python/trunk/Lib/test/test_bisect.py python/trunk/Lib/test/test_heapq.py Log: In test_heapq and test_bisect, test both the Python and the C implementation. Originally written for GHOP by Josip Dzolonga, heavily patched by me. Modified: python/trunk/Lib/test/test_bisect.py ============================================================================== --- python/trunk/Lib/test/test_bisect.py (original) +++ python/trunk/Lib/test/test_bisect.py Sat Feb 23 23:35:33 2008 @@ -1,91 +1,113 @@ +import sys import unittest from test import test_support -from bisect import bisect_right, bisect_left, insort_left, insort_right, insort, bisect from UserList import UserList +# We do a bit of trickery here to be able to test both the C implementation +# and the Python implementation of the module. + +# Make it impossible to import the C implementation anymore. +sys.modules['_bisect'] = 0 +# We must also handle the case that bisect was imported before. +if 'bisect' in sys.modules: + del sys.modules['bisect'] + +# Now we can import the module and get the pure Python implementation. +import bisect as py_bisect + +# Restore everything to normal. +del sys.modules['_bisect'] +del sys.modules['bisect'] + +# This is now the module with the C implementation. +import bisect as c_bisect + + class TestBisect(unittest.TestCase): + module = None - precomputedCases = [ - (bisect_right, [], 1, 0), - (bisect_right, [1], 0, 0), - (bisect_right, [1], 1, 1), - (bisect_right, [1], 2, 1), - (bisect_right, [1, 1], 0, 0), - (bisect_right, [1, 1], 1, 2), - (bisect_right, [1, 1], 2, 2), - (bisect_right, [1, 1, 1], 0, 0), - (bisect_right, [1, 1, 1], 1, 3), - (bisect_right, [1, 1, 1], 2, 3), - (bisect_right, [1, 1, 1, 1], 0, 0), - (bisect_right, [1, 1, 1, 1], 1, 4), - (bisect_right, [1, 1, 1, 1], 2, 4), - (bisect_right, [1, 2], 0, 0), - (bisect_right, [1, 2], 1, 1), - (bisect_right, [1, 2], 1.5, 1), - (bisect_right, [1, 2], 2, 2), - (bisect_right, [1, 2], 3, 2), - (bisect_right, [1, 1, 2, 2], 0, 0), - (bisect_right, [1, 1, 2, 2], 1, 2), - (bisect_right, [1, 1, 2, 2], 1.5, 2), - (bisect_right, [1, 1, 2, 2], 2, 4), - (bisect_right, [1, 1, 2, 2], 3, 4), - (bisect_right, [1, 2, 3], 0, 0), - (bisect_right, [1, 2, 3], 1, 1), - (bisect_right, [1, 2, 3], 1.5, 1), - (bisect_right, [1, 2, 3], 2, 2), - (bisect_right, [1, 2, 3], 2.5, 2), - (bisect_right, [1, 2, 3], 3, 3), - (bisect_right, [1, 2, 3], 4, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10), - - (bisect_left, [], 1, 0), - (bisect_left, [1], 0, 0), - (bisect_left, [1], 1, 0), - (bisect_left, [1], 2, 1), - (bisect_left, [1, 1], 0, 0), - (bisect_left, [1, 1], 1, 0), - (bisect_left, [1, 1], 2, 2), - (bisect_left, [1, 1, 1], 0, 0), - (bisect_left, [1, 1, 1], 1, 0), - (bisect_left, [1, 1, 1], 2, 3), - (bisect_left, [1, 1, 1, 1], 0, 0), - (bisect_left, [1, 1, 1, 1], 1, 0), - (bisect_left, [1, 1, 1, 1], 2, 4), - (bisect_left, [1, 2], 0, 0), - (bisect_left, [1, 2], 1, 0), - (bisect_left, [1, 2], 1.5, 1), - (bisect_left, [1, 2], 2, 1), - (bisect_left, [1, 2], 3, 2), - (bisect_left, [1, 1, 2, 2], 0, 0), - (bisect_left, [1, 1, 2, 2], 1, 0), - (bisect_left, [1, 1, 2, 2], 1.5, 2), - (bisect_left, [1, 1, 2, 2], 2, 2), - (bisect_left, [1, 1, 2, 2], 3, 4), - (bisect_left, [1, 2, 3], 0, 0), - (bisect_left, [1, 2, 3], 1, 0), - (bisect_left, [1, 2, 3], 1.5, 1), - (bisect_left, [1, 2, 3], 2, 1), - (bisect_left, [1, 2, 3], 2.5, 2), - (bisect_left, [1, 2, 3], 3, 2), - (bisect_left, [1, 2, 3], 4, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10) - ] + def setUp(self): + self.precomputedCases = [ + (self.module.bisect_right, [], 1, 0), + (self.module.bisect_right, [1], 0, 0), + (self.module.bisect_right, [1], 1, 1), + (self.module.bisect_right, [1], 2, 1), + (self.module.bisect_right, [1, 1], 0, 0), + (self.module.bisect_right, [1, 1], 1, 2), + (self.module.bisect_right, [1, 1], 2, 2), + (self.module.bisect_right, [1, 1, 1], 0, 0), + (self.module.bisect_right, [1, 1, 1], 1, 3), + (self.module.bisect_right, [1, 1, 1], 2, 3), + (self.module.bisect_right, [1, 1, 1, 1], 0, 0), + (self.module.bisect_right, [1, 1, 1, 1], 1, 4), + (self.module.bisect_right, [1, 1, 1, 1], 2, 4), + (self.module.bisect_right, [1, 2], 0, 0), + (self.module.bisect_right, [1, 2], 1, 1), + (self.module.bisect_right, [1, 2], 1.5, 1), + (self.module.bisect_right, [1, 2], 2, 2), + (self.module.bisect_right, [1, 2], 3, 2), + (self.module.bisect_right, [1, 1, 2, 2], 0, 0), + (self.module.bisect_right, [1, 1, 2, 2], 1, 2), + (self.module.bisect_right, [1, 1, 2, 2], 1.5, 2), + (self.module.bisect_right, [1, 1, 2, 2], 2, 4), + (self.module.bisect_right, [1, 1, 2, 2], 3, 4), + (self.module.bisect_right, [1, 2, 3], 0, 0), + (self.module.bisect_right, [1, 2, 3], 1, 1), + (self.module.bisect_right, [1, 2, 3], 1.5, 1), + (self.module.bisect_right, [1, 2, 3], 2, 2), + (self.module.bisect_right, [1, 2, 3], 2.5, 2), + (self.module.bisect_right, [1, 2, 3], 3, 3), + (self.module.bisect_right, [1, 2, 3], 4, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10), + + (self.module.bisect_left, [], 1, 0), + (self.module.bisect_left, [1], 0, 0), + (self.module.bisect_left, [1], 1, 0), + (self.module.bisect_left, [1], 2, 1), + (self.module.bisect_left, [1, 1], 0, 0), + (self.module.bisect_left, [1, 1], 1, 0), + (self.module.bisect_left, [1, 1], 2, 2), + (self.module.bisect_left, [1, 1, 1], 0, 0), + (self.module.bisect_left, [1, 1, 1], 1, 0), + (self.module.bisect_left, [1, 1, 1], 2, 3), + (self.module.bisect_left, [1, 1, 1, 1], 0, 0), + (self.module.bisect_left, [1, 1, 1, 1], 1, 0), + (self.module.bisect_left, [1, 1, 1, 1], 2, 4), + (self.module.bisect_left, [1, 2], 0, 0), + (self.module.bisect_left, [1, 2], 1, 0), + (self.module.bisect_left, [1, 2], 1.5, 1), + (self.module.bisect_left, [1, 2], 2, 1), + (self.module.bisect_left, [1, 2], 3, 2), + (self.module.bisect_left, [1, 1, 2, 2], 0, 0), + (self.module.bisect_left, [1, 1, 2, 2], 1, 0), + (self.module.bisect_left, [1, 1, 2, 2], 1.5, 2), + (self.module.bisect_left, [1, 1, 2, 2], 2, 2), + (self.module.bisect_left, [1, 1, 2, 2], 3, 4), + (self.module.bisect_left, [1, 2, 3], 0, 0), + (self.module.bisect_left, [1, 2, 3], 1, 0), + (self.module.bisect_left, [1, 2, 3], 1.5, 1), + (self.module.bisect_left, [1, 2, 3], 2, 1), + (self.module.bisect_left, [1, 2, 3], 2.5, 2), + (self.module.bisect_left, [1, 2, 3], 3, 2), + (self.module.bisect_left, [1, 2, 3], 4, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10) + ] def test_precomputed(self): for func, data, elem, expected in self.precomputedCases: @@ -98,12 +120,12 @@ data = [randrange(0, n, 2) for j in xrange(i)] data.sort() elem = randrange(-1, n+1) - ip = bisect_left(data, elem) + ip = self.module.bisect_left(data, elem) if ip < len(data): self.failUnless(elem <= data[ip]) if ip > 0: self.failUnless(data[ip-1] < elem) - ip = bisect_right(data, elem) + ip = self.module.bisect_right(data, elem) if ip < len(data): self.failUnless(elem < data[ip]) if ip > 0: @@ -117,32 +139,39 @@ hi = min(len(data), hi) ip = func(data, elem, lo, hi) self.failUnless(lo <= ip <= hi) - if func is bisect_left and ip < hi: + if func is self.module.bisect_left and ip < hi: self.failUnless(elem <= data[ip]) - if func is bisect_left and ip > lo: + if func is self.module.bisect_left and ip > lo: self.failUnless(data[ip-1] < elem) - if func is bisect_right and ip < hi: + if func is self.module.bisect_right and ip < hi: self.failUnless(elem < data[ip]) - if func is bisect_right and ip > lo: + if func is self.module.bisect_right and ip > lo: self.failUnless(data[ip-1] <= elem) self.assertEqual(ip, max(lo, min(hi, expected))) def test_backcompatibility(self): - self.assertEqual(bisect, bisect_right) + self.assertEqual(self.module.bisect, self.module.bisect_right) def test_keyword_args(self): data = [10, 20, 30, 40, 50] - self.assertEqual(bisect_left(a=data, x=25, lo=1, hi=3), 2) - self.assertEqual(bisect_right(a=data, x=25, lo=1, hi=3), 2) - self.assertEqual(bisect(a=data, x=25, lo=1, hi=3), 2) - insort_left(a=data, x=25, lo=1, hi=3) - insort_right(a=data, x=25, lo=1, hi=3) - insort(a=data, x=25, lo=1, hi=3) + self.assertEqual(self.module.bisect_left(a=data, x=25, lo=1, hi=3), 2) + self.assertEqual(self.module.bisect_right(a=data, x=25, lo=1, hi=3), 2) + self.assertEqual(self.module.bisect(a=data, x=25, lo=1, hi=3), 2) + self.module.insort_left(a=data, x=25, lo=1, hi=3) + self.module.insort_right(a=data, x=25, lo=1, hi=3) + self.module.insort(a=data, x=25, lo=1, hi=3) self.assertEqual(data, [10, 20, 25, 25, 25, 30, 40, 50]) +class TestBisectPython(TestBisect): + module = py_bisect + +class TestBisectC(TestBisect): + module = c_bisect + #============================================================================== class TestInsort(unittest.TestCase): + module = None def test_vsBuiltinSort(self, n=500): from random import choice @@ -150,14 +179,20 @@ for i in xrange(n): digit = choice("0123456789") if digit in "02468": - f = insort_left + f = self.module.insort_left else: - f = insort_right + f = self.module.insort_right f(insorted, digit) self.assertEqual(sorted(insorted), insorted) def test_backcompatibility(self): - self.assertEqual(insort, insort_right) + self.assertEqual(self.module.insort, self.module.insort_right) + +class TestInsortPython(TestInsort): + module = py_bisect + +class TestInsortC(TestInsort): + module = c_bisect #============================================================================== @@ -178,32 +213,44 @@ raise ZeroDivisionError class TestErrorHandling(unittest.TestCase): + module = None def test_non_sequence(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(TypeError, f, 10, 10) def test_len_only(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(AttributeError, f, LenOnly(), 10) def test_get_only(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(AttributeError, f, GetOnly(), 10) def test_cmp_err(self): seq = [CmpErr(), CmpErr(), CmpErr()] - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(ZeroDivisionError, f, seq, 10) def test_arg_parsing(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(TypeError, f, 10) +class TestErrorHandlingPython(TestErrorHandling): + module = py_bisect + +class TestErrorHandlingC(TestErrorHandling): + module = c_bisect + #============================================================================== libreftest = """ -Example from the Library Reference: Doc/lib/libbisect.tex +Example from the Library Reference: Doc/library/bisect.rst The bisect() function is generally useful for categorizing numeric data. This example uses bisect() to look up a letter grade for an exam total @@ -229,12 +276,10 @@ def test_main(verbose=None): from test import test_bisect - from types import BuiltinFunctionType - import sys - test_classes = [TestBisect, TestInsort] - if isinstance(bisect_left, BuiltinFunctionType): - test_classes.append(TestErrorHandling) + test_classes = [TestBisectPython, TestBisectC, + TestInsortPython, TestInsortC, + TestErrorHandlingPython, TestErrorHandlingC] test_support.run_unittest(*test_classes) test_support.run_doctest(test_bisect, verbose) Modified: python/trunk/Lib/test/test_heapq.py ============================================================================== --- python/trunk/Lib/test/test_heapq.py (original) +++ python/trunk/Lib/test/test_heapq.py Sat Feb 23 23:35:33 2008 @@ -1,21 +1,32 @@ """Unittests for heapq.""" -from heapq import heappush, heappop, heapify, heapreplace, merge, nlargest, nsmallest import random import unittest from test import test_support import sys +# We do a bit of trickery here to be able to test both the C implementation +# and the Python implementation of the module. + +# Make it impossible to import the C implementation anymore. +sys.modules['_heapq'] = 0 +# We must also handle the case that heapq was imported before. +if 'heapq' in sys.modules: + del sys.modules['heapq'] + +# Now we can import the module and get the pure Python implementation. +import heapq as py_heapq + +# Restore everything to normal. +del sys.modules['_heapq'] +del sys.modules['heapq'] + +# This is now the module with the C implementation. +import heapq as c_heapq -def heapiter(heap): - # An iterator returning a heap's elements, smallest-first. - try: - while 1: - yield heappop(heap) - except IndexError: - pass class TestHeap(unittest.TestCase): + module = None def test_push_pop(self): # 1) Push 256 random numbers and pop them off, verifying all's OK. @@ -25,11 +36,11 @@ for i in range(256): item = random.random() data.append(item) - heappush(heap, item) + self.module.heappush(heap, item) self.check_invariant(heap) results = [] while heap: - item = heappop(heap) + item = self.module.heappop(heap) self.check_invariant(heap) results.append(item) data_sorted = data[:] @@ -38,10 +49,10 @@ # 2) Check that the invariant holds for a sorted array self.check_invariant(results) - self.assertRaises(TypeError, heappush, []) + self.assertRaises(TypeError, self.module.heappush, []) try: - self.assertRaises(TypeError, heappush, None, None) - self.assertRaises(TypeError, heappop, None) + self.assertRaises(TypeError, self.module.heappush, None, None) + self.assertRaises(TypeError, self.module.heappop, None) except AttributeError: pass @@ -55,21 +66,29 @@ def test_heapify(self): for size in range(30): heap = [random.random() for dummy in range(size)] - heapify(heap) + self.module.heapify(heap) self.check_invariant(heap) - self.assertRaises(TypeError, heapify, None) + self.assertRaises(TypeError, self.module.heapify, None) def test_naive_nbest(self): data = [random.randrange(2000) for i in range(1000)] heap = [] for item in data: - heappush(heap, item) + self.module.heappush(heap, item) if len(heap) > 10: - heappop(heap) + self.module.heappop(heap) heap.sort() self.assertEqual(heap, sorted(data)[-10:]) + def heapiter(self, heap): + # An iterator returning a heap's elements, smallest-first. + try: + while 1: + yield self.module.heappop(heap) + except IndexError: + pass + def test_nbest(self): # Less-naive "N-best" algorithm, much faster (if len(data) is big # enough ) than sorting all of data. However, if we had a max @@ -78,15 +97,15 @@ # (10 log-time steps). data = [random.randrange(2000) for i in range(1000)] heap = data[:10] - heapify(heap) + self.module.heapify(heap) for item in data[10:]: if item > heap[0]: # this gets rarer the longer we run - heapreplace(heap, item) - self.assertEqual(list(heapiter(heap)), sorted(data)[-10:]) + self.module.heapreplace(heap, item) + self.assertEqual(list(self.heapiter(heap)), sorted(data)[-10:]) - self.assertRaises(TypeError, heapreplace, None) - self.assertRaises(TypeError, heapreplace, None, None) - self.assertRaises(IndexError, heapreplace, [], None) + self.assertRaises(TypeError, self.module.heapreplace, None) + self.assertRaises(TypeError, self.module.heapreplace, None, None) + self.assertRaises(IndexError, self.module.heapreplace, [], None) def test_heapsort(self): # Exercise everything with repeated heapsort checks @@ -95,12 +114,12 @@ data = [random.randrange(25) for i in range(size)] if trial & 1: # Half of the time, use heapify heap = data[:] - heapify(heap) + self.module.heapify(heap) else: # The rest of the time, use heappush heap = [] for item in data: - heappush(heap, item) - heap_sorted = [heappop(heap) for i in range(size)] + self.module.heappush(heap, item) + heap_sorted = [self.module.heappop(heap) for i in range(size)] self.assertEqual(heap_sorted, sorted(data)) def test_merge(self): @@ -108,8 +127,8 @@ for i in xrange(random.randrange(5)): row = sorted(random.randrange(1000) for j in range(random.randrange(10))) inputs.append(row) - self.assertEqual(sorted(chain(*inputs)), list(merge(*inputs))) - self.assertEqual(list(merge()), []) + self.assertEqual(sorted(chain(*inputs)), list(self.module.merge(*inputs))) + self.assertEqual(list(self.module.merge()), []) def test_merge_stability(self): class Int(int): @@ -123,25 +142,32 @@ inputs[stream].append(obj) for stream in inputs: stream.sort() - result = [i.pair for i in merge(*inputs)] + result = [i.pair for i in self.module.merge(*inputs)] self.assertEqual(result, sorted(result)) def test_nsmallest(self): data = [(random.randrange(2000), i) for i in range(1000)] for f in (None, lambda x: x[0] * 547 % 2000): for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100): - self.assertEqual(nsmallest(n, data), sorted(data)[:n]) - self.assertEqual(nsmallest(n, data, key=f), + self.assertEqual(self.module.nsmallest(n, data), sorted(data)[:n]) + self.assertEqual(self.module.nsmallest(n, data, key=f), sorted(data, key=f)[:n]) def test_nlargest(self): data = [(random.randrange(2000), i) for i in range(1000)] for f in (None, lambda x: x[0] * 547 % 2000): for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100): - self.assertEqual(nlargest(n, data), sorted(data, reverse=True)[:n]) - self.assertEqual(nlargest(n, data, key=f), + self.assertEqual(self.module.nlargest(n, data), + sorted(data, reverse=True)[:n]) + self.assertEqual(self.module.nlargest(n, data, key=f), sorted(data, key=f, reverse=True)[:n]) +class TestHeapPython(TestHeap): + module = py_heapq + +class TestHeapC(TestHeap): + module = c_heapq + #============================================================================== @@ -238,44 +264,49 @@ return chain(imap(lambda x:x, R(Ig(G(seqn))))) class TestErrorHandling(unittest.TestCase): + # only for C implementation + module = c_heapq def test_non_sequence(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, 10) - for f in (heappush, heapreplace, nlargest, nsmallest): + for f in (self.module.heappush, self.module.heapreplace, + self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 10, 10) def test_len_only(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, LenOnly()) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(TypeError, f, LenOnly(), 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 2, LenOnly()) def test_get_only(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, GetOnly()) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(TypeError, f, GetOnly(), 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 2, GetOnly()) def test_get_only(self): seq = [CmpErr(), CmpErr(), CmpErr()] - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(ZeroDivisionError, f, seq) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(ZeroDivisionError, f, seq, 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(ZeroDivisionError, f, 2, seq) def test_arg_parsing(self): - for f in (heapify, heappop, heappush, heapreplace, nlargest, nsmallest): + for f in (self.module.heapify, self.module.heappop, + self.module.heappush, self.module.heapreplace, + self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 10) def test_iterable_args(self): - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, L, R): self.assertEqual(f(2, g(s)), f(2,s)) @@ -284,15 +315,14 @@ self.assertRaises(TypeError, f, 2, N(s)) self.assertRaises(ZeroDivisionError, f, 2, E(s)) + #============================================================================== def test_main(verbose=None): from types import BuiltinFunctionType - test_classes = [TestHeap] - if isinstance(heapify, BuiltinFunctionType): - test_classes.append(TestErrorHandling) + test_classes = [TestHeapPython, TestHeapC, TestErrorHandling] test_support.run_unittest(*test_classes) # verify reference counting From buildbot at python.org Sat Feb 23 23:46:28 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:46:28 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080223224628.E75061E4022@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2902 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Sat Feb 23 23:51:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Sat, 23 Feb 2008 22:51:35 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu 2.5 Message-ID: <20080223225136.486161E4022@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%202.5/builds/490 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sat Feb 23 23:54:13 2008 From: python-checkins at python.org (facundo.batista) Date: Sat, 23 Feb 2008 23:54:13 +0100 (CET) Subject: [Python-checkins] r61024 - python/trunk/Lib/test/test_mutex.py Message-ID: <20080223225413.2A8B01E4016@bag.python.org> Author: facundo.batista Date: Sat Feb 23 23:54:12 2008 New Revision: 61024 Added: python/trunk/Lib/test/test_mutex.py Log: Added simple test case. Thanks Benjamin Peterson. Added: python/trunk/Lib/test/test_mutex.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_mutex.py Sat Feb 23 23:54:12 2008 @@ -0,0 +1,33 @@ +import mutex + +import unittest +import test.test_support + +class MutexTest(unittest.TestCase): + + def setUp(self): + self.mutex = mutex.mutex() + + def called_by_mutex(self, some_data): + self.assert_(self.mutex.test(), "mutex not held") + # Nested locking + self.mutex.lock(self.called_by_mutex2, "eggs") + + def called_by_mutex2(self, some_data): + self.assert_(self.ready_for_2, + "called_by_mutex2 called too soon") + + def test_lock_and_unlock(self): + self.read_for_2 = False + self.mutex.lock(self.called_by_mutex, "spam") + self.ready_for_2 = True + # unlock both locks + self.mutex.unlock() + self.mutex.unlock() + self.failIf(self.mutex.test(), "mutex still held") + +def test_main(): + test.test_support.run_unittest(MutexTest) + +if __name__ == "__main__": + test_main() From python-checkins at python.org Sat Feb 23 23:55:18 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:55:18 +0100 (CET) Subject: [Python-checkins] r61025 - python/trunk/Doc/library/msilib.rst Message-ID: <20080223225518.697891E4016@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:55:18 2008 New Revision: 61025 Modified: python/trunk/Doc/library/msilib.rst Log: #1825: correctly document msilib.add_data. Modified: python/trunk/Doc/library/msilib.rst ============================================================================== --- python/trunk/Doc/library/msilib.rst (original) +++ python/trunk/Doc/library/msilib.rst Sat Feb 23 23:55:18 2008 @@ -67,7 +67,7 @@ .. function:: init_database(name, schema, ProductName, ProductCode, ProductVersion, Manufacturer) - Create and return a new database *name*, initialize it with *schema*, and set + Create and return a new database *name*, initialize it with *schema*, and set the properties *ProductName*, *ProductCode*, *ProductVersion*, and *Manufacturer*. @@ -79,11 +79,17 @@ function returns. -.. function:: add_data(database, records) +.. function:: add_data(database, table, records) - Add all *records* to *database*. *records* should be a list of tuples, each one - containing all fields of a record according to the schema of the table. For - optional fields, ``None`` can be passed. + Add all *records* to the table named *table* in *database*. + + The *table* argument must be one of the predefined tables in the MSI schema, + e.g. ``'Feature'``, ``'File'``, ``'Component'``, ``'Dialog'``, ``'Control'``, + etc. + + *records* should be a list of tuples, each one containing all fields of a + record according to the schema of the table. For optional fields, + ``None`` can be passed. Field values can be int or long numbers, strings, or instances of the Binary class. From python-checkins at python.org Sat Feb 23 23:58:48 2008 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Feb 2008 23:58:48 +0100 (CET) Subject: [Python-checkins] r61026 - doctools/trunk/sphinx/builder.py Message-ID: <20080223225848.89D9A1E402A@bag.python.org> Author: georg.brandl Date: Sat Feb 23 23:58:48 2008 New Revision: 61026 Modified: doctools/trunk/sphinx/builder.py Log: Fix config value name. Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Sat Feb 23 23:58:48 2008 @@ -449,7 +449,7 @@ self.info(bold('copying static files...')) ensuredir(path.join(self.outdir, 'static')) staticdirnames = path.join(path.dirname(__file__), 'static') + \ - self.config.static_path + self.config.html_static_path for staticdirname in staticdirnames: for filename in os.listdir(staticdirname): if not filename.startswith('.'): From python-checkins at python.org Sun Feb 24 00:02:23 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 00:02:23 +0100 (CET) Subject: [Python-checkins] r61027 - in python/trunk: Doc/library/operator.rst Lib/test/test_operator.py Misc/NEWS Modules/operator.c Message-ID: <20080223230223.D9EFB1E4016@bag.python.org> Author: georg.brandl Date: Sun Feb 24 00:02:23 2008 New Revision: 61027 Modified: python/trunk/Doc/library/operator.rst python/trunk/Lib/test/test_operator.py python/trunk/Misc/NEWS python/trunk/Modules/operator.c Log: #1826: allow dotted attribute paths in operator.attrgetter. Modified: python/trunk/Doc/library/operator.rst ============================================================================== --- python/trunk/Doc/library/operator.rst (original) +++ python/trunk/Doc/library/operator.rst Sun Feb 24 00:02:23 2008 @@ -499,15 +499,21 @@ Return a callable object that fetches *attr* from its operand. If more than one attribute is requested, returns a tuple of attributes. After, - ``f=attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After, - ``f=attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name, + ``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After, + ``f = attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name, b.date)``. + The attribute names can also contain dots; after ``f = attrgetter('date.month')``, + the call ``f(b)`` returns ``b.date.month``. + .. versionadded:: 2.4 .. versionchanged:: 2.5 Added support for multiple attributes. + .. versionchanged:: 2.6 + Added support for dotted attributes. + .. function:: itemgetter(item[, args...]) Modified: python/trunk/Lib/test/test_operator.py ============================================================================== --- python/trunk/Lib/test/test_operator.py (original) +++ python/trunk/Lib/test/test_operator.py Sun Feb 24 00:02:23 2008 @@ -386,6 +386,26 @@ raise SyntaxError self.failUnlessRaises(SyntaxError, operator.attrgetter('foo'), C()) + # recursive gets + a = A() + a.name = 'arthur' + a.child = A() + a.child.name = 'thomas' + f = operator.attrgetter('child.name') + self.assertEqual(f(a), 'thomas') + self.assertRaises(AttributeError, f, a.child) + f = operator.attrgetter('name', 'child.name') + self.assertEqual(f(a), ('arthur', 'thomas')) + f = operator.attrgetter('name', 'child.name', 'child.child.name') + self.assertRaises(AttributeError, f, a) + + a.child.child = A() + a.child.child.name = 'johnson' + f = operator.attrgetter('child.child.name') + self.assertEqual(f(a), 'johnson') + f = operator.attrgetter('name', 'child.name', 'child.child.name') + self.assertEqual(f(a), ('arthur', 'thomas', 'johnson')) + def test_itemgetter(self): a = 'ABCDE' f = operator.itemgetter(2) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 24 00:02:23 2008 @@ -1196,6 +1196,8 @@ Extension Modules ----------------- +- Patch #1826: operator.attrgetter() now supports dotted attribute paths. + - Patch #1957: syslogmodule: Release GIL when calling syslog(3) - #2112: mmap.error is now a subclass of EnvironmentError and not a Modified: python/trunk/Modules/operator.c ============================================================================== --- python/trunk/Modules/operator.c (original) +++ python/trunk/Modules/operator.c Sun Feb 24 00:02:23 2008 @@ -496,6 +496,49 @@ } static PyObject * +dotted_getattr(PyObject *obj, PyObject *attr) +{ + char *s, *p; + +#ifdef Py_USING_UNICODE + if (PyUnicode_Check(attr)) { + attr = _PyUnicode_AsDefaultEncodedString(attr, NULL); + if (attr == NULL) + return NULL; + } +#endif + + if (!PyString_Check(attr)) { + PyErr_SetString(PyExc_TypeError, + "attribute name must be a string"); + return NULL; + } + + s = PyString_AS_STRING(attr); + Py_INCREF(obj); + for (;;) { + PyObject *newobj, *str; + p = strchr(s, '.'); + str = p ? PyString_FromStringAndSize(s, (p-s)) : + PyString_FromString(s); + if (str == NULL) { + Py_DECREF(obj); + return NULL; + } + newobj = PyObject_GetAttr(obj, str); + Py_DECREF(str); + Py_DECREF(obj); + if (newobj == NULL) + return NULL; + obj = newobj; + if (p == NULL) break; + s = p+1; + } + + return obj; +} + +static PyObject * attrgetter_call(attrgetterobject *ag, PyObject *args, PyObject *kw) { PyObject *obj, *result; @@ -504,7 +547,7 @@ if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &obj)) return NULL; if (ag->nattrs == 1) - return PyObject_GetAttr(obj, ag->attr); + return dotted_getattr(obj, ag->attr); assert(PyTuple_Check(ag->attr)); assert(PyTuple_GET_SIZE(ag->attr) == nattrs); @@ -516,7 +559,7 @@ for (i=0 ; i < nattrs ; i++) { PyObject *attr, *val; attr = PyTuple_GET_ITEM(ag->attr, i); - val = PyObject_GetAttr(obj, attr); + val = dotted_getattr(obj, attr); if (val == NULL) { Py_DECREF(result); return NULL; @@ -531,7 +574,9 @@ \n\ Return a callable object that fetches the given attribute(s) from its operand.\n\ After, f=attrgetter('name'), the call f(r) returns r.name.\n\ -After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date)."); +After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date).\n\ +After, h=attrgetter('name.first', 'name.last'), the call h(r) returns\n\ +(r.name.first, r.name.last)."); static PyTypeObject attrgetter_type = { PyVarObject_HEAD_INIT(NULL, 0) From python-checkins at python.org Sun Feb 24 00:04:36 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 00:04:36 +0100 (CET) Subject: [Python-checkins] r61028 - in python/trunk: Doc/library/operator.rst Lib/test/test_operator.py Misc/NEWS Modules/operator.c Message-ID: <20080223230436.06BE81E4016@bag.python.org> Author: georg.brandl Date: Sun Feb 24 00:04:35 2008 New Revision: 61028 Modified: python/trunk/Doc/library/operator.rst python/trunk/Lib/test/test_operator.py python/trunk/Misc/NEWS python/trunk/Modules/operator.c Log: #1506171: added operator.methodcaller(). Modified: python/trunk/Doc/library/operator.rst ============================================================================== --- python/trunk/Doc/library/operator.rst (original) +++ python/trunk/Doc/library/operator.rst Sun Feb 24 00:04:35 2008 @@ -538,6 +538,17 @@ [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)] +.. function:: methodcaller(name[, args...]) + + Return a callable object that calls the method *name* on its operand. If + additional arguments and/or keyword arguments are given, they will be given + to the method as well. After ``f = methodcaller('name')``, the call ``f(b)`` + returns ``b.name()``. After ``f = methodcaller('name', 'foo', bar=1)``, the + call ``f(b)`` returns ``b.name('foo', bar=1)``. + + .. versionadded:: 2.6 + + .. _operator-map: Mapping Operators to Functions Modified: python/trunk/Lib/test/test_operator.py ============================================================================== --- python/trunk/Lib/test/test_operator.py (original) +++ python/trunk/Lib/test/test_operator.py Sun Feb 24 00:04:35 2008 @@ -440,6 +440,24 @@ self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) + def test_methodcaller(self): + self.assertRaises(TypeError, operator.methodcaller) + class A: + def foo(self, *args, **kwds): + return args[0] + args[1] + def bar(self, f=42): + return f + a = A() + f = operator.methodcaller('foo') + self.assertRaises(IndexError, f, a) + f = operator.methodcaller('foo', 1, 2) + self.assertEquals(f(a), 3) + f = operator.methodcaller('bar') + self.assertEquals(f(a), 42) + self.assertRaises(TypeError, f, a, a) + f = operator.methodcaller('bar', f=5) + self.assertEquals(f(a), 5) + def test_inplace(self): class C(object): def __iadd__ (self, other): return "iadd" Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 24 00:04:35 2008 @@ -1196,6 +1196,8 @@ Extension Modules ----------------- +- Patch #1506171: added operator.methodcaller(). + - Patch #1826: operator.attrgetter() now supports dotted attribute paths. - Patch #1957: syslogmodule: Release GIL when calling syslog(3) Modified: python/trunk/Modules/operator.c ============================================================================== --- python/trunk/Modules/operator.c (original) +++ python/trunk/Modules/operator.c Sun Feb 24 00:04:35 2008 @@ -620,6 +620,139 @@ attrgetter_new, /* tp_new */ 0, /* tp_free */ }; + + +/* methodcaller object **********************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *name; + PyObject *args; + PyObject *kwds; +} methodcallerobject; + +static PyTypeObject methodcaller_type; + +static PyObject * +methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + methodcallerobject *mc; + PyObject *name, *newargs; + + if (PyTuple_GET_SIZE(args) < 1) { + PyErr_SetString(PyExc_TypeError, "methodcaller needs at least " + "one argument, the method name"); + return NULL; + } + + /* create methodcallerobject structure */ + mc = PyObject_GC_New(methodcallerobject, &methodcaller_type); + if (mc == NULL) + return NULL; + + newargs = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); + if (newargs == NULL) { + Py_DECREF(mc); + return NULL; + } + mc->args = newargs; + + name = PyTuple_GET_ITEM(args, 0); + Py_INCREF(name); + mc->name = name; + + Py_XINCREF(kwds); + mc->kwds = kwds; + + PyObject_GC_Track(mc); + return (PyObject *)mc; +} + +static void +methodcaller_dealloc(methodcallerobject *mc) +{ + PyObject_GC_UnTrack(mc); + Py_XDECREF(mc->name); + Py_XDECREF(mc->args); + Py_XDECREF(mc->kwds); + PyObject_GC_Del(mc); +} + +static int +methodcaller_traverse(methodcallerobject *mc, visitproc visit, void *arg) +{ + Py_VISIT(mc->args); + Py_VISIT(mc->kwds); + return 0; +} + +static PyObject * +methodcaller_call(methodcallerobject *mc, PyObject *args, PyObject *kw) +{ + PyObject *method, *obj, *result; + + if (!PyArg_UnpackTuple(args, "methodcaller", 1, 1, &obj)) + return NULL; + method = PyObject_GetAttr(obj, mc->name); + if (method == NULL) + return NULL; + result = PyObject_Call(method, mc->args, mc->kwds); + Py_DECREF(method); + return result; +} + +PyDoc_STRVAR(methodcaller_doc, +"methodcaller(name, ...) --> methodcaller object\n\ +\n\ +Return a callable object that calls the given method on its operand.\n\ +After, f = methodcaller('name'), the call f(r) returns r.name().\n\ +After, g = methodcaller('name', 'date', foo=1), the call g(r) returns\n\ +r.name('date', foo=1)."); + +static PyTypeObject methodcaller_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "operator.methodcaller", /* tp_name */ + sizeof(methodcallerobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)methodcaller_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + (ternaryfunc)methodcaller_call, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + methodcaller_doc, /* tp_doc */ + (traverseproc)methodcaller_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + methodcaller_new, /* tp_new */ + 0, /* tp_free */ +}; + + /* Initialization function for the module (*must* be called initoperator) */ PyMODINIT_FUNC @@ -642,4 +775,9 @@ return; Py_INCREF(&attrgetter_type); PyModule_AddObject(m, "attrgetter", (PyObject *)&attrgetter_type); + + if (PyType_Ready(&methodcaller_type) < 0) + return; + Py_INCREF(&methodcaller_type); + PyModule_AddObject(m, "methodcaller", (PyObject *)&methodcaller_type); } From lists at cheimes.de Sun Feb 24 00:06:21 2008 From: lists at cheimes.de (Christian Heimes) Date: Sun, 24 Feb 2008 00:06:21 +0100 Subject: [Python-checkins] r61000 - in python/trunk: Lib/SimpleHTTPServer.py Lib/bsddb/test/test_basics.py Lib/bsddb/test/test_compat.py Lib/bsddb/test/test_cursor_pget_bug.py Lib/bsddb/test/test_dbobj.py Lib/bsddb/test/test_dbshelve.py Lib/bsddb/test/tes In-Reply-To: References: Message-ID: <47C0A6ED.8020604@cheimes.de> Neal Norwitz wrote: > It looks like there were a coulpe of unintended changes in here. I > think the test_compiler one caused a bunch of buildbots to fail. The change to test_compiler was intended but it was not meant to be submitted together with the other changes. The compiler packages doesn't support the latest change to AST. Christian From python-checkins at python.org Sun Feb 24 00:25:27 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 00:25:27 +0100 (CET) Subject: [Python-checkins] r61029 - python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Message-ID: <20080223232527.1CDFA1E4016@bag.python.org> Author: georg.brandl Date: Sun Feb 24 00:25:26 2008 New Revision: 61029 Modified: python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Log: Document import ./. threading issues. #1720705. Modified: python/trunk/Doc/library/thread.rst ============================================================================== --- python/trunk/Doc/library/thread.rst (original) +++ python/trunk/Doc/library/thread.rst Sun Feb 24 00:25:26 2008 @@ -150,6 +150,11 @@ exception will be received by an arbitrary thread. (When the :mod:`signal` module is available, interrupts always go to the main thread.) +* The import machinery is not thread safe. In general, an import may not + have the side effect of importing a module, and only the main thread + should import modules. Imports within or caused by a thread other than + the main thread isn't safe. + * Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is equivalent to calling :func:`exit`. @@ -170,4 +175,3 @@ * When the main thread exits, it does not do any of its usual cleanup (except that :keyword:`try` ... :keyword:`finally` clauses are honored), and the standard I/O files are not flushed. - Modified: python/trunk/Doc/library/threading.rst ============================================================================== --- python/trunk/Doc/library/threading.rst (original) +++ python/trunk/Doc/library/threading.rst Sun Feb 24 00:25:26 2008 @@ -562,6 +562,13 @@ There is a "main thread" object; this corresponds to the initial thread of control in the Python program. It is not a daemon thread. +.. warning:: + + The import machinery is not thread safe. In general, an import may not + have the side effect of importing a module, and only the main thread + should import modules. Imports within or caused by a thread other than + the main thread isn't safe. + There is the possibility that "dummy thread objects" are created. These are thread objects corresponding to "alien threads", which are threads of control started outside the threading module, such as directly from C code. Dummy From python-checkins at python.org Sun Feb 24 00:29:26 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sun, 24 Feb 2008 00:29:26 +0100 (CET) Subject: [Python-checkins] r61030 - python/branches/release25-maint/Lib/test/output/test_resource Message-ID: <20080223232926.6D5951E4016@bag.python.org> Author: andrew.kuchling Date: Sun Feb 24 00:29:26 2008 New Revision: 61030 Removed: python/branches/release25-maint/Lib/test/output/test_resource Log: Remove old expected output for test_resource Deleted: /python/branches/release25-maint/Lib/test/output/test_resource ============================================================================== --- /python/branches/release25-maint/Lib/test/output/test_resource Sun Feb 24 00:29:26 2008 +++ (empty file) @@ -1,2 +0,0 @@ -test_resource -True From python-checkins at python.org Sun Feb 24 00:30:50 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 00:30:50 +0100 (CET) Subject: [Python-checkins] r61031 - peps/trunk/pep-0361.txt Message-ID: <20080223233050.6914C1E4016@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 00:30:50 2008 New Revision: 61031 Modified: peps/trunk/pep-0361.txt Log: Minimal updates based on Barry volunteering Modified: peps/trunk/pep-0361.txt ============================================================================== --- peps/trunk/pep-0361.txt (original) +++ peps/trunk/pep-0361.txt Sun Feb 24 00:30:50 2008 @@ -22,7 +22,7 @@ Release Manager and Crew - XXX volunteered to be Release Manager. + Barry Warsaw volunteered to be Release Manager. XXX is building the Windows installers, XXX is building the Mac installers, @@ -36,8 +36,8 @@ betas and release candidates will be determined as the release process unfolds. The minimal schedule is: - June 2007: (re)confirm the crew and start deciding on schedule. - The initial 2.6 target is for April 2008. + Feb 2008: (re)confirm the crew and start deciding on schedule. + The 2.6 target is for the second half of 2008. alpha 1: T - 16 weeks [planned] alpha 2: T - 13 weeks [planned] @@ -46,6 +46,9 @@ rc 1: T - 1 week [planned] final: T [planned] + Monthly releases for alphas are planned starting at the end of Feb 2008: + http://mail.python.org/pipermail/python-dev/2008-February/077125.html + Completed features for 2.6 From python-checkins at python.org Sun Feb 24 00:43:01 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 00:43:01 +0100 (CET) Subject: [Python-checkins] r61032 - python/trunk/Doc/using/cmdline.rst Message-ID: <20080223234301.B8BC81E4016@bag.python.org> Author: georg.brandl Date: Sun Feb 24 00:43:01 2008 New Revision: 61032 Modified: python/trunk/Doc/using/cmdline.rst Log: Specify what kind of warning -3 emits. Modified: python/trunk/Doc/using/cmdline.rst ============================================================================== --- python/trunk/Doc/using/cmdline.rst (original) +++ python/trunk/Doc/using/cmdline.rst Sun Feb 24 00:43:01 2008 @@ -326,6 +326,8 @@ * :func:`reduce` * :func:`reload` + Using these will emit a :exc:`DeprecationWarning`. + .. versionadded:: 2.6 From python-checkins at python.org Sun Feb 24 00:59:45 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 24 Feb 2008 00:59:45 +0100 (CET) Subject: [Python-checkins] r61033 - python/trunk/Python/import.c Message-ID: <20080223235945.EDEA31E4016@bag.python.org> Author: christian.heimes Date: Sun Feb 24 00:59:45 2008 New Revision: 61033 Modified: python/trunk/Python/import.c Log: MS Windows doesn't have mode_t but stat.st_mode is defined as unsigned short. Modified: python/trunk/Python/import.c ============================================================================== --- python/trunk/Python/import.c (original) +++ python/trunk/Python/import.c Sun Feb 24 00:59:45 2008 @@ -22,6 +22,11 @@ extern "C" { #endif +#ifdef MS_WINDOWS +/* for stat.st_mode */ +typedef unsigned short mode_t; +#endif + extern time_t PyOS_GetLastModificationTime(char *, FILE *); /* In getmtime.c */ From python-checkins at python.org Sun Feb 24 01:03:23 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 01:03:23 +0100 (CET) Subject: [Python-checkins] r61034 - in python/trunk: Lib/httplib.py Lib/test/test_httplib.py Misc/NEWS Message-ID: <20080224000323.2A9DC1E4023@bag.python.org> Author: georg.brandl Date: Sun Feb 24 01:03:22 2008 New Revision: 61034 Modified: python/trunk/Lib/httplib.py python/trunk/Lib/test/test_httplib.py python/trunk/Misc/NEWS Log: #900744: If an invalid chunked-encoding header is sent by a server, httplib will now raise IncompleteRead and close the connection instead of raising ValueError. Modified: python/trunk/Lib/httplib.py ============================================================================== --- python/trunk/Lib/httplib.py (original) +++ python/trunk/Lib/httplib.py Sun Feb 24 01:03:22 2008 @@ -546,7 +546,13 @@ i = line.find(';') if i >= 0: line = line[:i] # strip chunk-extensions - chunk_left = int(line, 16) + try: + chunk_left = int(line, 16) + except ValueError: + # close the connection as protocol synchronisation is + # probably lost + self.close() + raise IncompleteRead(value) if chunk_left == 0: break if amt is None: Modified: python/trunk/Lib/test/test_httplib.py ============================================================================== --- python/trunk/Lib/test/test_httplib.py (original) +++ python/trunk/Lib/test/test_httplib.py Sun Feb 24 01:03:22 2008 @@ -156,6 +156,35 @@ conn.request('GET', '/foo', body) self.assertTrue(sock.data.startswith(expected)) + def test_chunked(self): + chunked_start = ( + 'HTTP/1.1 200 OK\r\n' + 'Transfer-Encoding: chunked\r\n\r\n' + 'a\r\n' + 'hello worl\r\n' + '1\r\n' + 'd\r\n' + ) + sock = FakeSocket(chunked_start + '0\r\n') + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + self.assertEquals(resp.read(), 'hello world') + resp.close() + + for x in ('', 'foo\r\n'): + sock = FakeSocket(chunked_start + x) + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + try: + resp.read() + except httplib.IncompleteRead, i: + self.assertEquals(i.partial, 'hello world') + else: + self.fail('IncompleteRead expected') + finally: + resp.close() + + class OfflineTest(TestCase): def test_responses(self): self.assertEquals(httplib.responses[httplib.NOT_FOUND], "Not Found") Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 24 01:03:22 2008 @@ -441,6 +441,10 @@ Library ------- +- #900744: If an invalid chunked-encoding header is sent by a server, + httplib will now raise IncompleteRead and close the connection instead + of raising ValueError. + - #1492: The content type of BaseHTTPServer error messages can now be overridden. From python-checkins at python.org Sun Feb 24 01:14:24 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 01:14:24 +0100 (CET) Subject: [Python-checkins] r61035 - in python/trunk: Lib/httplib.py Lib/test/test_httplib.py Misc/NEWS Message-ID: <20080224001424.7C13F1E4019@bag.python.org> Author: georg.brandl Date: Sun Feb 24 01:14:24 2008 New Revision: 61035 Modified: python/trunk/Lib/httplib.py python/trunk/Lib/test/test_httplib.py python/trunk/Misc/NEWS Log: #1627: httplib now ignores negative Content-Length headers. Modified: python/trunk/Lib/httplib.py ============================================================================== --- python/trunk/Lib/httplib.py (original) +++ python/trunk/Lib/httplib.py Sun Feb 24 01:14:24 2008 @@ -438,6 +438,9 @@ self.length = int(length) except ValueError: self.length = None + else: + if self.length < 0: # ignore nonsensical negative lengths + self.length = None else: self.length = None Modified: python/trunk/Lib/test/test_httplib.py ============================================================================== --- python/trunk/Lib/test/test_httplib.py (original) +++ python/trunk/Lib/test/test_httplib.py Sun Feb 24 01:14:24 2008 @@ -184,6 +184,13 @@ finally: resp.close() + def test_negative_content_length(self): + sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: -1\r\n\r\nHello\r\n') + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + self.assertEquals(resp.read(), 'Hello\r\n') + resp.close() + class OfflineTest(TestCase): def test_responses(self): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Feb 24 01:14:24 2008 @@ -441,6 +441,8 @@ Library ------- +- #1627: httplib now ignores negative Content-Length headers. + - #900744: If an invalid chunked-encoding header is sent by a server, httplib will now raise IncompleteRead and close the connection instead of raising ValueError. From buildbot at python.org Sun Feb 24 01:40:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 00:40:26 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 2.5 Message-ID: <20080224004026.BF6031E4016@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%202.5/builds/460 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_resource test_signal test_socket sincerely, -The Buildbot From buildbot at python.org Sun Feb 24 02:50:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 01:50:26 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD 2.5 Message-ID: <20080224015026.F28E21E4020@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%202.5/builds/149 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource sincerely, -The Buildbot From buildbot at python.org Sun Feb 24 02:51:50 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 01:51:50 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu 2.5 Message-ID: <20080224015150.72CB71E401D@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%202.5/builds/53 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 24 03:20:25 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 03:20:25 +0100 (CET) Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c Message-ID: <20080224022025.BB39E1E4016@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 03:20:25 2008 New Revision: 61037 Modified: python/trunk/Python/bltinmodule.c Log: map(None, ...) is not supported in 3.0. Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Sun Feb 24 03:20:25 2008 @@ -909,9 +909,15 @@ func = PyTuple_GetItem(args, 0); n--; - if (func == Py_None && n == 1) { - /* map(None, S) is the same as list(S). */ - return PySequence_List(PyTuple_GetItem(args, 1)); + if (func == Py_None) { + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "map(None, ...) not supported in 3.x") < 0) + return NULL; + if (n == 1) { + /* map(None, S) is the same as list(S). */ + return PySequence_List(PyTuple_GetItem(args, 1)); + } } /* Get space for sequence descriptors. Must NULL out the iterator From python at rcn.com Sun Feb 24 03:28:51 2008 From: python at rcn.com (Raymond Hettinger) Date: Sat, 23 Feb 2008 18:28:51 -0800 Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c References: <20080224022025.BB39E1E4016@bag.python.org> Message-ID: <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> These messages should include transition recommendations where possible: map(None,...) is not supported in 3.x. Use zip() instead. sorted(seq, cmp, ...) is not supported in 3.x. Use key= instead. ----- Original Message ----- From: "neal.norwitz" To: Sent: Saturday, February 23, 2008 6:20 PM Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c > Author: neal.norwitz > Date: Sun Feb 24 03:20:25 2008 > New Revision: 61037 > > Modified: > python/trunk/Python/bltinmodule.c > Log: > map(None, ...) is not supported in 3.0. > > > Modified: python/trunk/Python/bltinmodule.c > ============================================================================== > --- python/trunk/Python/bltinmodule.c (original) > +++ python/trunk/Python/bltinmodule.c Sun Feb 24 03:20:25 2008 > @@ -909,9 +909,15 @@ > func = PyTuple_GetItem(args, 0); > n--; > > - if (func == Py_None && n == 1) { > - /* map(None, S) is the same as list(S). */ > - return PySequence_List(PyTuple_GetItem(args, 1)); > + if (func == Py_None) { > + if (Py_Py3kWarningFlag && > + PyErr_Warn(PyExc_DeprecationWarning, > + "map(None, ...) not supported in 3.x") < 0) > + return NULL; > + if (n == 1) { > + /* map(None, S) is the same as list(S). */ > + return PySequence_List(PyTuple_GetItem(args, 1)); > + } > } > > /* Get space for sequence descriptors. Must NULL out the iterator > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins From nnorwitz at gmail.com Sun Feb 24 03:34:28 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 18:34:28 -0800 Subject: [Python-checkins] r60927 - python/trunk/Lib/UserDict.py python/trunk/Lib/shelve.py In-Reply-To: <20080221192454.3BAAA1E4010@bag.python.org> References: <20080221192454.3BAAA1E4010@bag.python.org> Message-ID: This change looks like it causes a bunch of failures in test_shelve of the form below. (ie, for dbm and gdbm). It looks like neither of these modules implements __contains__. I wonder how many more sequences/mappings we have that don't support __contains__. n -- ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/home/pybot/buildarea/trunk.klose-ubuntu-sparc/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'gdbm.gdbm' is not iterable and ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable On Thu, Feb 21, 2008 at 11:24 AM, raymond.hettinger wrote: > Author: raymond.hettinger > Date: Thu Feb 21 20:24:53 2008 > New Revision: 60927 > > Modified: > python/trunk/Lib/UserDict.py > python/trunk/Lib/shelve.py > Log: > Update more instances of has_key(). > > Modified: python/trunk/Lib/UserDict.py > ============================================================================== > --- python/trunk/Lib/UserDict.py (original) > +++ python/trunk/Lib/UserDict.py Thu Feb 21 20:24:53 2008 > @@ -41,7 +41,7 @@ > def iterkeys(self): return self.data.iterkeys() > def itervalues(self): return self.data.itervalues() > def values(self): return self.data.values() > - def has_key(self, key): return self.data.has_key(key) > + def has_key(self, key): return key in self.data > def update(self, dict=None, **kwargs): > if dict is None: > pass > @@ -59,7 +59,7 @@ > return failobj > return self[key] > def setdefault(self, key, failobj=None): > - if not self.has_key(key): > + if key not in self: > self[key] = failobj > return self[key] > def pop(self, key, *args): > > Modified: python/trunk/Lib/shelve.py > ============================================================================== > --- python/trunk/Lib/shelve.py (original) > +++ python/trunk/Lib/shelve.py Thu Feb 21 20:24:53 2008 > @@ -95,13 +95,13 @@ > return len(self.dict) > > def has_key(self, key): > - return self.dict.has_key(key) > + return key in self.dict > > def __contains__(self, key): > - return self.dict.has_key(key) > + return key in self.dict > > def get(self, key, default=None): > - if self.dict.has_key(key): > + if key in self.dict: > return self[key] > return default > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From python-checkins at python.org Sun Feb 24 03:39:15 2008 From: python-checkins at python.org (andrew.kuchling) Date: Sun, 24 Feb 2008 03:39:15 +0100 (CET) Subject: [Python-checkins] r61039 - python/trunk/Doc/howto/regex.rst Message-ID: <20080224023915.4D6401E4016@bag.python.org> Author: andrew.kuchling Date: Sun Feb 24 03:39:15 2008 New Revision: 61039 Modified: python/trunk/Doc/howto/regex.rst Log: Remove stray word Modified: python/trunk/Doc/howto/regex.rst ============================================================================== --- python/trunk/Doc/howto/regex.rst (original) +++ python/trunk/Doc/howto/regex.rst Sun Feb 24 03:39:15 2008 @@ -203,7 +203,7 @@ | | | ``bc``. | +------+-----------+---------------------------------+ | 6 | ``abcb`` | Try ``b`` again. This time | -| | | but the character at the | +| | | the character at the | | | | current position is ``'b'``, so | | | | it succeeds. | +------+-----------+---------------------------------+ From python-checkins at python.org Sun Feb 24 03:40:58 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 03:40:58 +0100 (CET) Subject: [Python-checkins] r61040 - python/trunk/Python/bltinmodule.c Message-ID: <20080224024058.B62391E4016@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 03:40:58 2008 New Revision: 61040 Modified: python/trunk/Python/bltinmodule.c Log: Add a little info to the 3k deprecation warnings about what to use instead. Suggested by Raymond Hettinger. Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Sun Feb 24 03:40:58 2008 @@ -166,7 +166,7 @@ if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "apply() not supported in 3.x") < 0) + "apply() not supported in 3.x. Use func(*args, **kwargs).") < 0) return NULL; if (!PyArg_UnpackTuple(args, "apply", 1, 3, &func, &alist, &kwdict)) @@ -225,7 +225,7 @@ { if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "callable() not supported in 3.x") < 0) + "callable() not supported in 3.x. Use hasattr(o, '__call__').") < 0) return NULL; return PyBool_FromLong((long)PyCallable_Check(v)); } @@ -684,7 +684,7 @@ if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "execfile() not supported in 3.x") < 0) + "execfile() not supported in 3.x. Use exec().") < 0) return NULL; if (!PyArg_ParseTuple(args, "s|O!O:execfile", @@ -912,7 +912,7 @@ if (func == Py_None) { if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "map(None, ...) not supported in 3.x") < 0) + "map(None, ...) not supported in 3.x. Use list(...).") < 0) return NULL; if (n == 1) { /* map(None, S) is the same as list(S). */ From nnorwitz at gmail.com Sun Feb 24 03:41:31 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 18:41:31 -0800 Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c In-Reply-To: <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> References: <20080224022025.BB39E1E4016@bag.python.org> <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> Message-ID: On Sat, Feb 23, 2008 at 6:28 PM, Raymond Hettinger wrote: > These messages should include transition recommendations where possible: > > map(None,...) is not supported in 3.x. Use zip() instead. > sorted(seq, cmp, ...) is not supported in 3.x. Use key= instead. There doesn't seem to be a 3k warning for sort/sorted right now. That should be added. I updated the warnings in bltnmodule.c, but I'm sure more need to be added. n From nnorwitz at gmail.com Sun Feb 24 03:46:55 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 23 Feb 2008 18:46:55 -0800 Subject: [Python-checkins] r60646 - python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c In-Reply-To: <20080207171530.803451E4026@bag.python.org> References: <20080207171530.803451E4026@bag.python.org> Message-ID: The format strings should use PY_FORMAT_SIZE_T instead of "z". See Include/pyport.h for the details. I'm not sure how many other places we are using %zd etc, but those should be fixed. n -- On Thu, Feb 7, 2008 at 9:15 AM, christian.heimes wrote: > Author: christian.heimes > Date: Thu Feb 7 18:15:30 2008 > New Revision: 60646 > > Modified: > python/trunk/Objects/dictobject.c > python/trunk/Objects/listobject.c > Log: > Added some statistics code to dict and list object code. I wanted to test how a larger freelist affects the reusage of freed objects. Contrary to my gut feelings 80 objects is more than fine for small apps. I haven't profiled a large app yet. > > Modified: python/trunk/Objects/dictobject.c > ============================================================================== > --- python/trunk/Objects/dictobject.c (original) > +++ python/trunk/Objects/dictobject.c Thu Feb 7 18:15:30 2008 > @@ -162,6 +162,22 @@ > } > #endif > > +/* Debug statistic to compare allocations with reuse through the free list */ > +#undef SHOW_ALLOC_COUNT > +#ifdef SHOW_ALLOC_COUNT > +static size_t count_alloc = 0; > +static size_t count_reuse = 0; > + > +static void > +show_alloc(void) > +{ > + fprintf(stderr, "Dict allocations: %zd\n", count_alloc); > + fprintf(stderr, "Dict reuse through freelist: %zd\n", count_reuse); > + fprintf(stderr, "%.2f%% reuse rate\n\n", > + (100.0*count_reuse/(count_alloc+count_reuse))); > +} > +#endif > + > /* Initialization macros. > There are two ways to create a dict: PyDict_New() is the main C API > function, and the tp_new slot maps to dict_new(). In the latter case we > @@ -200,6 +216,9 @@ > #ifdef SHOW_CONVERSION_COUNTS > Py_AtExit(show_counts); > #endif > +#ifdef SHOW_ALLOC_COUNT > + Py_AtExit(show_alloc); > +#endif > } > if (numfree) { > mp = free_list[--numfree]; > @@ -212,11 +231,17 @@ > assert (mp->ma_used == 0); > assert (mp->ma_table == mp->ma_smalltable); > assert (mp->ma_mask == PyDict_MINSIZE - 1); > +#ifdef SHOW_ALLOC_COUNT > + count_reuse++; > +#endif > } else { > mp = PyObject_GC_New(PyDictObject, &PyDict_Type); > if (mp == NULL) > return NULL; > EMPTY_TO_MINSIZE(mp); > +#ifdef SHOW_ALLOC_COUNT > + count_alloc++; > +#endif > } > mp->ma_lookup = lookdict_string; > #ifdef SHOW_CONVERSION_COUNTS > > Modified: python/trunk/Objects/listobject.c > ============================================================================== > --- python/trunk/Objects/listobject.c (original) > +++ python/trunk/Objects/listobject.c Thu Feb 7 18:15:30 2008 > @@ -63,6 +63,22 @@ > return 0; > } > > +/* Debug statistic to compare allocations with reuse through the free list */ > +#undef SHOW_ALLOC_COUNT > +#ifdef SHOW_ALLOC_COUNT > +static size_t count_alloc = 0; > +static size_t count_reuse = 0; > + > +static void > +show_alloc(void) > +{ > + fprintf(stderr, "List allocations: %zd\n", count_alloc); > + fprintf(stderr, "List reuse through freelist: %zd\n", count_reuse); > + fprintf(stderr, "%.2f%% reuse rate\n\n", > + (100.0*count_reuse/(count_alloc+count_reuse))); > +} > +#endif > + > /* Empty list reuse scheme to save calls to malloc and free */ > #ifndef PyList_MAXFREELIST > #define PyList_MAXFREELIST 80 > @@ -88,6 +104,13 @@ > { > PyListObject *op; > size_t nbytes; > +#ifdef SHOW_ALLOC_COUNT > + static int initialized = 0; > + if (!initialized) { > + Py_AtExit(show_alloc); > + initialized = 1; > + } > +#endif > > if (size < 0) { > PyErr_BadInternalCall(); > @@ -101,10 +124,16 @@ > numfree--; > op = free_list[numfree]; > _Py_NewReference((PyObject *)op); > +#ifdef SHOW_ALLOC_COUNT > + count_reuse++; > +#endif > } else { > op = PyObject_GC_New(PyListObject, &PyList_Type); > if (op == NULL) > return NULL; > +#ifdef SHOW_ALLOC_COUNT > + count_alloc++; > +#endif > } > if (size <= 0) > op->ob_item = NULL; > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From buildbot at python.org Sun Feb 24 04:04:09 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 03:04:09 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 2.5 Message-ID: <20080224030410.205F51E4016@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%202.5/builds/31 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling,martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_resource make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Sun Feb 24 04:17:22 2008 From: python-checkins at python.org (facundo.batista) Date: Sun, 24 Feb 2008 04:17:22 +0100 (CET) Subject: [Python-checkins] r61041 - in python/trunk: Lib/test/string_tests.py Lib/test/test_format.py Objects/stringobject.c Objects/unicodeobject.c Message-ID: <20080224031722.3D1BD1E4016@bag.python.org> Author: facundo.batista Date: Sun Feb 24 04:17:21 2008 New Revision: 61041 Modified: python/trunk/Lib/test/string_tests.py python/trunk/Lib/test/test_format.py python/trunk/Objects/stringobject.c python/trunk/Objects/unicodeobject.c Log: Issue 1742669. Now %d accepts very big float numbers. Thanks Gabriel Genellina. Modified: python/trunk/Lib/test/string_tests.py ============================================================================== --- python/trunk/Lib/test/string_tests.py (original) +++ python/trunk/Lib/test/string_tests.py Sun Feb 24 04:17:21 2008 @@ -1033,7 +1033,14 @@ # unicode raises ValueError, str raises OverflowError self.checkraises((ValueError, OverflowError), '%c', '__mod__', ordinal) + longvalue = sys.maxint + 10L + slongvalue = str(longvalue) + if slongvalue[-1] in ("L","l"): slongvalue = slongvalue[:-1] self.checkequal(' 42', '%3ld', '__mod__', 42) + self.checkequal('42', '%d', '__mod__', 42L) + self.checkequal('42', '%d', '__mod__', 42.0) + self.checkequal(slongvalue, '%d', '__mod__', longvalue) + self.checkcall('%d', '__mod__', float(longvalue)) self.checkequal('0042.00', '%07.2f', '__mod__', 42) self.checkequal('0042.00', '%07.2F', '__mod__', 42) @@ -1043,6 +1050,8 @@ self.checkraises(TypeError, '%c', '__mod__', (None,)) self.checkraises(ValueError, '%(foo', '__mod__', {}) self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42)) + self.checkraises(TypeError, '%d', '__mod__', "42") # not numeric + self.checkraises(TypeError, '%d', '__mod__', (42+0j)) # no int/long conversion provided # argument names with properly nested brackets are supported self.checkequal('bar', '%((foo))s', '__mod__', {'(foo)': 'bar'}) Modified: python/trunk/Lib/test/test_format.py ============================================================================== --- python/trunk/Lib/test/test_format.py (original) +++ python/trunk/Lib/test/test_format.py Sun Feb 24 04:17:21 2008 @@ -11,7 +11,7 @@ overflowok = 1 overflowrequired = 0 -def testformat(formatstr, args, output=None): +def testformat(formatstr, args, output=None, limit=None): if verbose: if output: print "%s %% %s =? %s ..." %\ @@ -31,7 +31,18 @@ print 'no' print "overflow expected on %s %% %s" % \ (repr(formatstr), repr(args)) - elif output and result != output: + elif output and limit is None and result != output: + if verbose: + print 'no' + print "%s %% %s == %s != %s" % \ + (repr(formatstr), repr(args), repr(result), repr(output)) + # when 'limit' is specified, it determines how many characters + # must match exactly; lengths must always match. + # ex: limit=5, '12345678' matches '12345___' + # (mainly for floating point format tests for which an exact match + # can't be guaranteed due to rounding and representation errors) + elif output and limit is not None and ( + len(result)!=len(output) or result[:limit]!=output[:limit]): if verbose: print 'no' print "%s %% %s == %s != %s" % \ @@ -98,6 +109,7 @@ testboth("%.30d", big, "123456789012345678901234567890") testboth("%.31d", big, "0123456789012345678901234567890") testboth("%32.31d", big, " 0123456789012345678901234567890") +testboth("%d", float(big), "123456________________________", 6) big = 0x1234567890abcdef12345L # 21 hex digits testboth("%x", big, "1234567890abcdef12345") @@ -135,6 +147,7 @@ testboth("%#+027.23X", big, "+0X0001234567890ABCDEF12345") # same, except no 0 flag testboth("%#+27.23X", big, " +0X001234567890ABCDEF12345") +testboth("%x", float(big), "123456_______________", 6) big = 012345670123456701234567012345670L # 32 octal digits testboth("%o", big, "12345670123456701234567012345670") @@ -175,16 +188,19 @@ testboth("%034.33o", big, "0012345670123456701234567012345670") # base marker shouldn't change that testboth("%0#34.33o", big, "0012345670123456701234567012345670") +testboth("%o", float(big), "123456__________________________", 6) # Some small ints, in both Python int and long flavors). testboth("%d", 42, "42") testboth("%d", -42, "-42") testboth("%d", 42L, "42") testboth("%d", -42L, "-42") +testboth("%d", 42.0, "42") testboth("%#x", 1, "0x1") testboth("%#x", 1L, "0x1") testboth("%#X", 1, "0X1") testboth("%#X", 1L, "0X1") +testboth("%#x", 1.0, "0x1") testboth("%#o", 1, "01") testboth("%#o", 1L, "01") testboth("%#o", 0, "0") @@ -202,11 +218,13 @@ testboth("%x", -0x42, "-42") testboth("%x", 0x42L, "42") testboth("%x", -0x42L, "-42") +testboth("%x", float(0x42), "42") testboth("%o", 042, "42") testboth("%o", -042, "-42") testboth("%o", 042L, "42") testboth("%o", -042L, "-42") +testboth("%o", float(042), "42") # Test exception for unknown format characters if verbose: @@ -235,7 +253,7 @@ test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError, "unsupported format character '?' (0x3000) at index 5") -test_exc('%d', '1', TypeError, "int argument required, not str") +test_exc('%d', '1', TypeError, "%d format: a number is required, not str") test_exc('%g', '1', TypeError, "float argument required, not str") test_exc('no format', '1', TypeError, "not all arguments converted during string formatting") Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Sun Feb 24 04:17:21 2008 @@ -4585,6 +4585,7 @@ int prec = -1; int c = '\0'; int fill; + int isnumok; PyObject *v = NULL; PyObject *temp = NULL; char *pbuf; @@ -4786,23 +4787,52 @@ case 'X': if (c == 'i') c = 'd'; - if (PyLong_Check(v)) { - int ilen; - temp = _PyString_FormatLong(v, flags, - prec, c, &pbuf, &ilen); - len = ilen; - if (!temp) - goto error; - sign = 1; + isnumok = 0; + if (PyNumber_Check(v)) { + PyObject *iobj=NULL; + + if (PyInt_Check(v) || (PyLong_Check(v))) { + iobj = v; + Py_INCREF(iobj); + } + else { + iobj = PyNumber_Int(v); + if (iobj==NULL) iobj = PyNumber_Long(v); + } + if (iobj!=NULL) { + if (PyInt_Check(iobj)) { + isnumok = 1; + pbuf = formatbuf; + len = formatint(pbuf, + sizeof(formatbuf), + flags, prec, c, iobj); + Py_DECREF(iobj); + if (len < 0) + goto error; + sign = 1; + } + else if (PyLong_Check(iobj)) { + int ilen; + + isnumok = 1; + temp = _PyString_FormatLong(iobj, flags, + prec, c, &pbuf, &ilen); + Py_DECREF(iobj); + len = ilen; + if (!temp) + goto error; + sign = 1; + } + else { + Py_DECREF(iobj); + } + } } - else { - pbuf = formatbuf; - len = formatint(pbuf, - sizeof(formatbuf), - flags, prec, c, v); - if (len < 0) - goto error; - sign = 1; + if (!isnumok) { + PyErr_Format(PyExc_TypeError, + "%%%c format: a number is required, " + "not %.200s", c, Py_TYPE(v)->tp_name); + goto error; } if (flags & F_ZERO) fill = '0'; Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Sun Feb 24 04:17:21 2008 @@ -8334,6 +8334,7 @@ int prec = -1; Py_UNICODE c = '\0'; Py_UNICODE fill; + int isnumok; PyObject *v = NULL; PyObject *temp = NULL; Py_UNICODE *pbuf; @@ -8546,21 +8547,49 @@ case 'X': if (c == 'i') c = 'd'; - if (PyLong_Check(v)) { - temp = formatlong(v, flags, prec, c); - if (!temp) - goto onError; - pbuf = PyUnicode_AS_UNICODE(temp); - len = PyUnicode_GET_SIZE(temp); - sign = 1; + isnumok = 0; + if (PyNumber_Check(v)) { + PyObject *iobj=NULL; + + if (PyInt_Check(v) || (PyLong_Check(v))) { + iobj = v; + Py_INCREF(iobj); + } + else { + iobj = PyNumber_Int(v); + if (iobj==NULL) iobj = PyNumber_Long(v); + } + if (iobj!=NULL) { + if (PyInt_Check(iobj)) { + isnumok = 1; + pbuf = formatbuf; + len = formatint(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE), + flags, prec, c, iobj); + Py_DECREF(iobj); + if (len < 0) + goto onError; + sign = 1; + } + else if (PyLong_Check(iobj)) { + isnumok = 1; + temp = formatlong(iobj, flags, prec, c); + Py_DECREF(iobj); + if (!temp) + goto onError; + pbuf = PyUnicode_AS_UNICODE(temp); + len = PyUnicode_GET_SIZE(temp); + sign = 1; + } + else { + Py_DECREF(iobj); + } + } } - else { - pbuf = formatbuf; - len = formatint(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE), - flags, prec, c, v); - if (len < 0) + if (!isnumok) { + PyErr_Format(PyExc_TypeError, + "%%%c format: a number is required, " + "not %.200s", c, Py_TYPE(v)->tp_name); goto onError; - sign = 1; } if (flags & F_ZERO) fill = '0'; From buildbot at python.org Sun Feb 24 05:02:14 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 04:02:14 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080224040214.9C06D1E4016@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2909 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Sun Feb 24 05:25:44 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 24 Feb 2008 05:25:44 +0100 (CET) Subject: [Python-checkins] r61042 - peps/trunk/pep-3113.txt Message-ID: <20080224042544.951D41E401A@bag.python.org> Author: brett.cannon Date: Sun Feb 24 05:25:44 2008 New Revision: 61042 Modified: peps/trunk/pep-3113.txt Log: Minor typo. Modified: peps/trunk/pep-3113.txt ============================================================================== --- peps/trunk/pep-3113.txt (original) +++ peps/trunk/pep-3113.txt Sun Feb 24 05:25:44 2008 @@ -47,7 +47,7 @@ ``func_code`` attribute). But there is great difficulty when it comes to tuple parameters. The -existence of a tuple parameter is denoted by it name being made of a +existence of a tuple parameter is denoted by its name being made of a ``.`` and a number in the ``co_varnames`` attribute of the function's code object. This allows the tuple argument to be bound to a name that only the bytecode is aware of and cannot be typed in Python @@ -171,7 +171,7 @@ ------------- In certain instances tuple parameters can be useful. A common example -is code that expect a two-item tuple that represents a Cartesian +is code that expects a two-item tuple that represents a Cartesian point. While true it is nice to be able to have the unpacking of the x and y coordinates for you, the argument is that this small amount of practical usefulness is heavily outweighed by other issues pertaining From python-checkins at python.org Sun Feb 24 05:31:56 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 24 Feb 2008 05:31:56 +0100 (CET) Subject: [Python-checkins] r61043 - peps/trunk/pep-3108.txt Message-ID: <20080224043156.714BD1E402C@bag.python.org> Author: brett.cannon Date: Sun Feb 24 05:31:56 2008 New Revision: 61043 Modified: peps/trunk/pep-3108.txt Log: Add html package. Also update to reflect the removal of the User* modules. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Sun Feb 24 05:31:56 2008 @@ -222,6 +222,8 @@ + Easy to implement using a semaphore and a queue. + Cannot block on a lock attempt. + Not uniquely edited since its addition 15 years ago. + + Only useful with the 'sched' module. + + Not thread-safe. * repr @@ -302,6 +304,10 @@ + All functionality is supported by string interpolation. +* htmllib + + + Superceded by HTMLParser. + * ihooks + Undocumented. @@ -323,6 +329,12 @@ + Replaced by threading.Timer. + +* smgllib + + + Does not fully parse SGML. + + In the stdlib for support to htmllib which is slated for removal. + * stat + ``os.stat`` now returns a tuple with attributes. @@ -344,6 +356,15 @@ + Guido has previously supported the deprecation [#thread-deprecation]_. +* UserDict [done] + + + Not as useful since types can be a superclass. + + Useful bits moved to the 'collections' module. + +* UserList/UserString [done] + + + Not useful since types can be a superclass. + Modules to Rename ================= @@ -377,7 +398,6 @@ Cookie cookie copy_reg copyreg EasyDialogs easydialogs -HTMLParser htmlparser MacOS macos Nav nav PixMapWrapper pixmap_wrapper @@ -386,9 +406,6 @@ SocketServer socketserver Tix tix Tkinter tkinter -UserDict userdict -UserList userlist -UserString userstring ================== ================================================== @@ -490,6 +507,18 @@ API for both modules has no name conflict. + +html package +//////////// + +================== =============================== +Current Name Replacement Name +================== =============================== +HTMLParser html.parser +htmlentitydefs html.entities +================== =============================== + + http package //////////// From python-checkins at python.org Sun Feb 24 07:09:56 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 24 Feb 2008 07:09:56 +0100 (CET) Subject: [Python-checkins] r61044 - peps/trunk/pep-3108.txt Message-ID: <20080224060956.97A321E4012@bag.python.org> Author: brett.cannon Date: Sun Feb 24 07:09:56 2008 New Revision: 61044 Modified: peps/trunk/pep-3108.txt Log: Document the tk package. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Sun Feb 24 07:09:56 2008 @@ -533,8 +533,40 @@ .. [2] The ``http.server`` module can combine the specified modules safely as they have no naming conflicts. + + +tk package +////////// + +================== =============================== +Current Name Replacement Name +================== =============================== +Canvas tk.canvas +Dialog tk.dialog +FileDialog tk.filedialog [4]_ +FixTk tk._fix +ScrolledText tk.scrolledtext +SimpleDialog tk.simpledialog [5]_ +Tix tk.tix +Tkconstants tk.constants +Tkdnd tk.dnd +Tkinter tk.inter +tkColorChooser tk.colorchooser +tkCommonDialog tk.commondialog +tkFileDialog tk.filedialog [4]_ +tkFont tk.font +tkMessageBox tk.messagebox +tkSimpleDialog tk.simpledialog [5]_ +turtle tk.turtle +================== =============================== + +.. [4] ``tk.filedialog`` can safely combine ``FileDialog`` and ``tkFileDialog`` + as there are no naming conflicts. - +.. [5] ``tk.simpledialog`` can safely combine ``SimpleDialog`` and + ``tkSimpleDialog`` have no naming conflicts. + + xmlrpc package ////////////// From python-checkins at python.org Sun Feb 24 07:14:09 2008 From: python-checkins at python.org (brett.cannon) Date: Sun, 24 Feb 2008 07:14:09 +0100 (CET) Subject: [Python-checkins] r61045 - peps/trunk/pep-3108.txt Message-ID: <20080224061409.84E301E4012@bag.python.org> Author: brett.cannon Date: Sun Feb 24 07:14:09 2008 New Revision: 61045 Modified: peps/trunk/pep-3108.txt Log: Add an Open Issue about possibly removing Tkinter. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Sun Feb 24 07:14:09 2008 @@ -628,6 +628,16 @@ and hides the C implementation. +Removal of Tkinter +------------------ + +With so many other GUI options out there that are considered better +than Tkinter, it might be best to remove Tkinter from the stdlib and +make it an externally maintained package. That would also allow for +Tkinter to more closely follow Tcl/Tk's release schedule instead of +Python's. + + Rejected Ideas ============== From ncoghlan at gmail.com Sun Feb 24 07:17:57 2008 From: ncoghlan at gmail.com (Nick Coghlan) Date: Sun, 24 Feb 2008 16:17:57 +1000 Subject: [Python-checkins] r61029 - python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst In-Reply-To: <20080223232527.1CDFA1E4016@bag.python.org> References: <20080223232527.1CDFA1E4016@bag.python.org> Message-ID: <47C10C15.3030109@gmail.com> georg.brandl wrote: > Author: georg.brandl > Date: Sun Feb 24 00:25:26 2008 > New Revision: 61029 > > Modified: > python/trunk/Doc/library/thread.rst > python/trunk/Doc/library/threading.rst > Log: > Document import ./. threading issues. #1720705. > > > Modified: python/trunk/Doc/library/thread.rst > ============================================================================== > --- python/trunk/Doc/library/thread.rst (original) > +++ python/trunk/Doc/library/thread.rst Sun Feb 24 00:25:26 2008 > @@ -150,6 +150,11 @@ > exception will be received by an arbitrary thread. (When the :mod:`signal` > module is available, interrupts always go to the main thread.) > > +* The import machinery is not thread safe. In general, an import may not > + have the side effect of importing a module, and only the main thread > + should import modules. Imports within or caused by a thread other than > + the main thread isn't safe. Absolute rubbish - making importing modules thread safe is what the import lock is for (see test_threaded_import). The only thing that isn't safe is spawning a thread as a side effect of import and then waiting for that thread to do something (since it may be waiting to get the import lock, which the running thread currently holds). If we have C code doing unsafe imports we have to fix the C code, not warn everybody off from doing imports outside the main thread. Similarly if there are crashers at interpreter shutdown. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org From buildbot at python.org Sun Feb 24 08:13:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 07:13:19 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080224071320.115A51E4012@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/101 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista BUILD FAILED: failed svn sincerely, -The Buildbot From python-checkins at python.org Sun Feb 24 08:21:57 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 08:21:57 +0100 (CET) Subject: [Python-checkins] r61046 - python/trunk/Modules/_ctypes/_ctypes_test.c Message-ID: <20080224072157.0644B1E4012@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 08:21:56 2008 New Revision: 61046 Modified: python/trunk/Modules/_ctypes/_ctypes_test.c Log: Get ctypes working on the Alpha (Tru64). The problem was that there were two module_methods and the one used depended on the order the modules were loaded. By making the test module_methods static, it is not exported and the correct version is picked up. Modified: python/trunk/Modules/_ctypes/_ctypes_test.c ============================================================================== --- python/trunk/Modules/_ctypes/_ctypes_test.c (original) +++ python/trunk/Modules/_ctypes/_ctypes_test.c Sun Feb 24 08:21:56 2008 @@ -411,7 +411,7 @@ return 0; } -PyMethodDef module_methods[] = { +static PyMethodDef module_methods[] = { /* {"get_last_tf_arg_s", get_last_tf_arg_s, METH_NOARGS}, {"get_last_tf_arg_u", get_last_tf_arg_u, METH_NOARGS}, */ From python-checkins at python.org Sun Feb 24 08:59:59 2008 From: python-checkins at python.org (georg.brandl) Date: Sun, 24 Feb 2008 08:59:59 +0100 (CET) Subject: [Python-checkins] r61047 - doctools/trunk/sphinx/builder.py Message-ID: <20080224075959.C8E131E4012@bag.python.org> Author: georg.brandl Date: Sun Feb 24 08:59:59 2008 New Revision: 61047 Modified: doctools/trunk/sphinx/builder.py Log: Use a list. Modified: doctools/trunk/sphinx/builder.py ============================================================================== --- doctools/trunk/sphinx/builder.py (original) +++ doctools/trunk/sphinx/builder.py Sun Feb 24 08:59:59 2008 @@ -448,7 +448,7 @@ # copy static files self.info(bold('copying static files...')) ensuredir(path.join(self.outdir, 'static')) - staticdirnames = path.join(path.dirname(__file__), 'static') + \ + staticdirnames = [path.join(path.dirname(__file__), 'static')] + \ self.config.html_static_path for staticdirname in staticdirnames: for filename in os.listdir(staticdirname): From python-checkins at python.org Sun Feb 24 09:27:50 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 09:27:50 +0100 (CET) Subject: [Python-checkins] r61048 - in python/trunk: Misc/cheatsheet Modules/future_builtins.c Message-ID: <20080224082750.185421E4012@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 09:27:49 2008 New Revision: 61048 Modified: python/trunk/Misc/cheatsheet python/trunk/Modules/future_builtins.c Log: Fix typo of hexidecimal Modified: python/trunk/Misc/cheatsheet ============================================================================== --- python/trunk/Misc/cheatsheet (original) +++ python/trunk/Misc/cheatsheet Sun Feb 24 09:27:49 2008 @@ -565,8 +565,8 @@ i Signed integer decimal. o Unsigned octal. u Unsigned decimal. -x Unsigned hexidecimal (lowercase). -X Unsigned hexidecimal (uppercase). +x Unsigned hexadecimal (lowercase). +X Unsigned hexadecimal (uppercase). e Floating point exponential format (lowercase). E Floating point exponential format (uppercase). f Floating point decimal format. Modified: python/trunk/Modules/future_builtins.c ============================================================================== --- python/trunk/Modules/future_builtins.c (original) +++ python/trunk/Modules/future_builtins.c Sun Feb 24 09:27:49 2008 @@ -14,7 +14,7 @@ \n\ Functions:\n\ \n\ -hex(arg) -- Returns the hexidecimal representation of an integer\n\ +hex(arg) -- Returns the hexadecimal representation of an integer\n\ oct(arg) -- Returns the octal representation of an integer\n\ \n\ The typical usage of this module is to replace existing builtins in a\n\ From nnorwitz at gmail.com Sun Feb 24 09:39:37 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 00:39:37 -0800 Subject: [Python-checkins] r60860 - python/trunk/Modules/_struct.c python/trunk/Modules/cStringIO.c In-Reply-To: <20080216143457.592371E400F@bag.python.org> References: <20080216143457.592371E400F@bag.python.org> Message-ID: Amaury, Can you add test cases for both of these fixes? Thanks, n -- On Sat, Feb 16, 2008 at 6:34 AM, amaury.forgeotdarc wrote: > Author: amaury.forgeotdarc > Date: Sat Feb 16 15:34:57 2008 > New Revision: 60860 > > Modified: > python/trunk/Modules/_struct.c > python/trunk/Modules/cStringIO.c > Log: > Crashers of the day: Py_CLEAR must be used when there is a chance that the > function can be called recursively. > This was discussed in issue1020188. > > In python codebase, all occurrences of Py_[X]DECREF(xxx->yyy) are suspect, > except when they appear in tp_new or tp_dealloc functions, or when > the member cannot be of a user-defined class. > Note that tp_init is not safe. > > I do have a (crashing) example for every changed line. > Is it worth adding them to the test suite? > > Example: > > class SpecialStr(str): > def __del__(self): > s.close() > > import cStringIO > s = cStringIO.StringIO(SpecialStr("text")) > s.close() # Segfault > > > > Modified: python/trunk/Modules/_struct.c > ============================================================================== > --- python/trunk/Modules/_struct.c (original) > +++ python/trunk/Modules/_struct.c Sat Feb 16 15:34:57 2008 > @@ -1471,7 +1471,7 @@ > return -1; > > Py_INCREF(o_format); > - Py_XDECREF(soself->s_format); > + Py_CLEAR(soself->s_format); > soself->s_format = o_format; > > ret = prepare_s(soself); > > Modified: python/trunk/Modules/cStringIO.c > ============================================================================== > --- python/trunk/Modules/cStringIO.c (original) > +++ python/trunk/Modules/cStringIO.c Sat Feb 16 15:34:57 2008 > @@ -575,8 +575,7 @@ > > static PyObject * > I_close(Iobject *self, PyObject *unused) { > - Py_XDECREF(self->pbuf); > - self->pbuf = NULL; > + Py_CLEAR(self->pbuf); > self->buf = NULL; > > self->pos = self->string_size = 0; > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From nnorwitz at gmail.com Sun Feb 24 10:08:40 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 04:08:40 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20080224090840.GA26093@python.psfb.org> 307 tests OK. 1 test failed: test_compiler 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file test_unicode.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 307 tests OK. 1 test failed: test_compiler 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [559522 refs] From nnorwitz at gmail.com Sun Feb 24 10:15:48 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 04:15:48 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080224091548.GA29064@python.psfb.org> 307 tests OK. 1 test failed: test_compiler 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_cn skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_hk test_codecmaps_hk skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_jp test_codecmaps_jp skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_kr test_codecmaps_kr skipped -- Use of the `urlfetch' resource not enabled test_codecmaps_tw test_codecmaps_tw skipped -- Use of the `urlfetch' resource not enabled test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 259, in funcdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file test_contextlib.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [10065 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_normalization skipped -- Use of the `urlfetch' resource not enabled test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 307 tests OK. 1 test failed: test_compiler 34 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_normalization test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [559117 refs] From buildbot at python.org Sun Feb 24 10:14:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 09:14:11 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080224091411.4F52E1E4012@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2588 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_compiler test_shelve test_smtplib ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 64, in compile gen.compile() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file fractions.py]') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From nnorwitz at gmail.com Sun Feb 24 11:35:05 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 05:35:05 -0500 Subject: [Python-checkins] Python Regression Test Failures all (2) Message-ID: <20080224103505.GA14813@python.psfb.org> 317 tests OK. 2 tests failed: test_bsddb3 test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test test_bsddb3 failed -- errors occurred; run in verbose mode for details test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file UserDict.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 317 tests OK. 2 tests failed: test_bsddb3 test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [571117 refs] From python-checkins at python.org Sun Feb 24 13:26:17 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 24 Feb 2008 13:26:17 +0100 (CET) Subject: [Python-checkins] r61049 - python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Message-ID: <20080224122617.0D81C1E4012@bag.python.org> Author: christian.heimes Date: Sun Feb 24 13:26:16 2008 New Revision: 61049 Modified: python/trunk/Objects/dictobject.c python/trunk/Objects/listobject.c Log: Use PY_FORMAT_SIZE_T instead of z for string formatting. Thanks Neal. Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Sun Feb 24 13:26:16 2008 @@ -171,8 +171,10 @@ static void show_alloc(void) { - fprintf(stderr, "Dict allocations: %zd\n", count_alloc); - fprintf(stderr, "Dict reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "Dict allocations: %" PY_FORMAT_SIZE_T "d\n", + count_alloc); + fprintf(stderr, "Dict reuse through freelist: %" PY_FORMAT_SIZE_T + "d\n", count_reuse); fprintf(stderr, "%.2f%% reuse rate\n\n", (100.0*count_reuse/(count_alloc+count_reuse))); } Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Sun Feb 24 13:26:16 2008 @@ -72,8 +72,10 @@ static void show_alloc(void) { - fprintf(stderr, "List allocations: %zd\n", count_alloc); - fprintf(stderr, "List reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "List allocations: %" PY_FORMAT_SIZE_T "d\n", + count_alloc); + fprintf(stderr, "List reuse through freelist: %" PY_FORMAT_SIZE_T + "d\n", count_reuse); fprintf(stderr, "%.2f%% reuse rate\n\n", (100.0*count_reuse/(count_alloc+count_reuse))); } From buildbot at python.org Sun Feb 24 14:13:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 13:13:20 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080224131320.3B6E21E4054@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/72 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed svn sincerely, -The Buildbot From lists at cheimes.de Sun Feb 24 15:31:22 2008 From: lists at cheimes.de (Christian Heimes) Date: Sun, 24 Feb 2008 15:31:22 +0100 Subject: [Python-checkins] r61029 - python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst In-Reply-To: <47C10C15.3030109@gmail.com> References: <20080223232527.1CDFA1E4016@bag.python.org> <47C10C15.3030109@gmail.com> Message-ID: <47C17FBA.5080707@cheimes.de> Nick Coghlan wrote: > If we have C code doing unsafe imports we have to fix the C code, not > warn everybody off from doing imports outside the main thread. Similarly > if there are crashers at interpreter shutdown. I implemented PyImport_ImportModuleNoBlock() to have safe imports in C code. The function tries to grap the module from sys.modules first without grabbing the import lock. If the module wasn't loaded before it uses the standard import modules *unless* a different thread holds the import lock. In the latter case it raises an exception. Christian From skip at pobox.com Sun Feb 24 18:12:04 2008 From: skip at pobox.com (skip at pobox.com) Date: Sun, 24 Feb 2008 11:12:04 -0600 Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c In-Reply-To: <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> References: <20080224022025.BB39E1E4016@bag.python.org> <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> Message-ID: <18369.42340.587882.417769@montanaro-dyndns-org.local> Raymond> map(None,...) is not supported in 3.x. Use zip() instead. It appears zip() in 3.x won't have any way of supporting map()'s behavior of extending the shorter argument(s) with None. If mention is made of using zip() instead of map() it should both mention this difference and suggest a hopefully easy way to get the old behavior. Skip From skip at pobox.com Sun Feb 24 18:15:02 2008 From: skip at pobox.com (skip at pobox.com) Date: Sun, 24 Feb 2008 11:15:02 -0600 Subject: [Python-checkins] r61037 - python/trunk/Python/bltinmodule.c In-Reply-To: <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> References: <20080224022025.BB39E1E4016@bag.python.org> <006901c8768c$ff111df0$6800a8c0@RaymondLaptop1> Message-ID: <18369.42518.205510.95677@montanaro-dyndns-org.local> Raymond> map(None,...) is not supported in 3.x. Use zip() instead. Skip> It appears zip() in 3.x won't have any way of supporting map()'s Skip> behavior ... Nevermind. I completely missed the fact that it was only one use of map() which is missing in 3.x. S From python-checkins at python.org Sun Feb 24 19:12:37 2008 From: python-checkins at python.org (mark.dickinson) Date: Sun, 24 Feb 2008 19:12:37 +0100 (CET) Subject: [Python-checkins] r61051 - python/trunk/Lib/decimal.py Message-ID: <20080224181237.1EB9A1E4012@bag.python.org> Author: mark.dickinson Date: Sun Feb 24 19:12:36 2008 New Revision: 61051 Modified: python/trunk/Lib/decimal.py Log: Remove duplicate 'import re' in decimal.py Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Sun Feb 24 19:12:36 2008 @@ -5212,8 +5212,7 @@ ##### crud for parsing strings ############################################# -import re - +# # Regular expression used for parsing numeric strings. Additional # comments: # From python-checkins at python.org Sun Feb 24 19:47:04 2008 From: python-checkins at python.org (neal.norwitz) Date: Sun, 24 Feb 2008 19:47:04 +0100 (CET) Subject: [Python-checkins] r61052 - in python/trunk/Lib: bsddb/test/test_associate.py bsddb/test/test_basics.py bsddb/test/test_compare.py bsddb/test/test_cursor_pget_bug.py bsddb/test/test_dbobj.py bsddb/test/test_dbshelve.py bsddb/test/test_dbtables.py bsddb/test/test_env_close.py bsddb/test/test_join.py bsddb/test/test_lock.py bsddb/test/test_misc.py bsddb/test/test_pickle.py bsddb/test/test_recno.py bsddb/test/test_sequence.py bsddb/test/test_thread.py test/test_bsddb3.py test/test_support.py Message-ID: <20080224184704.4758C1E4012@bag.python.org> Author: neal.norwitz Date: Sun Feb 24 19:47:03 2008 New Revision: 61052 Modified: python/trunk/Lib/bsddb/test/test_associate.py python/trunk/Lib/bsddb/test/test_basics.py python/trunk/Lib/bsddb/test/test_compare.py python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py python/trunk/Lib/bsddb/test/test_dbobj.py python/trunk/Lib/bsddb/test/test_dbshelve.py python/trunk/Lib/bsddb/test/test_dbtables.py python/trunk/Lib/bsddb/test/test_env_close.py python/trunk/Lib/bsddb/test/test_join.py python/trunk/Lib/bsddb/test/test_lock.py python/trunk/Lib/bsddb/test/test_misc.py python/trunk/Lib/bsddb/test/test_pickle.py python/trunk/Lib/bsddb/test/test_recno.py python/trunk/Lib/bsddb/test/test_sequence.py python/trunk/Lib/bsddb/test/test_thread.py python/trunk/Lib/test/test_bsddb3.py python/trunk/Lib/test/test_support.py Log: Create a db_home directory with a unique name so multiple users can run the test simultaneously. The simplest thing I found that worked on both Windows and Unix was to use the PID. It's unique so should be sufficient. This should prevent many of the spurious failures of the automated tests since they run as different users. Also cleanup the directory consistenly in the tearDown methods. It would be nice if someone ensured that the directories are always created with a consistent name. Modified: python/trunk/Lib/bsddb/test/test_associate.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_associate.py (original) +++ python/trunk/Lib/bsddb/test/test_associate.py Sun Feb 24 19:47:03 2008 @@ -91,7 +91,7 @@ class AssociateErrorTestCase(unittest.TestCase): def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -106,11 +106,8 @@ def tearDown(self): self.env.close() self.env = None - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - + from test import test_support + test_support.rmtree(self.homeDir) def test00_associateDBError(self): if verbose: @@ -151,7 +148,7 @@ def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) Modified: python/trunk/Lib/bsddb/test/test_basics.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_basics.py (original) +++ python/trunk/Lib/bsddb/test/test_basics.py Sun Feb 24 19:47:03 2008 @@ -5,10 +5,10 @@ import os import errno -import shutil import string import tempfile from pprint import pprint +from test import test_support import unittest import time @@ -53,13 +53,9 @@ def setUp(self): if self.useEnv: - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir - try: - shutil.rmtree(homeDir) - except OSError, e: - # unix returns ENOENT, windows returns ESRCH - if e.errno not in (errno.ENOENT, errno.ESRCH): raise + test_support.rmtree(homeDir) os.mkdir(homeDir) try: self.env = db.DBEnv() @@ -73,7 +69,7 @@ tempfile.tempdir = None # Yes, a bare except is intended, since we're re-raising the exc. except: - shutil.rmtree(homeDir) + test_support.rmtree(homeDir) raise else: self.env = None @@ -97,8 +93,8 @@ def tearDown(self): self.d.close() if self.env is not None: + test_support.rmtree(self.homeDir) self.env.close() - shutil.rmtree(self.homeDir) ## Make a new DBEnv to remove the env files from the home dir. ## (It can't be done while the env is open, nor after it has been ## closed, so we make a new one to do it.) Modified: python/trunk/Lib/bsddb/test/test_compare.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_compare.py (original) +++ python/trunk/Lib/bsddb/test/test_compare.py Sun Feb 24 19:47:03 2008 @@ -52,7 +52,7 @@ def setUp (self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join (tempfile.gettempdir(), 'db_home') + homeDir = os.path.join (tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir (homeDir) @@ -70,8 +70,8 @@ if self.env is not None: self.env.close () self.env = None - import glob - map (os.remove, glob.glob (os.path.join (self.homeDir, '*'))) + from test import test_support + test_support.rmtree(self.homeDir) def addDataToDB (self, data): i = 0 Modified: python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py (original) +++ python/trunk/Lib/bsddb/test/test_cursor_pget_bug.py Sun Feb 24 19:47:03 2008 @@ -17,7 +17,7 @@ db_name = 'test-cursor_pget.db' def setUp(self): - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: @@ -42,9 +42,8 @@ del self.secondary_db del self.primary_db del self.env - for file in glob.glob(os.path.join(self.homeDir, '*')): - os.remove(file) - os.removedirs(self.homeDir) + from test import test_support + test_support.rmtree(self.homeDir) def test_pget(self): cursor = self.secondary_db.cursor() Modified: python/trunk/Lib/bsddb/test/test_dbobj.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbobj.py (original) +++ python/trunk/Lib/bsddb/test/test_dbobj.py Sun Feb 24 19:47:03 2008 @@ -1,7 +1,6 @@ import os, string import unittest -import glob import tempfile try: @@ -20,7 +19,7 @@ db_name = 'test-dbobj.db' def setUp(self): - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -30,9 +29,8 @@ del self.db if hasattr(self, 'env'): del self.env - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test01_both(self): class TestDBEnv(dbobj.DBEnv): pass Modified: python/trunk/Lib/bsddb/test/test_dbshelve.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbshelve.py (original) +++ python/trunk/Lib/bsddb/test/test_dbshelve.py Sun Feb 24 19:47:03 2008 @@ -245,7 +245,7 @@ class BasicEnvShelveTestCase(DBShelveTestCase): def do_open(self): self.homeDir = homeDir = os.path.join( - tempfile.gettempdir(), 'db_home') + tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(homeDir) except os.error: pass self.env = db.DBEnv() @@ -262,12 +262,9 @@ def tearDown(self): + from test import test_support + test_support.rmtree(self.homeDir) self.do_close() - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - class EnvBTreeShelveTestCase(BasicEnvShelveTestCase): Modified: python/trunk/Lib/bsddb/test/test_dbtables.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_dbtables.py (original) +++ python/trunk/Lib/bsddb/test/test_dbtables.py Sun Feb 24 19:47:03 2008 @@ -22,7 +22,6 @@ import os, re import tempfile -import shutil try: import cPickle pickle = cPickle @@ -58,7 +57,8 @@ def tearDown(self): self.tdb.close() - shutil.rmtree(self.testHomeDir) + from test import test_support + test_support.rmtree(self.testHomeDir) def test01(self): tabname = "test01" Modified: python/trunk/Lib/bsddb/test/test_env_close.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_env_close.py (original) +++ python/trunk/Lib/bsddb/test/test_env_close.py Sun Feb 24 19:47:03 2008 @@ -4,7 +4,6 @@ import os import tempfile -import glob import unittest try: @@ -32,7 +31,7 @@ class DBEnvClosedEarlyCrash(unittest.TestCase): def setUp(self): - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: pass tempfile.tempdir = self.homeDir @@ -40,10 +39,8 @@ tempfile.tempdir = None def tearDown(self): - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - + from test import test_support + test_support.rmtree(self.homeDir) def test01_close_dbenv_before_db(self): dbenv = db.DBEnv() Modified: python/trunk/Lib/bsddb/test/test_join.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_join.py (original) +++ python/trunk/Lib/bsddb/test/test_join.py Sun Feb 24 19:47:03 2008 @@ -47,7 +47,7 @@ def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -56,10 +56,8 @@ def tearDown(self): self.env.close() - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test01_join(self): if verbose: Modified: python/trunk/Lib/bsddb/test/test_lock.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_lock.py (original) +++ python/trunk/Lib/bsddb/test/test_lock.py Sun Feb 24 19:47:03 2008 @@ -2,7 +2,6 @@ TestCases for testing the locking sub-system. """ -import shutil import tempfile import time @@ -37,7 +36,8 @@ def tearDown(self): self.env.close() - shutil.rmtree(self.homeDir) + from test import test_support + test_support.rmtree(self.homeDir) def test01_simple(self): Modified: python/trunk/Lib/bsddb/test/test_misc.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_misc.py (original) +++ python/trunk/Lib/bsddb/test/test_misc.py Sun Feb 24 19:47:03 2008 @@ -17,7 +17,7 @@ class MiscTestCase(unittest.TestCase): def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -25,12 +25,9 @@ pass def tearDown(self): - try: - os.remove(self.filename) - except OSError: - pass - import shutil - shutil.rmtree(self.homeDir) + from test import test_support + test_support.unlink(self.filename) + test_support.rmtree(self.homeDir) def test01_badpointer(self): dbs = dbshelve.open(self.filename) Modified: python/trunk/Lib/bsddb/test/test_pickle.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_pickle.py (original) +++ python/trunk/Lib/bsddb/test/test_pickle.py Sun Feb 24 19:47:03 2008 @@ -7,7 +7,6 @@ cPickle = None import unittest import tempfile -import glob try: # For Pythons w/distutils pybsddb @@ -25,7 +24,7 @@ db_name = 'test-dbobj.db' def setUp(self): - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -35,9 +34,8 @@ del self.db if hasattr(self, 'env'): del self.env - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def _base_test_pickle_DBError(self, pickle): self.env = db.DBEnv() Modified: python/trunk/Lib/bsddb/test/test_recno.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_recno.py (original) +++ python/trunk/Lib/bsddb/test/test_recno.py Sun Feb 24 19:47:03 2008 @@ -24,12 +24,13 @@ class SimpleRecnoTestCase(unittest.TestCase): def setUp(self): self.filename = tempfile.mktemp() + self.homeDir = None def tearDown(self): - try: - os.remove(self.filename) - except OSError, e: - if e.errno <> errno.EEXIST: raise + from test import test_support + test_support.unlink(self.filename) + if self.homeDir: + test_support.rmtree(self.homeDir) def test01_basic(self): d = db.DB() @@ -202,7 +203,8 @@ just a line in the file, but you can set a different record delimiter if needed. """ - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) + self.homeDir = homeDir source = os.path.join(homeDir, 'test_recno.txt') if not os.path.isdir(homeDir): os.mkdir(homeDir) Modified: python/trunk/Lib/bsddb/test/test_sequence.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_sequence.py (original) +++ python/trunk/Lib/bsddb/test/test_sequence.py Sun Feb 24 19:47:03 2008 @@ -1,7 +1,6 @@ import unittest import os import tempfile -import glob try: # For Pythons w/distutils pybsddb @@ -13,7 +12,7 @@ class DBSequenceTest(unittest.TestCase): def setUp(self): self.int_32_max = 0x100000000 - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: @@ -38,9 +37,8 @@ self.dbenv.close() del self.dbenv - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test_get(self): self.seq = db.DBSequence(self.d, flags=0) Modified: python/trunk/Lib/bsddb/test/test_thread.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_thread.py (original) +++ python/trunk/Lib/bsddb/test/test_thread.py Sun Feb 24 19:47:03 2008 @@ -5,7 +5,6 @@ import sys import time import errno -import shutil import tempfile from random import random @@ -52,7 +51,7 @@ if verbose: dbutils._deadlock_VerboseFile = sys.stdout - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -69,12 +68,10 @@ self.d.open(self.filename, self.dbtype, self.dbopenflags|db.DB_CREATE) def tearDown(self): + from test import test_support + test_support.rmtree(self.homeDir) self.d.close() self.env.close() - try: - shutil.rmtree(self.homeDir) - except OSError, e: - if e.errno != errno.EEXIST: raise def setEnvOpts(self): pass Modified: python/trunk/Lib/test/test_bsddb3.py ============================================================================== --- python/trunk/Lib/test/test_bsddb3.py (original) +++ python/trunk/Lib/test/test_bsddb3.py Sun Feb 24 19:47:03 2008 @@ -2,10 +2,12 @@ """ Run all test cases. """ +import os import sys +import tempfile import time import unittest -from test.test_support import requires, verbose, run_unittest, unlink +from test.test_support import requires, verbose, run_unittest, unlink, rmtree # When running as a script instead of within the regrtest framework, skip the # requires test, since it's obvious we want to run them. @@ -85,6 +87,15 @@ # For invocation through regrtest def test_main(): run_unittest(suite()) + db_home = os.path.join(tempfile.gettempdir(), 'db_home') + # The only reason to remove db_home is in case if there is an old + # one lying around. This might be by a different user, so just + # ignore errors. We should always make a unique name now. + try: + rmtree(db_home) + except: + pass + rmtree('db_home%d' % os.getpid()) # For invocation as a script if __name__ == '__main__': Modified: python/trunk/Lib/test/test_support.py ============================================================================== --- python/trunk/Lib/test/test_support.py (original) +++ python/trunk/Lib/test/test_support.py Sun Feb 24 19:47:03 2008 @@ -9,6 +9,7 @@ import sys import os import os.path +import shutil import warnings import unittest @@ -64,6 +65,14 @@ except OSError: pass +def rmtree(path): + try: + shutil.rmtree(path) + except OSError, e: + # Unix returns ENOENT, Windows returns ESRCH. + if e.errno not in (errno.ENOENT, errno.ESRCH): + raise + def forget(modname): '''"Forget" a module was ever imported by removing it from sys.modules and deleting any .pyc and .pyo files.''' From nnorwitz at gmail.com Sun Feb 24 22:16:14 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 16:16:14 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20080224211614.GA11740@python.psfb.org> 313 tests OK. 1 test failed: test_compiler 28 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file urlparse.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [10065 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 313 tests OK. 1 test failed: test_compiler 28 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_gl test_imageop test_imgfile test_ioctl test_linuxaudiodev test_macostools test_ossaudiodev test_pep277 test_scriptpackages test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [559130 refs] From python-checkins at python.org Sun Feb 24 22:41:49 2008 From: python-checkins at python.org (eric.smith) Date: Sun, 24 Feb 2008 22:41:49 +0100 (CET) Subject: [Python-checkins] r61054 - python/trunk/Objects/stringlib/string_format.h Message-ID: <20080224214149.8C26C1E4012@bag.python.org> Author: eric.smith Date: Sun Feb 24 22:41:49 2008 New Revision: 61054 Modified: python/trunk/Objects/stringlib/string_format.h Log: Corrected assert to check for correct type in py3k. Modified: python/trunk/Objects/stringlib/string_format.h ============================================================================== --- python/trunk/Objects/stringlib/string_format.h (original) +++ python/trunk/Objects/stringlib/string_format.h Sun Feb 24 22:41:49 2008 @@ -494,7 +494,7 @@ goto done; #if PY_VERSION_HEX >= 0x03000000 - assert(PyString_Check(result)); + assert(PyUnicode_Check(result)); #else assert(PyString_Check(result) || PyUnicode_Check(result)); From nnorwitz at gmail.com Sun Feb 24 23:46:11 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Feb 2008 17:46:11 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080224224611.GA9538@python.psfb.org> 318 tests OK. 1 test failed: test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file UserDict.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 318 tests OK. 1 test failed: test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [571132 refs] From buildbot at python.org Sun Feb 24 23:27:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 22:27:55 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080224222755.DD3EC1E4012@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2592 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: eric.smith BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_compiler test_shelve test_smtplib ====================================================================== ERROR: testCompileLibrary (test.test_compiler.CompilerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 64, in compile gen.compile() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file fractions.py]') ====================================================================== ERROR: test_get (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestAsciiFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestBinaryFileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_get (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 271, in test_get self.assert_(d.get(self.other.keys()[0]) is None) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 104, in get if key in self.dict: TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_read (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 59, in test_read self.assert_(d.has_key(k)) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 98, in has_key return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable ====================================================================== ERROR: test_write (test.test_shelve.TestProto2FileShelve) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/mapping_tests.py", line 117, in test_write self.failIf(knownkey in d) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/shelve.py", line 101, in __contains__ return key in self.dict TypeError: argument of type 'dbm.dbm' is not iterable sincerely, -The Buildbot From python-checkins at python.org Sun Feb 24 23:48:06 2008 From: python-checkins at python.org (christian.heimes) Date: Sun, 24 Feb 2008 23:48:06 +0100 (CET) Subject: [Python-checkins] r61057 - python/trunk/Makefile.pre.in Message-ID: <20080224224806.255AE1E4026@bag.python.org> Author: christian.heimes Date: Sun Feb 24 23:48:05 2008 New Revision: 61057 Modified: python/trunk/Makefile.pre.in Log: Added dependency rules for Objects/stringlib/*.h stringobject, unicodeobject and the two formatters are rebuild whenever a header files changes Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Sun Feb 24 23:48:05 2008 @@ -517,27 +517,27 @@ Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h +STRINGLIB_HEADERS= \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/formatter.h \ + $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/stringdefs.h \ + $(srcdir)/Objects/stringlib/string_format.h \ + $(srcdir)/Objects/stringlib/unicodedefs.h + Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c \ - $(srcdir)/Objects/stringlib/string_format.h \ - $(srcdir)/Objects/stringlib/unicodedefs.h \ - $(srcdir)/Objects/stringlib/fastsearch.h \ - $(srcdir)/Objects/stringlib/count.h \ - $(srcdir)/Objects/stringlib/find.h \ - $(srcdir)/Objects/stringlib/partition.h + $(STRINGLIB_HEADERS) Objects/stringobject.o: $(srcdir)/Objects/stringobject.c \ - $(srcdir)/Objects/stringlib/string_format.h \ - $(srcdir)/Objects/stringlib/stringdefs.h \ - $(srcdir)/Objects/stringlib/fastsearch.h \ - $(srcdir)/Objects/stringlib/count.h \ - $(srcdir)/Objects/stringlib/find.h \ - $(srcdir)/Objects/stringlib/partition.h + $(STRINGLIB_HEADERS) Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \ - $(srcdir)/Objects/stringlib/formatter.h + $(STRINGLIB_HEADERS) Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \ - $(srcdir)/Objects/stringlib/formatter.h + $(STRINGLIB_HEADERS) ############################################################################ # Header files From buildbot at python.org Mon Feb 25 00:30:26 2008 From: buildbot at python.org (buildbot at python.org) Date: Sun, 24 Feb 2008 23:30:26 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080224233026.641E21E4012@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2916 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Mon Feb 25 02:45:38 2008 From: python-checkins at python.org (neal.norwitz) Date: Mon, 25 Feb 2008 02:45:38 +0100 (CET) Subject: [Python-checkins] r61058 - python/trunk/Python/compile.c python/trunk/Python/peephole.c Message-ID: <20080225014538.160711E4012@bag.python.org> Author: neal.norwitz Date: Mon Feb 25 02:45:37 2008 New Revision: 61058 Modified: python/trunk/Python/compile.c python/trunk/Python/peephole.c Log: Fix indentation Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Mon Feb 25 02:45:37 2008 @@ -2323,7 +2323,7 @@ return compiler_error(c, "can not assign to __debug__"); } -mangled = _Py_Mangle(c->u->u_private, name); + mangled = _Py_Mangle(c->u->u_private, name); if (!mangled) return 0; Modified: python/trunk/Python/peephole.c ============================================================================== --- python/trunk/Python/peephole.c (original) +++ python/trunk/Python/peephole.c Mon Feb 25 02:45:37 2008 @@ -317,7 +317,7 @@ if (codestr == NULL) goto exitUnchanged; codestr = (unsigned char *)memcpy(codestr, - PyString_AS_STRING(code), codelen); + PyString_AS_STRING(code), codelen); /* Verify that RETURN_VALUE terminates the codestring. This allows the various transformation patterns to look ahead several From python-checkins at python.org Mon Feb 25 06:33:08 2008 From: python-checkins at python.org (brett.cannon) Date: Mon, 25 Feb 2008 06:33:08 +0100 (CET) Subject: [Python-checkins] r61059 - python/trunk/Doc/library/logging.rst Message-ID: <20080225053308.7C6001E4012@bag.python.org> Author: brett.cannon Date: Mon Feb 25 06:33:07 2008 New Revision: 61059 Modified: python/trunk/Doc/library/logging.rst Log: Add minor markup for a string. Modified: python/trunk/Doc/library/logging.rst ============================================================================== --- python/trunk/Doc/library/logging.rst (original) +++ python/trunk/Doc/library/logging.rst Mon Feb 25 06:33:07 2008 @@ -245,8 +245,8 @@ little more verbose for logging messages than using the log level convenience methods listed above, but this is how to log at custom log levels. -:func:`getLogger` returns a reference to a logger instance with a name of name -if a name is provided, or root if not. The names are period-separated +:func:`getLogger` returns a reference to a logger instance with the specified +if it it is provided, or ``root`` if not. The names are period-separated hierarchical structures. Multiple calls to :func:`getLogger` with the same name will return a reference to the same logger object. Loggers that are further down in the hierarchical list are children of loggers higher up in the list. @@ -298,7 +298,7 @@ ^^^^^^^^^^ Formatter objects configure the final order, structure, and contents of the log -message. Unlike the base logging.Handler class, application code may +message. Unlike the base :class:`logging.Handler` class, application code may instantiate formatter classes, although you could likely subclass the formatter if your application needs special behavior. The constructor takes two optional arguments: a message format string and a date format string. If there is no From python-checkins at python.org Mon Feb 25 06:33:34 2008 From: python-checkins at python.org (brett.cannon) Date: Mon, 25 Feb 2008 06:33:34 +0100 (CET) Subject: [Python-checkins] r61060 - python/trunk/Lib/test/test_support.py Message-ID: <20080225053334.95FBE1E4012@bag.python.org> Author: brett.cannon Date: Mon Feb 25 06:33:33 2008 New Revision: 61060 Modified: python/trunk/Lib/test/test_support.py Log: Fix a minor typo in a docstring. Modified: python/trunk/Lib/test/test_support.py ============================================================================== --- python/trunk/Lib/test/test_support.py (original) +++ python/trunk/Lib/test/test_support.py Mon Feb 25 06:33:33 2008 @@ -105,7 +105,7 @@ def bind_port(sock, host='', preferred_port=54321): """Try to bind the sock to a port. If we are running multiple - tests and we don't try multiple ports, the test can fails. This + tests and we don't try multiple ports, the test can fail. This makes the test more robust.""" # Find some random ports that hopefully no one is listening on. From nnorwitz at gmail.com Mon Feb 25 11:43:16 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 25 Feb 2008 05:43:16 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20080225104316.GA11193@python.psfb.org> 318 tests OK. 1 test failed: test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aepack test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named macostools test_array test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_buffer test_bufio test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compiler test test_compiler failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.6/test/test_compiler.py", line 52, in testCompileLibrary compiler.compile(buf, basename, "exec") File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 64, in compile gen.compile() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 111, in compile tree = self._get_tree() File "/tmp/python-test/local/lib/python2.6/compiler/pycodegen.py", line 77, in _get_tree tree = parse(self.source, self.mode) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 51, in parse return Transformer().parsesuite(buf) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 124, in transform return self.compile_node(tree) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 157, in compile_node return self.file_input(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 188, in file_input self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 295, in classdef code = self.com_node(nodelist[-1]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 791, in com_node return self._dispatch[node[0]](node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 554, in suite self.com_append_stmt(stmts, node) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1079, in com_append_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 305, in stmt return self.com_stmt(nodelist[0]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 1072, in com_stmt result = self.lookup_node(node)(node[1:]) File "/tmp/python-test/local/lib/python2.6/compiler/transformer.py", line 784, in lookup_node return self._dispatch[node[0]] KeyError: (261, 'in file UserDict.py]') test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_errno test_exception_variations test_extcall test_fcntl test_file test_filecmp test_fileinput test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hexoct test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_imageop test_imageop skipped -- No module named imgfile test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_index test_inspect test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_largefile test_list test_locale test_logging test_long test_long_future test_longexp test_macostools test_macostools skipped -- No module named macostools test_macpath test_mailbox test_marshal test_math test_md5 test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser s_push: parser stack overflow test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_platform test_plistlib test_poll test_popen [8006 refs] [8006 refs] [8006 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_pyclbr test_pyexpat test_queue test_quopri [8383 refs] [8383 refs] test_random test_re test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site test_slice test_smtplib test_socket test_socket_ssl test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- cannot import name startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [8001 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8003 refs] [9926 refs] [8219 refs] [8003 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] [8001 refs] . [8001 refs] [8001 refs] this bit of output is from a test of stdout in a different process ... [8001 refs] [8001 refs] [8219 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [8001 refs] [8001 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [8006 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [11137 refs] test_threading_local test_threadsignals test_time test_timeout test_tokenize test_trace test_traceback test_transformer test_tuple test_typechecks test_ucn test_unary test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:472: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() /tmp/python-test/local/lib/python2.6/test/test_zipfile.py:399: DeprecationWarning: struct integer overflow masking is deprecated zipfp.close() test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zlib 318 tests OK. 1 test failed: test_compiler 20 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_gl test_imageop test_imgfile test_ioctl test_macostools test_pep277 test_scriptpackages test_startfile test_sunaudiodev test_tcl test_unicode_file test_winreg test_winsound test_zipfile64 1 skip unexpected on linux2: test_ioctl [571134 refs] From python-checkins at python.org Mon Feb 25 17:29:19 2008 From: python-checkins at python.org (andrew.kuchling) Date: Mon, 25 Feb 2008 17:29:19 +0100 (CET) Subject: [Python-checkins] r61063 - python/trunk/Lib/test/test_curses.py Message-ID: <20080225162919.591701E4007@bag.python.org> Author: andrew.kuchling Date: Mon Feb 25 17:29:19 2008 New Revision: 61063 Modified: python/trunk/Lib/test/test_curses.py Log: Move .setupterm() output so that we don't try to call endwin() if it fails Modified: python/trunk/Lib/test/test_curses.py ============================================================================== --- python/trunk/Lib/test/test_curses.py (original) +++ python/trunk/Lib/test/test_curses.py Mon Feb 25 17:29:19 2008 @@ -269,13 +269,12 @@ curses.wrapper(main) unit_tests() else: + # testing setupterm() inside initscr/endwin + # causes terminal breakage + curses.setupterm(fd=sys.__stdout__.fileno()) try: - # testing setupterm() inside initscr/endwin - # causes terminal breakage - curses.setupterm(fd=sys.__stdout__.fileno()) stdscr = curses.initscr() main(stdscr) finally: curses.endwin() - unit_tests() From python-checkins at python.org Mon Feb 25 17:29:58 2008 From: python-checkins at python.org (andrew.kuchling) Date: Mon, 25 Feb 2008 17:29:58 +0100 (CET) Subject: [Python-checkins] r61064 - python/trunk/Lib/curses/__init__.py Message-ID: <20080225162958.AD9F91E4007@bag.python.org> Author: andrew.kuchling Date: Mon Feb 25 17:29:58 2008 New Revision: 61064 Modified: python/trunk/Lib/curses/__init__.py Log: Use file descriptor for real stdout Modified: python/trunk/Lib/curses/__init__.py ============================================================================== --- python/trunk/Lib/curses/__init__.py (original) +++ python/trunk/Lib/curses/__init__.py Mon Feb 25 17:29:58 2008 @@ -15,6 +15,7 @@ from _curses import * from curses.wrapper import wrapper import os as _os +import sys as _sys # Some constants, most notably the ACS_* ones, are only added to the C # _curses module's dictionary after initscr() is called. (Some @@ -28,7 +29,8 @@ import _curses, curses # we call setupterm() here because it raises an error # instead of calling exit() in error cases. - setupterm(term=_os.environ.get("TERM", "unknown")) + setupterm(term=_os.environ.get("TERM", "unknown"), + fd=_sys.__stdout__.fileno()) stdscr = _curses.initscr() for key, value in _curses.__dict__.items(): if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'): From python-checkins at python.org Mon Feb 25 18:32:07 2008 From: python-checkins at python.org (christian.heimes) Date: Mon, 25 Feb 2008 18:32:07 +0100 (CET) Subject: [Python-checkins] r61065 - python/trunk/Include/longintrepr.h Message-ID: <20080225173207.8D5921E4029@bag.python.org> Author: christian.heimes Date: Mon Feb 25 18:32:07 2008 New Revision: 61065 Modified: python/trunk/Include/longintrepr.h Log: Thomas Herve explained to me that PyCrypto depends on the constants. I'm adding the aliases because C code for Python 2.x should compile under 2.6 as well. The aliases aren't available in Python 3.x though. Modified: python/trunk/Include/longintrepr.h ============================================================================== --- python/trunk/Include/longintrepr.h (original) +++ python/trunk/Include/longintrepr.h Mon Feb 25 18:32:07 2008 @@ -28,8 +28,13 @@ #define PyLong_BASE ((digit)1 << PyLong_SHIFT) #define PyLong_MASK ((int)(PyLong_BASE - 1)) +/* b/w compatibility with Python 2.5 */ +#define SHIFT PyLong_SHIFT +#define BASE PyLong_BASE +#define MASK PyLong_MASK + #if PyLong_SHIFT % 5 != 0 -#error "longobject.c requires that SHIFT be divisible by 5" +#error "longobject.c requires that PyLong_SHIFT be divisible by 5" #endif /* Long integer representation. From python-checkins at python.org Mon Feb 25 19:06:00 2008 From: python-checkins at python.org (facundo.batista) Date: Mon, 25 Feb 2008 19:06:00 +0100 (CET) Subject: [Python-checkins] r61067 - in python/trunk: Lib/compiler/ast.py Lib/compiler/transformer.py Lib/token.py Tools/compiler/ast.txt Message-ID: <20080225180600.836291E4012@bag.python.org> Author: facundo.batista Date: Mon Feb 25 19:06:00 2008 New Revision: 61067 Modified: python/trunk/Lib/compiler/ast.py python/trunk/Lib/compiler/transformer.py python/trunk/Lib/token.py python/trunk/Tools/compiler/ast.txt Log: Issue 2117. Update compiler module to handle class decorators. Thanks Thomas Herve Modified: python/trunk/Lib/compiler/ast.py ============================================================================== --- python/trunk/Lib/compiler/ast.py (original) +++ python/trunk/Lib/compiler/ast.py Mon Feb 25 19:06:00 2008 @@ -308,11 +308,12 @@ return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args)) class Class(Node): - def __init__(self, name, bases, doc, code, lineno=None): + def __init__(self, name, bases, doc, code, decorators = None, lineno=None): self.name = name self.bases = bases self.doc = doc self.code = code + self.decorators = decorators self.lineno = lineno def getChildren(self): @@ -321,16 +322,19 @@ children.extend(flatten(self.bases)) children.append(self.doc) children.append(self.code) + children.append(self.decorators) return tuple(children) def getChildNodes(self): nodelist = [] nodelist.extend(flatten_nodes(self.bases)) nodelist.append(self.code) + if self.decorators is not None: + nodelist.append(self.decorators) return tuple(nodelist) def __repr__(self): - return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code)) + return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators)) class Compare(Node): def __init__(self, expr, ops, lineno=None): Modified: python/trunk/Lib/compiler/transformer.py ============================================================================== --- python/trunk/Lib/compiler/transformer.py (original) +++ python/trunk/Lib/compiler/transformer.py Mon Feb 25 19:06:00 2008 @@ -232,6 +232,18 @@ items.append(self.decorator(dec_nodelist[1:])) return Decorators(items) + def decorated(self, nodelist): + assert nodelist[0][0] == symbol.decorators + if nodelist[1][0] == symbol.funcdef: + n = [nodelist[0]] + list(nodelist[1][1:]) + return self.funcdef(n) + elif nodelist[1][0] == symbol.classdef: + decorators = self.decorators(nodelist[0][1:]) + cls = self.classdef(nodelist[1][1:]) + cls.decorators = decorators + return cls + raise WalkerError() + def funcdef(self, nodelist): # -6 -5 -4 -3 -2 -1 # funcdef: [decorators] 'def' NAME parameters ':' suite Modified: python/trunk/Lib/token.py ============================================================================== --- python/trunk/Lib/token.py (original) +++ python/trunk/Lib/token.py Mon Feb 25 19:06:00 2008 @@ -71,6 +71,7 @@ for _name, _value in globals().items(): if type(_value) is type(0): tok_name[_value] = _name +del _name, _value def ISTERMINAL(x): Modified: python/trunk/Tools/compiler/ast.txt ============================================================================== --- python/trunk/Tools/compiler/ast.txt (original) +++ python/trunk/Tools/compiler/ast.txt Mon Feb 25 19:06:00 2008 @@ -14,7 +14,7 @@ Decorators: nodes! Function: decorators&, name*, argnames*, defaults!, flags*, doc*, code Lambda: argnames*, defaults!, flags*, code -Class: name*, bases!, doc*, code +Class: name*, bases!, doc*, code, decorators& = None Pass: Break: Continue: @@ -97,7 +97,7 @@ self.kwargs = 1 init(GenExpr): - self.argnames = ['[outmost-iterable]'] + self.argnames = ['.0'] self.varargs = self.kwargs = None init(GenExprFor): From python-checkins at python.org Mon Feb 25 21:10:24 2008 From: python-checkins at python.org (georg.brandl) Date: Mon, 25 Feb 2008 21:10:24 +0100 (CET) Subject: [Python-checkins] r61068 - doctools/trunk/sphinx/highlighting.py Message-ID: <20080225201024.EBC0A1E4012@bag.python.org> Author: georg.brandl Date: Mon Feb 25 21:10:24 2008 New Revision: 61068 Modified: doctools/trunk/sphinx/highlighting.py Log: Fix if no pygments available. Modified: doctools/trunk/sphinx/highlighting.py ============================================================================== --- doctools/trunk/sphinx/highlighting.py (original) +++ doctools/trunk/sphinx/highlighting.py Mon Feb 25 21:10:24 2008 @@ -55,6 +55,16 @@ _lexer.add_filter('raiseonerror') + +def escape_tex(text): + return text.replace('@', '\x00'). \ + replace('[', '\x01'). \ + replace(']', '\x02'). \ + replace('\x00', '@at[]').\ + replace('\x01', '@lb[]').\ + replace('\x02', '@rb[]') + + class PygmentsBridge(object): def __init__(self, dest='html', stylename='sphinx'): if not pygments: @@ -72,7 +82,8 @@ if self.dest == 'html': return '
    ' + cgi.escape(source) + '
    \n' else: - return highlight(source, lexers['none'], lfmter) + return '\\begin{Verbatim}[commandchars=@\\[\\]]\n' + \ + escape_tex(source) + '\\end{Verbatim}\n' if not pygments: return unhighlighted() if lang == 'python': From python-checkins at python.org Mon Feb 25 21:17:56 2008 From: python-checkins at python.org (georg.brandl) Date: Mon, 25 Feb 2008 21:17:56 +0100 (CET) Subject: [Python-checkins] r61069 - python/trunk/Doc/conf.py Message-ID: <20080225201756.813DD1E4012@bag.python.org> Author: georg.brandl Date: Mon Feb 25 21:17:56 2008 New Revision: 61069 Modified: python/trunk/Doc/conf.py Log: Rename sphinx.addons to sphinx.ext. Modified: python/trunk/Doc/conf.py ============================================================================== --- python/trunk/Doc/conf.py (original) +++ python/trunk/Doc/conf.py Mon Feb 25 21:17:56 2008 @@ -13,7 +13,7 @@ # General configuration # --------------------- -extensions = ['sphinx.addons.refcounting', 'sphinx.addons.coverage'] +extensions = ['sphinx.ext.refcounting', 'sphinx.ext.coverage'] # General substitutions. project = 'Python' From python-checkins at python.org Mon Feb 25 21:18:15 2008 From: python-checkins at python.org (georg.brandl) Date: Mon, 25 Feb 2008 21:18:15 +0100 (CET) Subject: [Python-checkins] r61070 - in doctools/trunk/sphinx: addons ext ext/coverage.py ext/ifconfig.py ext/refcounting.py Message-ID: <20080225201815.EC0761E4012@bag.python.org> Author: georg.brandl Date: Mon Feb 25 21:18:15 2008 New Revision: 61070 Added: doctools/trunk/sphinx/ext/ - copied from r60704, doctools/trunk/sphinx/addons/ doctools/trunk/sphinx/ext/coverage.py - copied, changed from r61069, doctools/trunk/sphinx/addons/coverage.py Removed: doctools/trunk/sphinx/addons/ Modified: doctools/trunk/sphinx/ext/ifconfig.py doctools/trunk/sphinx/ext/refcounting.py Log: Rename sphinx.addons to sphinx.ext. Copied: doctools/trunk/sphinx/ext/coverage.py (from r61069, doctools/trunk/sphinx/addons/coverage.py) ============================================================================== --- doctools/trunk/sphinx/addons/coverage.py (original) +++ doctools/trunk/sphinx/ext/coverage.py Mon Feb 25 21:18:15 2008 @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - sphinx.addons.coverage - ~~~~~~~~~~~~~~~~~~~~~~ + sphinx.ext.coverage + ~~~~~~~~~~~~~~~~~~~ Check Python modules and C API for coverage. Mostly written by Josip Dzolonga for the Google Highly Open Participation contest. Modified: doctools/trunk/sphinx/ext/ifconfig.py ============================================================================== --- doctools/trunk/sphinx/addons/ifconfig.py (original) +++ doctools/trunk/sphinx/ext/ifconfig.py Mon Feb 25 21:18:15 2008 @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - sphinx.addons.ifconfig - ~~~~~~~~~~~~~~~~~~~~~~ + sphinx.ext.ifconfig + ~~~~~~~~~~~~~~~~~~~ Provides the ``ifconfig`` directive that allows to write documentation that is included depending on configuration variables. Modified: doctools/trunk/sphinx/ext/refcounting.py ============================================================================== --- doctools/trunk/sphinx/addons/refcounting.py (original) +++ doctools/trunk/sphinx/ext/refcounting.py Mon Feb 25 21:18:15 2008 @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - sphinx.addons.refcounting - ~~~~~~~~~~~~~~~~~~~~~~~~~ + sphinx.ext.refcounting + ~~~~~~~~~~~~~~~~~~~~~~ Supports reference count annotations for C API functions. Based on refcount.py and anno-api.py in the old Python documentation tools. From python-checkins at python.org Mon Feb 25 21:20:46 2008 From: python-checkins at python.org (georg.brandl) Date: Mon, 25 Feb 2008 21:20:46 +0100 (CET) Subject: [Python-checkins] r61071 - python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Message-ID: <20080225202046.1D9AE1E4012@bag.python.org> Author: georg.brandl Date: Mon Feb 25 21:20:45 2008 New Revision: 61071 Modified: python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst Log: Revert r61029. Modified: python/trunk/Doc/library/thread.rst ============================================================================== --- python/trunk/Doc/library/thread.rst (original) +++ python/trunk/Doc/library/thread.rst Mon Feb 25 21:20:45 2008 @@ -150,11 +150,6 @@ exception will be received by an arbitrary thread. (When the :mod:`signal` module is available, interrupts always go to the main thread.) -* The import machinery is not thread safe. In general, an import may not - have the side effect of importing a module, and only the main thread - should import modules. Imports within or caused by a thread other than - the main thread isn't safe. - * Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is equivalent to calling :func:`exit`. @@ -175,3 +170,4 @@ * When the main thread exits, it does not do any of its usual cleanup (except that :keyword:`try` ... :keyword:`finally` clauses are honored), and the standard I/O files are not flushed. + Modified: python/trunk/Doc/library/threading.rst ============================================================================== --- python/trunk/Doc/library/threading.rst (original) +++ python/trunk/Doc/library/threading.rst Mon Feb 25 21:20:45 2008 @@ -562,13 +562,6 @@ There is a "main thread" object; this corresponds to the initial thread of control in the Python program. It is not a daemon thread. -.. warning:: - - The import machinery is not thread safe. In general, an import may not - have the side effect of importing a module, and only the main thread - should import modules. Imports within or caused by a thread other than - the main thread isn't safe. - There is the possibility that "dummy thread objects" are created. These are thread objects corresponding to "alien threads", which are threads of control started outside the threading module, such as directly from C code. Dummy From g.brandl at gmx.net Mon Feb 25 21:24:29 2008 From: g.brandl at gmx.net (Georg Brandl) Date: Mon, 25 Feb 2008 21:24:29 +0100 Subject: [Python-checkins] r61029 - python/trunk/Doc/library/thread.rst python/trunk/Doc/library/threading.rst In-Reply-To: <47C17FBA.5080707@cheimes.de> References: <20080223232527.1CDFA1E4016@bag.python.org> <47C10C15.3030109@gmail.com> <47C17FBA.5080707@cheimes.de> Message-ID: Christian Heimes schrieb: > Nick Coghlan wrote: >> If we have C code doing unsafe imports we have to fix the C code, not >> warn everybody off from doing imports outside the main thread. Similarly >> if there are crashers at interpreter shutdown. > > I implemented PyImport_ImportModuleNoBlock() to have safe imports in C > code. The function tries to grap the module from sys.modules first > without grabbing the import lock. If the module wasn't loaded before it > uses the standard import modules *unless* a different thread holds the > import lock. In the latter case it raises an exception. I've now reverted this; please find an agreement if a warning is necessary and what it should contain :) Georg From python-checkins at python.org Mon Feb 25 23:33:55 2008 From: python-checkins at python.org (facundo.batista) Date: Mon, 25 Feb 2008 23:33:55 +0100 (CET) Subject: [Python-checkins] r61072 - python/trunk/Modules/dbmmodule.c python/trunk/Modules/gdbmmodule.c Message-ID: <20080225223355.945DE1E4021@bag.python.org> Author: facundo.batista Date: Mon Feb 25 23:33:55 2008 New Revision: 61072 Modified: python/trunk/Modules/dbmmodule.c python/trunk/Modules/gdbmmodule.c Log: Issue 2168. gdbm and dbm needs to be iterable; this fixes a failure in the shelve module. Thanks Thomas Herve. Modified: python/trunk/Modules/dbmmodule.c ============================================================================== --- python/trunk/Modules/dbmmodule.c (original) +++ python/trunk/Modules/dbmmodule.c Mon Feb 25 23:33:55 2008 @@ -161,6 +161,37 @@ return 0; } +static int +dbm_contains(register dbmobject *dp, PyObject *v) +{ + datum key, val; + + if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { + return -1; + } + + /* Expand check_dbmobject_open to return -1 */ + if (dp->di_dbm == NULL) { + PyErr_SetString(DbmError, "DBM object has already been closed"); + return -1; + } + val = dbm_fetch(dp->di_dbm, key); + return val.dptr != NULL; +} + +static PySequenceMethods dbm_as_sequence = { + (lenfunc)dbm_length, /*_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + (objobjproc)dbm_contains, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0 /*sq_inplace_repeat*/ +}; + static PyMappingMethods dbm_as_mapping = { (lenfunc)dbm_length, /*mp_length*/ (binaryfunc)dbm_subscript, /*mp_subscript*/ @@ -313,8 +344,15 @@ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ + &dbm_as_sequence, /*tp_as_sequence*/ &dbm_as_mapping, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_xxx4*/ }; /* ----------------------------------------------------------------- */ Modified: python/trunk/Modules/gdbmmodule.c ============================================================================== --- python/trunk/Modules/gdbmmodule.c (original) +++ python/trunk/Modules/gdbmmodule.c Mon Feb 25 23:33:55 2008 @@ -178,6 +178,33 @@ return 0; } +static int +dbm_contains(register dbmobject *dp, PyObject *v) +{ + datum key; + + if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { + return -1; + } + + check_dbmobject_open(dp); + + return gdbm_exists(dp->di_dbm, key); +} + +static PySequenceMethods dbm_as_sequence = { + (lenfunc)dbm_length, /*_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + (objobjproc)dbm_contains, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0 /*sq_inplace_repeat*/ +}; + static PyMappingMethods dbm_as_mapping = { (lenfunc)dbm_length, /*mp_length*/ (binaryfunc)dbm_subscript, /*mp_subscript*/ @@ -381,7 +408,7 @@ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ + &dbm_as_sequence, /*tp_as_sequence*/ &dbm_as_mapping, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ @@ -389,7 +416,7 @@ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ - 0, /*tp_xxx4*/ + Py_TPFLAGS_DEFAULT, /*tp_xxx4*/ gdbm_object__doc__, /*tp_doc*/ }; From python-checkins at python.org Mon Feb 25 23:42:32 2008 From: python-checkins at python.org (raymond.hettinger) Date: Mon, 25 Feb 2008 23:42:32 +0100 (CET) Subject: [Python-checkins] r61073 - in python/trunk: Lib/test/test_itertools.py Modules/itertoolsmodule.c Message-ID: <20080225224232.642481E400A@bag.python.org> Author: raymond.hettinger Date: Mon Feb 25 23:42:32 2008 New Revision: 61073 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Modules/itertoolsmodule.c Log: Make sure the itertools filter functions give the same performance for func=bool as func=None. Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Mon Feb 25 23:42:32 2008 @@ -171,6 +171,7 @@ def test_ifilter(self): self.assertEqual(list(ifilter(isEven, range(6))), [0,2,4]) self.assertEqual(list(ifilter(None, [0,1,0,2,0])), [1,2]) + self.assertEqual(list(ifilter(bool, [0,1,0,2,0])), [1,2]) self.assertEqual(take(4, ifilter(isEven, count())), [0,2,4,6]) self.assertRaises(TypeError, ifilter) self.assertRaises(TypeError, ifilter, lambda x:x) @@ -181,6 +182,7 @@ def test_ifilterfalse(self): self.assertEqual(list(ifilterfalse(isEven, range(6))), [1,3,5]) self.assertEqual(list(ifilterfalse(None, [0,1,0,2,0])), [0,0,0]) + self.assertEqual(list(ifilterfalse(bool, [0,1,0,2,0])), [0,0,0]) self.assertEqual(take(4, ifilterfalse(isEven, count())), [1,3,5,7]) self.assertRaises(TypeError, ifilterfalse) self.assertRaises(TypeError, ifilterfalse, lambda x:x) Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Mon Feb 25 23:42:32 2008 @@ -2055,7 +2055,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None) { + if (lz->func == Py_None || lz->func == PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; @@ -2199,7 +2199,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None) { + if (lz->func == Py_None || lz->func == PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; From buildbot at python.org Tue Feb 26 00:11:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 25 Feb 2008 23:11:40 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080225231140.82C221E4024@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2922 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 00:17:41 2008 From: python-checkins at python.org (raymond.hettinger) Date: Tue, 26 Feb 2008 00:17:41 +0100 (CET) Subject: [Python-checkins] r61074 - python/trunk/Lib/shelve.py Message-ID: <20080225231741.E61C91E4006@bag.python.org> Author: raymond.hettinger Date: Tue Feb 26 00:17:41 2008 New Revision: 61074 Modified: python/trunk/Lib/shelve.py Log: Revert part of r60927 which made invalid assumptions about the API offered by db modules. Modified: python/trunk/Lib/shelve.py ============================================================================== --- python/trunk/Lib/shelve.py (original) +++ python/trunk/Lib/shelve.py Tue Feb 26 00:17:41 2008 @@ -95,13 +95,13 @@ return len(self.dict) def has_key(self, key): - return key in self.dict + return self.dict.has_key(key) def __contains__(self, key): - return key in self.dict + return self.dict.has_key(key) def get(self, key, default=None): - if key in self.dict: + if self.dict.has_key(key): return self[key] return default From buildbot at python.org Tue Feb 26 00:24:42 2008 From: buildbot at python.org (buildbot at python.org) Date: Mon, 25 Feb 2008 23:24:42 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080225232442.54D4C1E4006@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/261 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_dis test_enumerate test_getopt test_pyclbr test_xmlrpc ====================================================================== ERROR: test_big_linenos (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 144, in test_big_linenos self.do_disassembly_test(func(i), expected) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_bug_1333982 (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 132, in test_bug_1333982 self.do_disassembly_test(bug1333982, dis_bug1333982) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_bug_708901 (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 126, in test_bug_708901 self.do_disassembly_test(bug708901, dis_bug708901) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_dis (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 123, in test_dis self.do_disassembly_test(_f, dis_f) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_len (test.test_enumerate.TestReversed) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_enumerate.py", line 147, in test_len from test.test_iterlen import len File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_iterlen.py", line 46, in from itertools import repeat ImportError: No module named itertools ====================================================================== ERROR: test_libref_examples (test.test_getopt.GetoptTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_getopt.py", line 172, in test_libref_examples run_doctest(m, verbose) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_support.py", line 587, in run_doctest import doctest File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/doctest.py", line 99, in import unittest, difflib, pdb, tempfile File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_easy (test.test_pyclbr.PyclbrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_pyclbr.py", line 151, in test_easy self.checkModule('doctest') File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_pyclbr.py", line 63, in checkModule module = __import__(moduleName, globals(), {}, ['']) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/doctest.py", line 99, in import unittest, difflib, pdb, tempfile File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/difflib.py", line 35, in import heapq File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_others (test.test_pyclbr.PyclbrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_pyclbr.py", line 176, in test_others cm('pdb') File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_pyclbr.py", line 63, in checkModule module = __import__(moduleName, globals(), {}, ['']) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/pdb.py", line 11, in from repr import Repr File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/repr.py", line 6, in from itertools import islice ImportError: No module named itertools ====================================================================== ERROR: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_xmlrpc.py", line 405, in test_introspection3 myfunction = p.system.methodHelp('my_function') File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/xmlrpclib.py", line 1184, in __call__ return self.__send(self.__name, args) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/xmlrpclib.py", line 1474, in __request verbose=self.__verbose File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/xmlrpclib.py", line 1238, in request return self._parse_response(h.getfile(), sock) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/xmlrpclib.py", line 1377, in _parse_response return u.close() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/xmlrpclib.py", line 824, in close raise Fault(**self._stack[0]) Fault: :No module named itertools"> make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 00:46:02 2008 From: python-checkins at python.org (facundo.batista) Date: Tue, 26 Feb 2008 00:46:02 +0100 (CET) Subject: [Python-checkins] r61075 - python/trunk/Modules/itertoolsmodule.c Message-ID: <20080225234602.D00081E4027@bag.python.org> Author: facundo.batista Date: Tue Feb 26 00:46:02 2008 New Revision: 61075 Modified: python/trunk/Modules/itertoolsmodule.c Log: Coerced PyBool_Type to be able to compare it. Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Tue Feb 26 00:46:02 2008 @@ -2055,7 +2055,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None || lz->func == PyBool_Type) { + if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; @@ -2199,7 +2199,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None || lz->func == PyBool_Type) { + if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; From buildbot at python.org Tue Feb 26 01:02:38 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 00:02:38 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080226000238.29AF01E400A@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/894 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 5 tests failed: test_dis test_enumerate test_getopt test_pyclbr test_xmlrpc ====================================================================== ERROR: test_big_linenos (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 144, in test_big_linenos self.do_disassembly_test(func(i), expected) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_bug_1333982 (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 132, in test_bug_1333982 self.do_disassembly_test(bug1333982, dis_bug1333982) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_bug_708901 (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 126, in test_bug_708901 self.do_disassembly_test(bug708901, dis_bug708901) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_dis (test.test_dis.DisTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 123, in test_dis self.do_disassembly_test(_f, dis_f) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_dis.py", line 103, in do_disassembly_test import difflib File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_len (test.test_enumerate.TestReversed) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_enumerate.py", line 147, in test_len from test.test_iterlen import len File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_iterlen.py", line 46, in from itertools import repeat ImportError: No module named itertools ====================================================================== ERROR: test_libref_examples (test.test_getopt.GetoptTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_getopt.py", line 172, in test_libref_examples run_doctest(m, verbose) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_support.py", line 587, in run_doctest import doctest File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/doctest.py", line 99, in import unittest, difflib, pdb, tempfile File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_easy (test.test_pyclbr.PyclbrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_pyclbr.py", line 151, in test_easy self.checkModule('doctest') File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_pyclbr.py", line 63, in checkModule module = __import__(moduleName, globals(), {}, ['']) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/doctest.py", line 99, in import unittest, difflib, pdb, tempfile File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/difflib.py", line 35, in import heapq File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/heapq.py", line 132, in from itertools import islice, repeat, count, imap, izip, tee ImportError: No module named itertools ====================================================================== ERROR: test_others (test.test_pyclbr.PyclbrTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_pyclbr.py", line 176, in test_others cm('pdb') File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_pyclbr.py", line 63, in checkModule module = __import__(moduleName, globals(), {}, ['']) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/pdb.py", line 11, in from repr import Repr File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/repr.py", line 6, in from itertools import islice ImportError: No module named itertools ====================================================================== ERROR: test_introspection3 (test.test_xmlrpc.SimpleServerTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/test/test_xmlrpc.py", line 405, in test_introspection3 myfunction = p.system.methodHelp('my_function') File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1184, in __call__ return self.__send(self.__name, args) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1474, in __request verbose=self.__verbose File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1238, in request return self._parse_response(h.getfile(), sock) File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/xmlrpclib.py", line 1377, in _parse_response return u.close() File "/home/pybot/buildarea/trunk.klose-debian-ppc/build/Lib/xmlrpclib.py", line 824, in close raise Fault(**self._stack[0]) Fault: :No module named itertools"> make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 02:23:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 01:23:04 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080226012304.F2B7C1E4006@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/722 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 02:29:01 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 01:29:01 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080226012901.48B2F1E4006@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/403 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 03:05:04 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 02:05:04 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080226020504.B2F991E4006@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/96 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 03:12:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 02:12:57 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080226021257.463011E400A@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/650 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: facundo.batista,georg.brandl BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 03:21:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 02:21:18 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080226022119.091621E4006@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2865 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 03:46:54 2008 From: python-checkins at python.org (raymond.hettinger) Date: Tue, 26 Feb 2008 03:46:54 +0100 (CET) Subject: [Python-checkins] r61076 - python/trunk/Doc/library/itertools.rst Message-ID: <20080226024654.E21121E402A@bag.python.org> Author: raymond.hettinger Date: Tue Feb 26 03:46:54 2008 New Revision: 61076 Modified: python/trunk/Doc/library/itertools.rst Log: Docs for itertools.combinations(). Implementation in forthcoming checkin. Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Tue Feb 26 03:46:54 2008 @@ -76,6 +76,45 @@ yield element +.. function:: combinations(iterable, r) + + Return successive *r* length combinations of elements in the *iterable*. + + Combinations are emitted in a lexicographic sort order. So, if the + input *iterable* is sorted, the combination tuples will be produced + in sorted order. + + Elements are treated as unique based on their position, not on their + value. So if the input elements are unique, there will be no repeat + values within a single combination. + + Each result tuple is ordered to match the input order. So, every + combination is a subsequence of the input *iterable*. + + Example: ``combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)`` + + Equivalent to:: + + def combinations(iterable, r): + pool = tuple(iterable) + if pool: + n = len(pool) + vec = range(r) + yield tuple(pool[i] for i in vec) + while 1: + for i in reversed(range(r)): + if vec[i] == i + n-r: + continue + vec[i] += 1 + for j in range(i+1, r): + vec[j] = vec[j-1] + 1 + yield tuple(pool[i] for i in vec) + break + else: + return + + .. versionadded:: 2.6 + .. function:: count([n]) Make an iterator that returns consecutive integers starting with *n*. If not @@ -311,9 +350,12 @@ The leftmost iterators are in the outermost for-loop, so the output tuples cycle in a manner similar to an odometer (with the rightmost element - changing on every iteration). + changing on every iteration). This results in a lexicographic ordering + so that if the inputs iterables are sorted, the product tuples are emitted + in sorted order. - Equivalent to (but without building the entire result in memory):: + Equivalent to the following except that the actual implementation does not + build-up intermediate results in memory:: def product(*args): pools = map(tuple, args) From python-checkins at python.org Tue Feb 26 05:50:38 2008 From: python-checkins at python.org (neal.norwitz) Date: Tue, 26 Feb 2008 05:50:38 +0100 (CET) Subject: [Python-checkins] r61077 - python/trunk/Lib/test/test_ftplib.py Message-ID: <20080226045038.46C401E401B@bag.python.org> Author: neal.norwitz Date: Tue Feb 26 05:50:37 2008 New Revision: 61077 Modified: python/trunk/Lib/test/test_ftplib.py Log: Don't use a hard coded port. This test could hang/fail if the port is in use. Speed this test up by avoiding a sleep and using the event. Modified: python/trunk/Lib/test/test_ftplib.py ============================================================================== --- python/trunk/Lib/test/test_ftplib.py (original) +++ python/trunk/Lib/test/test_ftplib.py Tue Feb 26 05:50:37 2008 @@ -6,32 +6,47 @@ from unittest import TestCase from test import test_support +server_port = None + +# This function sets the evt 3 times: +# 1) when the connection is ready to be accepted. +# 2) when it is safe for the caller to close the connection +# 3) when we have closed the socket def server(evt): + global server_port serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serv.settimeout(3) serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - serv.bind(("", 9091)) + server_port = test_support.bind_port(serv, "", 9091) serv.listen(5) + # (1) Signal the caller that we are ready to accept the connection. + evt.set() try: conn, addr = serv.accept() except socket.timeout: pass else: conn.send("1 Hola mundo\n") + # (2) Signal the caller that it is safe to close the socket. + evt.set() conn.close() finally: serv.close() + # (3) Signal the caller that we are done. evt.set() class GeneralTests(TestCase): def setUp(self): - ftplib.FTP.port = 9091 self.evt = threading.Event() threading.Thread(target=server, args=(self.evt,)).start() - time.sleep(.1) + # Wait for the server to be ready. + self.evt.wait() + self.evt.clear() + ftplib.FTP.port = server_port def tearDown(self): + # Wait on the closing of the socket (this shouldn't be necessary). self.evt.wait() def testBasic(self): @@ -40,30 +55,35 @@ # connects ftp = ftplib.FTP("localhost") + self.evt.wait() ftp.sock.close() def testTimeoutDefault(self): # default ftp = ftplib.FTP("localhost") self.assertTrue(ftp.sock.gettimeout() is None) + self.evt.wait() ftp.sock.close() def testTimeoutValue(self): # a value ftp = ftplib.FTP("localhost", timeout=30) self.assertEqual(ftp.sock.gettimeout(), 30) + self.evt.wait() ftp.sock.close() def testTimeoutConnect(self): ftp = ftplib.FTP() ftp.connect("localhost", timeout=30) self.assertEqual(ftp.sock.gettimeout(), 30) + self.evt.wait() ftp.sock.close() def testTimeoutDifferentOrder(self): ftp = ftplib.FTP(timeout=30) ftp.connect("localhost") self.assertEqual(ftp.sock.gettimeout(), 30) + self.evt.wait() ftp.sock.close() def testTimeoutDirectAccess(self): @@ -71,6 +91,7 @@ ftp.timeout = 30 ftp.connect("localhost") self.assertEqual(ftp.sock.gettimeout(), 30) + self.evt.wait() ftp.sock.close() def testTimeoutNone(self): @@ -82,10 +103,10 @@ finally: socket.setdefaulttimeout(previous) self.assertEqual(ftp.sock.gettimeout(), 30) + self.evt.wait() ftp.close() - def test_main(verbose=None): test_support.run_unittest(GeneralTests) From python-checkins at python.org Tue Feb 26 06:12:50 2008 From: python-checkins at python.org (neal.norwitz) Date: Tue, 26 Feb 2008 06:12:50 +0100 (CET) Subject: [Python-checkins] r61078 - python/trunk/Modules/dbmmodule.c Message-ID: <20080226051251.0131E1E4023@bag.python.org> Author: neal.norwitz Date: Tue Feb 26 06:12:50 2008 New Revision: 61078 Modified: python/trunk/Modules/dbmmodule.c Log: Whitespace normalization Modified: python/trunk/Modules/dbmmodule.c ============================================================================== --- python/trunk/Modules/dbmmodule.c (original) +++ python/trunk/Modules/dbmmodule.c Tue Feb 26 06:12:50 2008 @@ -164,17 +164,17 @@ static int dbm_contains(register dbmobject *dp, PyObject *v) { - datum key, val; + datum key, val; + + if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { + return -1; + } - if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { - return -1; - } - - /* Expand check_dbmobject_open to return -1 */ - if (dp->di_dbm == NULL) { - PyErr_SetString(DbmError, "DBM object has already been closed"); - return -1; - } + /* Expand check_dbmobject_open to return -1 */ + if (dp->di_dbm == NULL) { + PyErr_SetString(DbmError, "DBM object has already been closed"); + return -1; + } val = dbm_fetch(dp->di_dbm, key); return val.dptr != NULL; } From python-checkins at python.org Tue Feb 26 06:23:52 2008 From: python-checkins at python.org (neal.norwitz) Date: Tue, 26 Feb 2008 06:23:52 +0100 (CET) Subject: [Python-checkins] r61079 - python/trunk/Python/getargs.c Message-ID: <20080226052352.27C871E4006@bag.python.org> Author: neal.norwitz Date: Tue Feb 26 06:23:51 2008 New Revision: 61079 Modified: python/trunk/Python/getargs.c Log: Whitespace normalization Modified: python/trunk/Python/getargs.c ============================================================================== --- python/trunk/Python/getargs.c (original) +++ python/trunk/Python/getargs.c Tue Feb 26 06:23:51 2008 @@ -154,7 +154,7 @@ PyMem_FREE(ptr); return -1; } - if(PyList_Append(*freelist, cobj)) { + if (PyList_Append(*freelist, cobj)) { PyMem_FREE(ptr); Py_DECREF(cobj); return -1; @@ -166,8 +166,8 @@ static int cleanreturn(int retval, PyObject *freelist) { - if(freelist) { - if((retval) == 0) { + if (freelist) { + if (retval == 0) { Py_ssize_t len = PyList_GET_SIZE(freelist), i; for (i = 0; i < len; i++) PyMem_FREE(PyCObject_AsVoidPtr( @@ -708,7 +708,7 @@ case 'L': {/* PY_LONG_LONG */ PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * ); PY_LONG_LONG ival = PyLong_AsLongLong( arg ); - if( ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { + if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { return converterr("long", arg, msgbuf, bufsize); } else { *p = ival; @@ -998,7 +998,7 @@ "(memory error)", arg, msgbuf, bufsize); } - if(addcleanup(*buffer, freelist)) { + if (addcleanup(*buffer, freelist)) { Py_DECREF(s); return converterr( "(cleanup problem)", @@ -1043,7 +1043,7 @@ return converterr("(memory error)", arg, msgbuf, bufsize); } - if(addcleanup(*buffer, freelist)) { + if (addcleanup(*buffer, freelist)) { Py_DECREF(s); return converterr("(cleanup problem)", arg, msgbuf, bufsize); From buildbot at python.org Tue Feb 26 06:43:08 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 05:43:08 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080226054308.7FC6B1E4006@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/265 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 491, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 447, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 259, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '2000-2000-2000-2000-2000' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 491, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 447, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 259, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '0002-0002-0002-0002-0002' Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 491, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 447, in run self.__target(*self.__args, **self.__kwargs) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/bsddb/test/test_thread.py", line 259, in writerThread self.assertEqual(data, self.makeData(key)) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/unittest.py", line 343, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: None != '1001-1001-1001-1001-1001' 2 tests failed: test_socket_ssl test_time make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 07:30:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 06:30:35 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080226063035.86D061E4006@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/652 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: neal.norwitz,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 318, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 301, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 564, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 318, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 301, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_smtplib Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 467, in __bootstrap self.__bootstrap_inner() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/threading.py", line 532, in __bootstrap_inner with _active_limbo_lock: AttributeError: 'NoneType' object has no attribute '__exit__' sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 07:40:10 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 26 Feb 2008 07:40:10 +0100 (CET) Subject: [Python-checkins] r61080 - python/trunk/Doc/library/itertools.rst Message-ID: <20080226064010.80C5D1E4021@bag.python.org> Author: georg.brandl Date: Tue Feb 26 07:40:10 2008 New Revision: 61080 Modified: python/trunk/Doc/library/itertools.rst Log: Banish tab. Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Tue Feb 26 07:40:10 2008 @@ -97,7 +97,7 @@ def combinations(iterable, r): pool = tuple(iterable) - if pool: + if pool: n = len(pool) vec = range(r) yield tuple(pool[i] for i in vec) From python-checkins at python.org Tue Feb 26 09:04:59 2008 From: python-checkins at python.org (neal.norwitz) Date: Tue, 26 Feb 2008 09:04:59 +0100 (CET) Subject: [Python-checkins] r61081 - python/trunk/Lib/test/test_smtplib.py Message-ID: <20080226080459.903A41E4006@bag.python.org> Author: neal.norwitz Date: Tue Feb 26 09:04:59 2008 New Revision: 61081 Modified: python/trunk/Lib/test/test_smtplib.py Log: Speed up this test by about 99%. Remove sleeps and replace with events. (This may fail on some slow platforms, but we can fix those cases which should be relatively isolated and easier to find now.) Move two test cases that didn't require a server to be started to a separate TestCase. These tests were taking 3 seconds which is what the timeout was set to. Modified: python/trunk/Lib/test/test_smtplib.py ============================================================================== --- python/trunk/Lib/test/test_smtplib.py (original) +++ python/trunk/Lib/test/test_smtplib.py Tue Feb 26 09:04:59 2008 @@ -18,14 +18,15 @@ PORT = None def server(evt, buf): + serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serv.settimeout(1) + serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + serv.bind(("", 0)) + global PORT + PORT = serv.getsockname()[1] + serv.listen(5) + evt.set() try: - serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - serv.settimeout(3) - serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - serv.bind(("", 0)) - global PORT - PORT = serv.getsockname()[1] - serv.listen(5) conn, addr = serv.accept() except socket.timeout: pass @@ -38,7 +39,6 @@ buf = buf[sent:] n -= 1 - time.sleep(0.01) conn.close() finally: @@ -52,16 +52,8 @@ self.evt = threading.Event() servargs = (self.evt, "220 Hola mundo\n") threading.Thread(target=server, args=servargs).start() - - # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.evt.wait() + self.evt.clear() def tearDown(self): self.evt.wait() @@ -76,29 +68,12 @@ smtp = smtplib.SMTP("%s:%s" % (HOST, PORT)) smtp.sock.close() - def testNotConnected(self): - # Test various operations on an unconnected SMTP object that - # should raise exceptions (at present the attempt in SMTP.send - # to reference the nonexistent 'sock' attribute of the SMTP object - # causes an AttributeError) - smtp = smtplib.SMTP() - self.assertRaises(smtplib.SMTPServerDisconnected, smtp.ehlo) - self.assertRaises(smtplib.SMTPServerDisconnected, - smtp.send, 'test msg') - def testLocalHostName(self): # check that supplied local_hostname is used smtp = smtplib.SMTP(HOST, PORT, local_hostname="testhost") self.assertEqual(smtp.local_hostname, "testhost") smtp.sock.close() - def testNonnumericPort(self): - # check that non-numeric port raises socket.error - self.assertRaises(socket.error, smtplib.SMTP, - "localhost", "bogus") - self.assertRaises(socket.error, smtplib.SMTP, - "localhost:bogus") - def testTimeoutDefault(self): # default smtp = smtplib.SMTP(HOST, PORT) @@ -128,6 +103,7 @@ serv = server_class(("", 0), ('nowhere', -1)) global PORT PORT = serv.getsockname()[1] + serv_evt.set() try: if hasattr(select, 'poll'): @@ -150,12 +126,12 @@ except socket.timeout: pass finally: - # allow some time for the client to read the result - time.sleep(0.5) - serv.close() + if not client_evt.isSet(): + # allow some time for the client to read the result + time.sleep(0.5) + serv.close() asyncore.close_all() PORT = None - time.sleep(0.5) serv_evt.set() MSG_BEGIN = '---------- MESSAGE FOLLOWS ----------\n' @@ -181,14 +157,8 @@ threading.Thread(target=debugging_server, args=serv_args).start() # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.serv_evt.wait() + self.serv_evt.clear() def tearDown(self): # indicate that the client is finished @@ -258,6 +228,26 @@ self.assertEqual(self.output.getvalue(), mexpect) +class NonConnectingTests(TestCase): + + def testNotConnected(self): + # Test various operations on an unconnected SMTP object that + # should raise exceptions (at present the attempt in SMTP.send + # to reference the nonexistent 'sock' attribute of the SMTP object + # causes an AttributeError) + smtp = smtplib.SMTP() + self.assertRaises(smtplib.SMTPServerDisconnected, smtp.ehlo) + self.assertRaises(smtplib.SMTPServerDisconnected, + smtp.send, 'test msg') + + def testNonnumericPort(self): + # check that non-numeric port raises socket.error + self.assertRaises(socket.error, smtplib.SMTP, + "localhost", "bogus") + self.assertRaises(socket.error, smtplib.SMTP, + "localhost:bogus") + + # test response of client to a non-successful HELO message class BadHELOServerTests(TestCase): @@ -269,16 +259,8 @@ self.evt = threading.Event() servargs = (self.evt, "199 no hello for you!\n") threading.Thread(target=server, args=servargs).start() - - # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.evt.wait() + self.evt.clear() def tearDown(self): self.evt.wait() @@ -355,14 +337,8 @@ threading.Thread(target=debugging_server, args=serv_args).start() # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.serv_evt.wait() + self.serv_evt.clear() def tearDown(self): # indicate that the client is finished @@ -427,6 +403,7 @@ def test_main(verbose=None): test_support.run_unittest(GeneralTests, DebuggingServerTests, + NonConnectingTests, BadHELOServerTests, SMTPSimTests) if __name__ == '__main__': From buildbot at python.org Tue Feb 26 09:17:50 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 08:17:50 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 2.5 Message-ID: <20080226081751.0FE241E402F@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 2.5. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%202.5/builds/212 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch branches/release25-maint] HEAD Blamelist: andrew.kuchling,georg.brandl,martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\test\test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\test\test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\test\test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\test\test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') Traceback (most recent call last): File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\buildbot\work\2.5.heller-windows\build\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\test\test_thread.py", line 281, in readerThread rec = dbutils.DeadlockWrap(c.next, max_retries=10) File "C:\buildbot\work\2.5.heller-windows\build\lib\bsddb\dbutils.py", line 62, in DeadlockWrap return function(*_args, **_kwargs) DBLockDeadlockError: (-30995, 'DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock') 1 test failed: test_urllib2net sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 09:18:12 2008 From: python-checkins at python.org (christian.heimes) Date: Tue, 26 Feb 2008 09:18:12 +0100 (CET) Subject: [Python-checkins] r61082 - python/trunk/Modules/gdbmmodule.c Message-ID: <20080226081812.163AC1E4028@bag.python.org> Author: christian.heimes Date: Tue Feb 26 09:18:11 2008 New Revision: 61082 Modified: python/trunk/Modules/gdbmmodule.c Log: The contains function raised a gcc warning. The new code is copied straight from py3k. Modified: python/trunk/Modules/gdbmmodule.c ============================================================================== --- python/trunk/Modules/gdbmmodule.c (original) +++ python/trunk/Modules/gdbmmodule.c Tue Feb 26 09:18:11 2008 @@ -179,16 +179,23 @@ } static int -dbm_contains(register dbmobject *dp, PyObject *v) +dbm_contains(register dbmobject *dp, PyObject *arg) { datum key; - if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { + if ((dp)->di_dbm == NULL) { + PyErr_SetString(DbmError, + "GDBM object has already been closed"); return -1; } - - check_dbmobject_open(dp); - + if (!PyString_Check(arg)) { + PyErr_Format(PyExc_TypeError, + "gdbm key must be string, not %.100s", + arg->ob_type->tp_name); + return -1; + } + key.dptr = PyString_AS_STRING(arg); + key.dsize = PyString_GET_SIZE(arg); return gdbm_exists(dp->di_dbm, key); } From python-checkins at python.org Tue Feb 26 09:21:29 2008 From: python-checkins at python.org (neal.norwitz) Date: Tue, 26 Feb 2008 09:21:29 +0100 (CET) Subject: [Python-checkins] r61084 - in python/trunk: Doc/library/trace.rst Lib/trace.py Misc/NEWS Message-ID: <20080226082129.121631E4006@bag.python.org> Author: neal.norwitz Date: Tue Feb 26 09:21:28 2008 New Revision: 61084 Modified: python/trunk/Doc/library/trace.rst python/trunk/Lib/trace.py python/trunk/Misc/NEWS Log: Add a timing flag to Trace so you can see where slowness occurs like waiting for socket timeouts in test_smtplib :-). Modified: python/trunk/Doc/library/trace.rst ============================================================================== --- python/trunk/Doc/library/trace.rst (original) +++ python/trunk/Doc/library/trace.rst Tue Feb 26 09:21:28 2008 @@ -80,7 +80,7 @@ --------------------- -.. class:: Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None]]]]]]]]) +.. class:: Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None[, timing=False]]]]]]]]]) Create an object to trace execution of a single statement or expression. All parameters are optional. *count* enables counting of line numbers. *trace* @@ -89,7 +89,8 @@ *ignoremods* is a list of modules or packages to ignore. *ignoredirs* is a list of directories whose modules or packages should be ignored. *infile* is the file from which to read stored count information. *outfile* is a file in which - to write updated count information. + to write updated count information. *timing* enables a timestamp relative + to when tracing was started to be displayed. .. method:: Trace.run(cmd) Modified: python/trunk/Lib/trace.py ============================================================================== --- python/trunk/Lib/trace.py (original) +++ python/trunk/Lib/trace.py Tue Feb 26 09:21:28 2008 @@ -53,6 +53,7 @@ import re import sys import threading +import time import token import tokenize import types @@ -98,6 +99,8 @@ with '>>>>>> '. -s, --summary Write a brief summary on stdout for each file. (Can only be used with --count or --report.) +-g, --timing Prefix each line with the time since the program started. + Only used while tracing. Filters, may be repeated multiple times: --ignore-module= Ignore the given module(s) and its submodules @@ -435,7 +438,8 @@ class Trace: def __init__(self, count=1, trace=1, countfuncs=0, countcallers=0, - ignoremods=(), ignoredirs=(), infile=None, outfile=None): + ignoremods=(), ignoredirs=(), infile=None, outfile=None, + timing=False): """ @param count true iff it should count number of times each line is executed @@ -451,6 +455,7 @@ @param infile file from which to read stored counts to be added into the results @param outfile file in which to write the results + @param timing true iff timing information be displayed """ self.infile = infile self.outfile = outfile @@ -463,6 +468,9 @@ self._calledfuncs = {} self._callers = {} self._caller_cache = {} + self.start_time = None + if timing: + self.start_time = time.time() if countcallers: self.globaltrace = self.globaltrace_trackcallers elif countfuncs: @@ -613,6 +621,8 @@ key = filename, lineno self.counts[key] = self.counts.get(key, 0) + 1 + if self.start_time: + print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), @@ -624,6 +634,8 @@ filename = frame.f_code.co_filename lineno = frame.f_lineno + if self.start_time: + print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), @@ -653,13 +665,13 @@ if argv is None: argv = sys.argv try: - opts, prog_argv = getopt.getopt(argv[1:], "tcrRf:d:msC:lT", + opts, prog_argv = getopt.getopt(argv[1:], "tcrRf:d:msC:lTg", ["help", "version", "trace", "count", "report", "no-report", "summary", "file=", "missing", "ignore-module=", "ignore-dir=", "coverdir=", "listfuncs", - "trackcalls"]) + "trackcalls", "timing"]) except getopt.error, msg: sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) @@ -679,6 +691,7 @@ summary = 0 listfuncs = False countcallers = False + timing = False for opt, val in opts: if opt == "--help": @@ -697,6 +710,10 @@ listfuncs = True continue + if opt == "-g" or opt == "--timing": + timing = True + continue + if opt == "-t" or opt == "--trace": trace = 1 continue @@ -779,7 +796,7 @@ t = Trace(count, trace, countfuncs=listfuncs, countcallers=countcallers, ignoremods=ignore_modules, ignoredirs=ignore_dirs, infile=counts_file, - outfile=counts_file) + outfile=counts_file, timing=timing) try: t.run('execfile(%r)' % (progname,)) except IOError, err: Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Feb 26 09:21:28 2008 @@ -441,6 +441,8 @@ Library ------- +- Add a timing parameter when using trace.Trace to print out timestamps. + - #1627: httplib now ignores negative Content-Length headers. - #900744: If an invalid chunked-encoding header is sent by a server, From buildbot at python.org Tue Feb 26 09:44:49 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 08:44:49 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080226084450.1701B1E4006@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/953 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,brett.cannon,christian.heimes,eric.smith,facundo.batista,georg.brandl,jeffrey.yasskin,mark.dickinson,neal.norwitz,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From nnorwitz at gmail.com Tue Feb 26 11:39:37 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 26 Feb 2008 05:39:37 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20080226103937.GA12794@python.psfb.org> More important issues: ---------------------- test_smtplib leaked [-119, 0, 0] references, sum=-119 Less important issues: ---------------------- test_asynchat leaked [0, 0, 92] references, sum=92 test_cmd_line leaked [-23, 0, 0] references, sum=-23 test_threadsignals leaked [0, -8, 0] references, sum=-8 test_urllib2_localnet leaked [3, 3, 127] references, sum=133 From buildbot at python.org Tue Feb 26 13:42:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 12:42:29 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080226124229.B27601E4006@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/126 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,georg.brandl,neal.norwitz BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/threading.py", line 491, in __bootstrap_inner self.run() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/pybot/buildarea-sid/trunk.klose-debian-sparc/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=7339 and list=[7357] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From skip at pobox.com Tue Feb 26 13:57:43 2008 From: skip at pobox.com (skip at pobox.com) Date: Tue, 26 Feb 2008 06:57:43 -0600 Subject: [Python-checkins] r61072 - python/trunk/Modules/dbmmodule.c python/trunk/Modules/gdbmmodule.c In-Reply-To: <20080225223355.945DE1E4021@bag.python.org> References: <20080225223355.945DE1E4021@bag.python.org> Message-ID: <18372.3271.911468.693791@montanaro-dyndns-org.local> facundo> Issue 2168. gdbm and dbm needs to be iterable; this fixes a facundo> failure in the shelve module. Thanks Thomas Herve. ... facundo> +static int facundo> +dbm_contains(register dbmobject *dp, PyObject *v) facundo> +{ facundo> + datum key, val; facundo> + facundo> + if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { facundo> + return -1; facundo> + } facundo> + facundo> + /* Expand check_dbmobject_open to return -1 */ facundo> + if (dp->di_dbm == NULL) { facundo> + PyErr_SetString(DbmError, "DBM object has already been closed"); facundo> + return -1; facundo> + } facundo> + val = dbm_fetch(dp->di_dbm, key); facundo> + return val.dptr != NULL; facundo> +} ... I realize it's not a very long function, but couldn't (shouldn't?) this be written in terms of dbm_has_key (or vice versa) to avoid code duplication (physical or logical)? Skip From buildbot at python.org Tue Feb 26 16:14:05 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 15:14:05 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI 3.0 Message-ID: <20080226151405.983AB1E4006@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%203.0/builds/77 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 18:23:52 2008 From: python-checkins at python.org (christian.heimes) Date: Tue, 26 Feb 2008 18:23:52 +0100 (CET) Subject: [Python-checkins] r61086 - in python/trunk: Lib/test/test_getargs2.py Modules/_testcapimodule.c Python/getargs.c Message-ID: <20080226172352.1356C1E401B@bag.python.org> Author: christian.heimes Date: Tue Feb 26 18:23:51 2008 New Revision: 61086 Modified: python/trunk/Lib/test/test_getargs2.py python/trunk/Modules/_testcapimodule.c python/trunk/Python/getargs.c Log: Patch #1691070 from Roger Upole: Speed up PyArg_ParseTupleAndKeywords() and improve error msg My tests don't show the promised speed up of 10%. The code is as fast as the old code for simple cases and slightly faster for complex cases with several of args and kwargs. But the patch simplifies the code, too. Modified: python/trunk/Lib/test/test_getargs2.py ============================================================================== --- python/trunk/Lib/test/test_getargs2.py (original) +++ python/trunk/Lib/test/test_getargs2.py Tue Feb 26 18:23:51 2008 @@ -1,5 +1,6 @@ import unittest from test import test_support +from _testcapi import getargs_keywords import warnings warnings.filterwarnings("ignore", @@ -248,9 +249,57 @@ raise ValueError self.assertRaises(TypeError, getargs_tuple, 1, seq()) +class Keywords_TestCase(unittest.TestCase): + def test_positional_args(self): + # using all positional args + self.assertEquals( + getargs_keywords((1,2), 3, (4,(5,6)), (7,8,9), 10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_mixed_args(self): + # positional and keyword args + self.assertEquals( + getargs_keywords((1,2), 3, (4,(5,6)), arg4=(7,8,9), arg5=10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_keyword_args(self): + # all keywords + self.assertEquals( + getargs_keywords(arg1=(1,2), arg2=3, arg3=(4,(5,6)), arg4=(7,8,9), arg5=10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_optional_args(self): + # missing optional keyword args, skipping tuples + self.assertEquals( + getargs_keywords(arg1=(1,2), arg2=3, arg5=10), + (1, 2, 3, -1, -1, -1, -1, -1, -1, 10) + ) + def test_required_args(self): + # required arg missing + try: + getargs_keywords(arg1=(1,2)) + except TypeError, err: + self.assertEquals(str(err), "Required argument 'arg2' (pos 2) not found") + else: + self.fail('TypeError should have been raised') + def test_too_many_args(self): + try: + getargs_keywords((1,2),3,(4,(5,6)),(7,8,9),10,111) + except TypeError, err: + self.assertEquals(str(err), "function takes at most 5 arguments (6 given)") + else: + self.fail('TypeError should have been raised') + def test_invalid_keyword(self): + # extraneous keyword arg + try: + getargs_keywords((1,2),3,arg5=10,arg666=666) + except TypeError, err: + self.assertEquals(str(err), "'arg666' is an invalid keyword argument for this function") + else: + self.fail('TypeError should have been raised') def test_main(): - tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase] + tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase, Keywords_TestCase] try: from _testcapi import getargs_L, getargs_K except ImportError: Modified: python/trunk/Modules/_testcapimodule.c ============================================================================== --- python/trunk/Modules/_testcapimodule.c (original) +++ python/trunk/Modules/_testcapimodule.c Tue Feb 26 18:23:51 2008 @@ -306,6 +306,22 @@ return Py_BuildValue("iii", a, b, c); } +/* test PyArg_ParseTupleAndKeywords */ +static PyObject *getargs_keywords(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *keywords[] = {"arg1","arg2","arg3","arg4","arg5", NULL}; + static char *fmt="(ii)i|(i(ii))(iii)i"; + int int_args[10]={-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, fmt, keywords, + &int_args[0], &int_args[1], &int_args[2], &int_args[3], &int_args[4], + &int_args[5], &int_args[6], &int_args[7], &int_args[8], &int_args[9])) + return NULL; + return Py_BuildValue("iiiiiiiiii", + int_args[0], int_args[1], int_args[2], int_args[3], int_args[4], + int_args[5], int_args[6], int_args[7], int_args[8], int_args[9]); +} + /* Functions to call PyArg_ParseTuple with integer format codes, and return the result. */ @@ -732,6 +748,8 @@ PyDoc_STR("This is a pretty normal docstring.")}, {"getargs_tuple", getargs_tuple, METH_VARARGS}, + {"getargs_keywords", (PyCFunction)getargs_keywords, + METH_VARARGS|METH_KEYWORDS}, {"getargs_b", getargs_b, METH_VARARGS}, {"getargs_B", getargs_B, METH_VARARGS}, {"getargs_H", getargs_H, METH_VARARGS}, Modified: python/trunk/Python/getargs.c ============================================================================== --- python/trunk/Python/getargs.c (original) +++ python/trunk/Python/getargs.c Tue Feb 26 18:23:51 2008 @@ -1345,6 +1345,7 @@ return retval; } +#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':') static int vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, @@ -1352,13 +1353,10 @@ { char msgbuf[512]; int levels[32]; - const char *fname, *message; - int min, max; - const char *formatsave; + const char *fname, *msg, *custom_msg, *keyword; + int min = INT_MAX; int i, len, nargs, nkeywords; - const char *msg; - char **p; - PyObject *freelist = NULL; + PyObject *freelist = NULL, *current_arg; assert(args != NULL && PyTuple_Check(args)); assert(keywords == NULL || PyDict_Check(keywords)); @@ -1366,168 +1364,108 @@ assert(kwlist != NULL); assert(p_va != NULL); - /* Search the format: - message <- error msg, if any (else NULL). - fname <- routine name, if any (else NULL). - min <- # of required arguments, or -1 if all are required. - max <- most arguments (required + optional). - Check that kwlist has a non-NULL entry for each arg. - Raise error if a tuple arg spec is found. - */ - fname = message = NULL; - formatsave = format; - p = kwlist; - min = -1; - max = 0; - while ((i = *format++) != '\0') { - if (isalpha(Py_CHARMASK(i)) && i != 'e') { - max++; - if (*p == NULL) { - PyErr_SetString(PyExc_RuntimeError, - "more argument specifiers than " - "keyword list entries"); - return 0; - } - p++; - } - else if (i == '|') - min = max; - else if (i == ':') { - fname = format; - break; - } - else if (i == ';') { - message = format; - break; - } - else if (i == '(') { - PyErr_SetString(PyExc_RuntimeError, - "tuple found in format when using keyword " - "arguments"); - return 0; - } - } - format = formatsave; - if (*p != NULL) { - PyErr_SetString(PyExc_RuntimeError, - "more keyword list entries than " - "argument specifiers"); - return 0; - } - if (min < 0) { - /* All arguments are required. */ - min = max; - } - - nargs = PyTuple_GET_SIZE(args); - nkeywords = keywords == NULL ? 0 : PyDict_Size(keywords); - - /* make sure there are no duplicate values for an argument; - its not clear when to use the term "keyword argument vs. - keyword parameter in messages */ - if (nkeywords > 0) { - for (i = 0; i < nargs; i++) { - const char *thiskw = kwlist[i]; - if (thiskw == NULL) - break; - if (PyDict_GetItemString(keywords, thiskw)) { - PyErr_Format(PyExc_TypeError, - "keyword parameter '%s' was given " - "by position and by name", - thiskw); - return 0; - } - else if (PyErr_Occurred()) - return 0; - } + /* grab the function name or custom error msg first (mutually exclusive) */ + fname = strchr(format, ':'); + if (fname) { + fname++; + custom_msg = NULL; + } + else { + custom_msg = strchr(format,';'); + if (custom_msg) + custom_msg++; } - /* required arguments missing from args can be supplied by keyword - arguments; set len to the number of positional arguments, and, - if that's less than the minimum required, add in the number of - required arguments that are supplied by keywords */ - len = nargs; - if (nkeywords > 0 && nargs < min) { - for (i = nargs; i < min; i++) { - if (PyDict_GetItemString(keywords, kwlist[i])) - len++; - else if (PyErr_Occurred()) - return 0; - } - } + /* scan kwlist and get greatest possible nbr of args */ + for (len=0; kwlist[len]; len++) + continue; - /* make sure we got an acceptable number of arguments; the message - is a little confusing with keywords since keyword arguments - which are supplied, but don't match the required arguments - are not included in the "%d given" part of the message - XXX and this isn't a bug!? */ - if (len < min || max < len) { - if (message == NULL) { - PyOS_snprintf(msgbuf, sizeof(msgbuf), - "%.200s%s takes %s %d argument%s " - "(%d given)", - fname==NULL ? "function" : fname, - fname==NULL ? "" : "()", - min==max ? "exactly" - : len < min ? "at least" : "at most", - len < min ? min : max, - (len < min ? min : max) == 1 ? "" : "s", - len); - message = msgbuf; - } - PyErr_SetString(PyExc_TypeError, message); + nargs = PyTuple_GET_SIZE(args); + nkeywords = (keywords == NULL) ? 0 : PyDict_Size(keywords); + if (nargs + nkeywords > len) { + PyErr_Format(PyExc_TypeError, "%s%s takes at most %d " + "argument%s (%d given)", + (fname == NULL) ? "function" : fname, + (fname == NULL) ? "" : "()", + len, + (len == 1) ? "" : "s", + nargs + nkeywords); return 0; } - /* convert the positional arguments */ - for (i = 0; i < nargs; i++) { - if (*format == '|') + /* convert tuple args and keyword args in same loop, using kwlist to drive process */ + for (i = 0; i < len; i++) { + keyword = kwlist[i]; + if (*format == '|') { + min = i; format++; - msg = convertitem(PyTuple_GET_ITEM(args, i), &format, p_va, - flags, levels, msgbuf, sizeof(msgbuf), - &freelist); - if (msg) { - seterror(i+1, msg, levels, fname, message); + } + if (IS_END_OF_FORMAT(*format)) { + PyErr_Format(PyExc_RuntimeError, + "More keyword list entries (%d) than " + "format specifiers (%d)", len, i); return cleanreturn(0, freelist); } - } - - /* handle no keyword parameters in call */ - if (nkeywords == 0) - return cleanreturn(1, freelist); - - /* convert the keyword arguments; this uses the format - string where it was left after processing args */ - for (i = nargs; i < max; i++) { - PyObject *item; - if (*format == '|') - format++; - item = PyDict_GetItemString(keywords, kwlist[i]); - if (item != NULL) { - Py_INCREF(item); - msg = convertitem(item, &format, p_va, flags, levels, - msgbuf, sizeof(msgbuf), &freelist); - Py_DECREF(item); - if (msg) { - seterror(i+1, msg, levels, fname, message); + current_arg = NULL; + if (nkeywords) { + current_arg = PyDict_GetItemString(keywords, keyword); + } + if (current_arg) { + --nkeywords; + if (i < nargs) { + /* arg present in tuple and in dict */ + PyErr_Format(PyExc_TypeError, + "Argument given by name ('%s') " + "and position (%d)", + keyword, i+1); return cleanreturn(0, freelist); } - --nkeywords; - if (nkeywords == 0) - break; } - else if (PyErr_Occurred()) + else if (nkeywords && PyErr_Occurred()) return cleanreturn(0, freelist); - else { - msg = skipitem(&format, p_va, flags); + else if (i < nargs) + current_arg = PyTuple_GET_ITEM(args, i); + + if (current_arg) { + msg = convertitem(current_arg, &format, p_va, flags, + levels, msgbuf, sizeof(msgbuf), &freelist); if (msg) { - levels[0] = 0; - seterror(i+1, msg, levels, fname, message); + seterror(i+1, msg, levels, fname, custom_msg); return cleanreturn(0, freelist); } + continue; + } + + if (i < min) { + PyErr_Format(PyExc_TypeError, "Required argument " + "'%s' (pos %d) not found", + keyword, i+1); + return cleanreturn(0, freelist); + } + /* current code reports success when all required args + * fulfilled and no keyword args left, with no further + * validation. XXX Maybe skip this in debug build ? + */ + if (!nkeywords) + return cleanreturn(1, freelist); + + /* We are into optional args, skip thru to any remaining + * keyword args */ + msg = skipitem(&format, p_va, flags); + if (msg) { + PyErr_Format(PyExc_RuntimeError, "%s: '%s'", msg, + format); + return cleanreturn(0, freelist); } } + if (!IS_END_OF_FORMAT(*format)) { + PyErr_Format(PyExc_RuntimeError, + "more argument specifiers than keyword list entries " + "(remaining format:'%s')", format); + return cleanreturn(0, freelist); + } + /* make sure there are no extraneous keyword arguments */ if (nkeywords > 0) { PyObject *key, *value; @@ -1541,7 +1479,7 @@ return cleanreturn(0, freelist); } ks = PyString_AsString(key); - for (i = 0; i < max; i++) { + for (i = 0; i < len; i++) { if (!strcmp(ks, kwlist[i])) { match = 1; break; @@ -1564,7 +1502,7 @@ static char * skipitem(const char **p_format, va_list *p_va, int flags) { - const char *format = *p_format; + const char *format = *p_format; char c = *format++; switch (c) { @@ -1671,16 +1609,33 @@ } break; } - + + case '(': /* bypass tuple, not handled at all previously */ + { + char *msg; + for (;;) { + if (*format==')') + break; + if (IS_END_OF_FORMAT(*format)) + return "Unmatched left paren in format " + "string"; + msg = skipitem(&format, p_va, flags); + if (msg) + return msg; + } + format++; + break; + } + + case ')': + return "Unmatched right paren in format string"; + default: err: return "impossible"; } - /* The "(...)" format code for tuples is not handled here because - * it is not allowed with keyword args. */ - *p_format = format; return NULL; } From buildbot at python.org Tue Feb 26 18:56:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 17:56:29 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080226175629.A61F71E4006@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2930 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 19:08:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 18:08:55 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080226180855.6C01B1E4006@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/409 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_urllib2 test_urllib2net ====================================================================== ERROR: test_trivial (test.test_urllib2.TrivialTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2.py", line 19, in test_trivial self.assertRaises(ValueError, urllib2.urlopen, 'bogus url') File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/unittest.py", line 329, in failUnlessRaises callableObj(*args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2.py", line 619, in test_file r = h.file_open(Request(url)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 1207, in file_open return self.open_local_file(req) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 1226, in open_local_file localfile = url2pathname(file) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 55, in url2pathname return unquote(pathname) TypeError: 'NoneType' object is not callable ====================================================================== ERROR: test_http (test.test_urllib2.HandlerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2.py", line 725, in test_http r.read; r.readline # wrapped MockFile methods AttributeError: addinfourl instance has no attribute 'read' ====================================================================== ERROR: test_build_opener (test.test_urllib2.MiscTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2.py", line 1040, in test_build_opener o = build_opener(FooHandler, BarHandler) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: testURLread (test.test_urllib2net.URLTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 38, in testURLread f = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_bad_address (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 161, in test_bad_address urllib2.urlopen, "http://www.python.invalid./") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/unittest.py", line 329, in failUnlessRaises callableObj(*args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_basic (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 119, in test_basic open_url = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_geturl (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 143, in test_geturl open_url = _urlopen_with_retry(URL) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_info (test.test_urllib2net.urlopenNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 130, in test_info open_url = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_file (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 201, in test_file self._test_urls(urls, self._extra_handlers(), urllib2.urlopen) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 249, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 189, in test_ftp self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 249, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 213, in test_http self._test_urls(urls, self._extra_handlers()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 249, in _test_urls urllib2.install_opener(urllib2.build_opener(*handlers)) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_range (test.test_urllib2net.OtherNetworkTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 174, in test_range result = _urlopen_with_retry(req) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_close (test.test_urllib2net.CloseSocketTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 90, in test_close response = _urlopen_with_retry("http://www.python.org/") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 320, in test_ftp_NoneNodefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 314, in test_ftp_NoneWithdefault u = _urlopen_with_retry(self.FTP_HOST, timeout=None) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 324, in test_ftp_Value u = _urlopen_with_retry(self.FTP_HOST, timeout=60) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_ftp_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 307, in test_ftp_basic u = _urlopen_with_retry(self.FTP_HOST) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneNodefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 301, in test_http_NoneNodefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_NoneWithdefault (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 291, in test_http_NoneWithdefault u = _urlopen_with_retry("http://www.python.org", timeout=None) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_Value (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 297, in test_http_Value u = _urlopen_with_retry("http://www.python.org", timeout=120) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' ====================================================================== ERROR: test_http_basic (test.test_urllib2net.TimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 284, in test_http_basic u = _urlopen_with_retry("http://www.python.org") File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/test/test_urllib2net.py", line 19, in _urlopen_with_retry return urllib2.urlopen(host, *args, **kwargs) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 123, in urlopen _opener = build_opener() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 461, in build_opener opener.add_handler(klass()) File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib2.py", line 673, in __init__ proxies = getproxies() File "/home/pybot/buildarea64/trunk.klose-debian-ppc64/build/Lib/urllib.py", line 1294, in getproxies_environment for name, value in os.environ.items(): AttributeError: 'NoneType' object has no attribute 'environ' make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 19:14:06 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 18:14:06 +0000 Subject: [Python-checkins] buildbot failure in sparc solaris10 gcc trunk Message-ID: <20080226181406.9D0CD1E4036@bag.python.org> The Buildbot has detected a new failure of sparc solaris10 gcc trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20solaris10%20gcc%20trunk/builds/2871 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: loewis-sun Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/threading.py", line 491, in __bootstrap_inner self.run() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 97, in run svr.serve_a_few() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/test/test_socketserver.py", line 66, in serve_a_few self.handle_request() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/opt/users/buildbot/slave/trunk.loewis-sun/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=13335 and list=[13346] 1 test failed: test_socketserver sincerely, -The Buildbot From buildbot at python.org Tue Feb 26 19:19:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 18:19:02 +0000 Subject: [Python-checkins] buildbot failure in hppa Ubuntu trunk Message-ID: <20080226181902.5F5BB1E4006@bag.python.org> The Buildbot has detected a new failure of hppa Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/hppa%20Ubuntu%20trunk/builds/727 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-hppa Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Segmentation fault sincerely, -The Buildbot From python-checkins at python.org Tue Feb 26 20:13:45 2008 From: python-checkins at python.org (georg.brandl) Date: Tue, 26 Feb 2008 20:13:45 +0100 (CET) Subject: [Python-checkins] r61087 - in python/trunk/Doc: tutorial/interpreter.rst using/unix.rst using/windows.rst Message-ID: <20080226191345.D40331E4006@bag.python.org> Author: georg.brandl Date: Tue Feb 26 20:13:45 2008 New Revision: 61087 Modified: python/trunk/Doc/tutorial/interpreter.rst python/trunk/Doc/using/unix.rst python/trunk/Doc/using/windows.rst Log: #2194: fix some typos. Modified: python/trunk/Doc/tutorial/interpreter.rst ============================================================================== --- python/trunk/Doc/tutorial/interpreter.rst (original) +++ python/trunk/Doc/tutorial/interpreter.rst Tue Feb 26 20:13:45 2008 @@ -22,7 +22,7 @@ alternative location.) On Windows machines, the Python installation is usually placed in -:file:`C:\Python26`, though you can change this when you're running the +:file:`C:\\Python26`, though you can change this when you're running the installer. To add this directory to your path, you can type the following command into the command prompt in a DOS box:: Modified: python/trunk/Doc/using/unix.rst ============================================================================== --- python/trunk/Doc/using/unix.rst (original) +++ python/trunk/Doc/using/unix.rst Tue Feb 26 20:13:45 2008 @@ -20,7 +20,7 @@ that are not available on your distro's package. You can easily compile the latest version of Python from source. -In the event Python doesn't come preinstalled and isn't in the repositories as +In the event that Python doesn't come preinstalled and isn't in the repositories as well, you can easily make packages for your own distro. Have a look at the following links: Modified: python/trunk/Doc/using/windows.rst ============================================================================== --- python/trunk/Doc/using/windows.rst (original) +++ python/trunk/Doc/using/windows.rst Tue Feb 26 20:13:45 2008 @@ -21,7 +21,7 @@ `_ for many years. With ongoing development of Python, some platforms that used to be supported -earlier are not longer supported (due to the lack of users or developers). +earlier are no longer supported (due to the lack of users or developers). Check :pep:`11` for details on all unsupported platforms. * DOS and Windows 3.x are deprecated since Python 2.0 and code specific to these From python-checkins at python.org Wed Feb 27 00:40:50 2008 From: python-checkins at python.org (raymond.hettinger) Date: Wed, 27 Feb 2008 00:40:50 +0100 (CET) Subject: [Python-checkins] r61088 - in python/trunk: Doc/library/itertools.rst Lib/test/test_itertools.py Misc/NEWS Modules/itertoolsmodule.c Message-ID: <20080226234050.8C9C11E4006@bag.python.org> Author: raymond.hettinger Date: Wed Feb 27 00:40:50 2008 New Revision: 61088 Modified: python/trunk/Doc/library/itertools.rst python/trunk/Lib/test/test_itertools.py python/trunk/Misc/NEWS python/trunk/Modules/itertoolsmodule.c Log: Add itertools.combinations(). Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Wed Feb 27 00:40:50 2008 @@ -97,21 +97,21 @@ def combinations(iterable, r): pool = tuple(iterable) - if pool: - n = len(pool) - vec = range(r) - yield tuple(pool[i] for i in vec) - while 1: - for i in reversed(range(r)): - if vec[i] == i + n-r: - continue - vec[i] += 1 - for j in range(i+1, r): - vec[j] = vec[j-1] + 1 - yield tuple(pool[i] for i in vec) - break - else: - return + n = len(pool) + assert 0 <= r <= n + vec = range(r) + yield tuple(pool[i] for i in vec) + while 1: + for i in reversed(range(r)): + if vec[i] == i + n-r: + continue + vec[i] += 1 + for j in range(i+1, r): + vec[j] = vec[j-1] + 1 + yield tuple(pool[i] for i in vec) + break + else: + return .. versionadded:: 2.6 Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Wed Feb 27 00:40:50 2008 @@ -40,6 +40,10 @@ 'Convenience function for partially consuming a long of infinite iterable' return list(islice(seq, n)) +def fact(n): + 'Factorial' + return reduce(operator.mul, range(1, n+1), 1) + class TestBasicOps(unittest.TestCase): def test_chain(self): self.assertEqual(list(chain('abc', 'def')), list('abcdef')) @@ -48,6 +52,26 @@ self.assertEqual(take(4, chain('abc', 'def')), list('abcd')) self.assertRaises(TypeError, chain, 2, 3) + def test_combinations(self): + self.assertRaises(TypeError, combinations, 'abc') # missing r argument + self.assertRaises(TypeError, combinations, 'abc', 2, 1) # too many arguments + self.assertRaises(ValueError, combinations, 'abc', -2) # r is negative + self.assertRaises(ValueError, combinations, 'abc', 32) # r is too big + self.assertEqual(list(combinations(range(4), 3)), + [(0,1,2), (0,1,3), (0,2,3), (1,2,3)]) + for n in range(6): + values = [5*x-12 for x in range(n)] + for r in range(n+1): + result = list(combinations(values, r)) + self.assertEqual(len(result), fact(n) / fact(r) / fact(n-r)) # right number of combs + self.assertEqual(len(result), len(set(result))) # no repeats + self.assertEqual(result, sorted(result)) # lexicographic order + for c in result: + self.assertEqual(len(c), r) # r-length combinations + self.assertEqual(len(set(c)), r) # no duplicate elements + self.assertEqual(list(c), sorted(c)) # keep original ordering + self.assert_(all(e in values for e in c)) # elements taken from input iterable + def test_count(self): self.assertEqual(zip('abc',count()), [('a', 0), ('b', 1), ('c', 2)]) self.assertEqual(zip('abc',count(3)), [('a', 3), ('b', 4), ('c', 5)]) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Feb 27 00:40:50 2008 @@ -670,6 +670,8 @@ - Added itertools.product() which forms the Cartesian product of the input iterables. +- Added itertools.combinations(). + - Patch #1541463: optimize performance of cgi.FieldStorage operations. - Decimal is fully updated to the latest Decimal Specification (v1.66). Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Wed Feb 27 00:40:50 2008 @@ -1982,6 +1982,229 @@ }; +/* combinations object ************************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *pool; /* input converted to a tuple */ + Py_ssize_t *indices; /* one index per result element */ + PyObject *result; /* most recently returned result tuple */ + Py_ssize_t r; /* size of result tuple */ + int stopped; /* set to 1 when the combinations iterator is exhausted */ +} combinationsobject; + +static PyTypeObject combinations_type; + +static PyObject * +combinations_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + combinationsobject *co; + Py_ssize_t n; + Py_ssize_t r; + PyObject *pool = NULL; + PyObject *iterable = NULL; + Py_ssize_t *indices = NULL; + Py_ssize_t i; + static char *kwargs[] = {"iterable", "r", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "On:combinations", kwargs, + &iterable, &r)) + return NULL; + + pool = PySequence_Tuple(iterable); + if (pool == NULL) + goto error; + n = PyTuple_GET_SIZE(pool); + if (r < 0) { + PyErr_SetString(PyExc_ValueError, "r must be non-negative"); + goto error; + } + if (r > n) { + PyErr_SetString(PyExc_ValueError, "r cannot be bigger than the iterable"); + goto error; + } + + indices = PyMem_Malloc(r * sizeof(Py_ssize_t)); + if (indices == NULL) { + PyErr_NoMemory(); + goto error; + } + + for (i=0 ; itp_alloc(type, 0); + if (co == NULL) + goto error; + + co->pool = pool; + co->indices = indices; + co->result = NULL; + co->r = r; + co->stopped = 0; + + return (PyObject *)co; + +error: + if (indices != NULL) + PyMem_Free(indices); + Py_XDECREF(pool); + return NULL; +} + +static void +combinations_dealloc(combinationsobject *co) +{ + PyObject_GC_UnTrack(co); + Py_XDECREF(co->pool); + Py_XDECREF(co->result); + PyMem_Free(co->indices); + Py_TYPE(co)->tp_free(co); +} + +static int +combinations_traverse(combinationsobject *co, visitproc visit, void *arg) +{ + Py_VISIT(co->pool); + Py_VISIT(co->result); + return 0; +} + +static PyObject * +combinations_next(combinationsobject *co) +{ + PyObject *elem; + PyObject *oldelem; + PyObject *pool = co->pool; + Py_ssize_t *indices = co->indices; + PyObject *result = co->result; + Py_ssize_t n = PyTuple_GET_SIZE(pool); + Py_ssize_t r = co->r; + Py_ssize_t i, j, index; + + if (co->stopped) + return NULL; + + if (result == NULL) { + /* On the first pass, initialize result tuple using the indices */ + result = PyTuple_New(r); + if (result == NULL) + goto empty; + co->result = result; + for (i=0; i 1) { + PyObject *old_result = result; + result = PyTuple_New(r); + if (result == NULL) + goto empty; + co->result = result; + for (i=0; i= 0 && indices[i] == i+n-r ; i--) + ; + + /* If i is negative, then the indices are all at + their maximum value and we're done. */ + if (i < 0) + goto empty; + + /* Increment the current index which we know is not at its + maximum. Then move back to the right setting each index + to its lowest possible value (one higher than the index + to its left -- this maintains the sort order invariant). */ + indices[i]++; + for (j=i+1 ; jstopped = 1; + return NULL; +} + +PyDoc_STRVAR(combinations_doc, +"combinations(iterables) --> combinations object\n\ +\n\ +Return successive r-length combinations of elements in the iterable.\n\n\ +combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)"); + +static PyTypeObject combinations_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "itertools.combinations", /* tp_name */ + sizeof(combinationsobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)combinations_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + combinations_doc, /* tp_doc */ + (traverseproc)combinations_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)combinations_next, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + combinations_new, /* tp_new */ + PyObject_GC_Del, /* tp_free */ +}; + + /* ifilter object ************************************************************/ typedef struct { @@ -3026,6 +3249,7 @@ PyObject *m; char *name; PyTypeObject *typelist[] = { + &combinations_type, &cycle_type, &dropwhile_type, &takewhile_type, @@ -3038,7 +3262,7 @@ &count_type, &izip_type, &iziplongest_type, - &product_type, + &product_type, &repeat_type, &groupby_type, NULL From buildbot at python.org Wed Feb 27 00:49:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 23:49:19 +0000 Subject: [Python-checkins] buildbot failure in S-390 Debian trunk Message-ID: <20080226234919.402531E4006@bag.python.org> The Buildbot has detected a new failure of S-390 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/S-390%20Debian%20trunk/builds/103 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-s390 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 00:57:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 23:57:57 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080226235757.37D1F1E4008@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/270 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted (core dumped) sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 00:59:29 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 23:59:29 +0000 Subject: [Python-checkins] buildbot failure in sparc Ubuntu trunk Message-ID: <20080226235929.DB0A61E4008@bag.python.org> The Buildbot has detected a new failure of sparc Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Ubuntu%20trunk/builds/279 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-ubuntu-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 00:59:40 2008 From: buildbot at python.org (buildbot at python.org) Date: Tue, 26 Feb 2008 23:59:40 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080226235940.9FD361E4008@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/657 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 01:00:58 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 00:00:58 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080227000059.055791E4008@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/128 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 01:04:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 00:04:39 +0000 Subject: [Python-checkins] buildbot failure in x86 gentoo trunk Message-ID: <20080227000439.A82FB1E4008@bag.python.org> The Buildbot has detected a new failure of x86 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20gentoo%20trunk/builds/3144 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-x86 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 01:07:14 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 00:07:14 +0000 Subject: [Python-checkins] buildbot failure in ia64 Ubuntu trunk Message-ID: <20080227000714.309CF1E400A@bag.python.org> The Buildbot has detected a new failure of ia64 Ubuntu trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ia64%20Ubuntu%20trunk/builds/1518 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ia64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 01:16:39 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 00:16:39 +0000 Subject: [Python-checkins] buildbot failure in ppc Debian unstable trunk Message-ID: <20080227001639.E69D81E4008@bag.python.org> The Buildbot has detected a new failure of ppc Debian unstable trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ppc%20Debian%20unstable%20trunk/builds/901 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 01:56:00 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 00:56:00 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080227005600.5A5521E400F@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2607 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: georg.brandl,raymond.hettinger BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Wed Feb 27 02:03:48 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 01:03:48 +0000 Subject: [Python-checkins] buildbot failure in ARM Linux EABI trunk Message-ID: <20080227010349.1C0F11E4008@bag.python.org> The Buildbot has detected a new failure of ARM Linux EABI trunk. Full details are available at: http://www.python.org/dev/buildbot/all/ARM%20Linux%20EABI%20trunk/builds/116 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-linux-armeabi Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Wed Feb 27 02:08:04 2008 From: python-checkins at python.org (raymond.hettinger) Date: Wed, 27 Feb 2008 02:08:04 +0100 (CET) Subject: [Python-checkins] r61089 - python/trunk/Modules/itertoolsmodule.c Message-ID: <20080227010804.ED5B81E4008@bag.python.org> Author: raymond.hettinger Date: Wed Feb 27 02:08:04 2008 New Revision: 61089 Modified: python/trunk/Modules/itertoolsmodule.c Log: One too many decrefs. Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Wed Feb 27 02:08:04 2008 @@ -1794,10 +1794,8 @@ /* create productobject structure */ lz = (productobject *)type->tp_alloc(type, 0); - if (lz == NULL) { - Py_DECREF(pools); + if (lz == NULL) goto error; - } lz->pools = pools; lz->maxvec = maxvec; From python-checkins at python.org Wed Feb 27 02:08:31 2008 From: python-checkins at python.org (raymond.hettinger) Date: Wed, 27 Feb 2008 02:08:31 +0100 (CET) Subject: [Python-checkins] r61090 - python/trunk/Lib/test/test_itertools.py Message-ID: <20080227010831.436EB1E4008@bag.python.org> Author: raymond.hettinger Date: Wed Feb 27 02:08:30 2008 New Revision: 61090 Modified: python/trunk/Lib/test/test_itertools.py Log: Larger test range Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Wed Feb 27 02:08:30 2008 @@ -59,7 +59,7 @@ self.assertRaises(ValueError, combinations, 'abc', 32) # r is too big self.assertEqual(list(combinations(range(4), 3)), [(0,1,2), (0,1,3), (0,2,3), (1,2,3)]) - for n in range(6): + for n in range(8): values = [5*x-12 for x in range(n)] for r in range(n+1): result = list(combinations(values, r)) From python-checkins at python.org Wed Feb 27 02:44:35 2008 From: python-checkins at python.org (raymond.hettinger) Date: Wed, 27 Feb 2008 02:44:35 +0100 (CET) Subject: [Python-checkins] r61091 - python/trunk/Doc/library/itertools.rst Message-ID: <20080227014435.07C2B1E4008@bag.python.org> Author: raymond.hettinger Date: Wed Feb 27 02:44:34 2008 New Revision: 61091 Modified: python/trunk/Doc/library/itertools.rst Log: Simply the sample code for combinations(). Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Wed Feb 27 02:44:34 2008 @@ -103,15 +103,14 @@ yield tuple(pool[i] for i in vec) while 1: for i in reversed(range(r)): - if vec[i] == i + n-r: - continue - vec[i] += 1 - for j in range(i+1, r): - vec[j] = vec[j-1] + 1 - yield tuple(pool[i] for i in vec) - break + if vec[i] != i + n - r: + break else: return + vec[i] += 1 + for j in range(i+1, r): + vec[j] = vec[j-1] + 1 + yield tuple(pool[i] for i in vec) .. versionadded:: 2.6 From buildbot at python.org Wed Feb 27 03:28:36 2008 From: buildbot at python.org (buildbot at python.org) Date: Wed, 27 Feb 2008 02:28:36 +0000 Subject: [Python-checkins] buildbot failure in alpha Debian trunk Message-ID: <20080227022836.3F8391E4008@bag.python.org> The Buildbot has detected a new failure of alpha Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Debian%20trunk/builds/49 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-alpha Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,georg.brandl,neal.norwitz,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: make: *** [buildbottest] Aborted sincerely, -The Buildbot From python-checkins at python.org Wed Feb 27 08:12:29 2008 From: python-checkins at python.org (georg.brandl) Date: Wed, 27 Feb 2008 08:12:29 +0100 (CET) Subject: [Python-checkins] r61092 - doctools/trunk/sphinx/latexwriter.py Message-ID: <20080227071229.C5CF91E4008@bag.python.org> Author: georg.brandl Date: Wed Feb 27 08:12:29 2008 New Revision: 61092 Modified: doctools/trunk/sphinx/latexwriter.py Log: Two latex writer fixes. Modified: doctools/trunk/sphinx/latexwriter.py ============================================================================== --- doctools/trunk/sphinx/latexwriter.py (original) +++ doctools/trunk/sphinx/latexwriter.py Wed Feb 27 08:12:29 2008 @@ -164,10 +164,12 @@ self.body.append('}') def visit_topic(self, node): - self.body.append('\\begin{center}\\setlength{\\fboxsep}{5pt}' - '\\fbox{\\begin{minipage}{0.95\\textwidth}\n') + self.body.append('\\setbox0\\vbox{\n' + '\\begin{minipage}{0.95\\textwidth}\n') def depart_topic(self, node): - self.body.append('\end{minipage}}\\end{center}\n') + self.body.append('\\end{minipage}}\n' + '\\begin{center}\\setlength{\\fboxsep}{5pt}' + '\\shadowbox{\\box0}\\end{center}\n') visit_sidebar = visit_topic depart_sidebar = depart_topic @@ -574,6 +576,11 @@ self.builder.warn('unknown index entry type %s found' % type) raise nodes.SkipNode + def visit_raw(self, node): + if 'latex' in node.get('format', '').split(): + self.body.append(r'%s' % node.astext()) + raise nodes.SkipNode + def visit_reference(self, node): uri = node.get('refuri', '') if self.in_title or not uri: From python-checkins at python.org Wed Feb 27 08:18:15 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 27 Feb 2008 08:18:15 +0100 (CET) Subject: [Python-checkins] r61093 - in python/branches/libffi3-branch/Modules/_ctypes/libffi: include/ffi.h.in src/alpha/ffi.c src/alpha/osf.S src/arm/ffi.c src/arm/sysv.S src/frv/ffi.c src/ia64/ffi.c src/ia64/unix.S src/m32r/ffi.c src/m68k/sysv.S src/mips/ffi.c src/pa/ffi.c src/pa/linux.S src/powerpc/ffi.c src/powerpc/linux64.S src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S src/powerpc/sysv.S src/s390/ffi.c src/s390/sysv.S src/sh/ffi.c src/sh64/ffi.c src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S src/x86/ffi.c src/x86/ffi64.c src/x86/sysv.S src/x86/unix64.S Message-ID: <20080227071815.C25071E4008@bag.python.org> Author: thomas.heller Date: Wed Feb 27 08:18:14 2008 New Revision: 61093 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64_closure.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S Log: Sync files with libffi3 cvs repo. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/include/ffi.h.in Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - libffi @VERSION@ - Copyright (c) 1996-2003, 2007 Red Hat, Inc. + libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998, 2001, 2007 Red Hat, Inc. + ffi.c - Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. Alpha Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/alpha/osf.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - osf.S - Copyright (c) 1998, 2001, 2007 Red Hat + osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat Alpha/OSF Foreign Function Interface @@ -14,14 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -32,7 +32,7 @@ .text /* ffi_call_osf (void *args, unsigned long bytes, unsigned flags, - void *raddr, void (*fnaddr)()); + void *raddr, void (*fnaddr)(void)); Bit o trickiness here -- ARGS+BYTES is the base of the stack frame for this function. This has been allocated by ffi_call. We also @@ -359,4 +359,8 @@ .byte 16 # uleb128 offset 16*-8 .align 3 $LEFDE3: + +#ifdef __linux__ + .section .note.GNU-stack,"", at progbits +#endif #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998 Red Hat, Inc. + ffi.c - Copyright (c) 1998, 2008 Red Hat, Inc. ARM Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/arm/sysv.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 1998 Red Hat, Inc. + sysv.S - Copyright (c) 1998, 2008 Red Hat, Inc. ARM Foreign Function Interface @@ -14,14 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -294,3 +294,6 @@ UNWIND .fnend .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/frv/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,6 +1,7 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2004 Anthony Green - Copyright (C) 2007 Free Software Foundation, Inc. + ffi.c - Copyright (C) 2004 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2008 Red Hat, Inc. FR-V Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1998, 2007 Red Hat, Inc. + ffi.c - Copyright (c) 1998, 2007, 2008 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company IA64 Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/ia64/unix.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - unix.S - Copyright (c) 1998 Red Hat, Inc. + unix.S - Copyright (c) 1998, 2008 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company IA64/unix Foreign Function Interface @@ -19,14 +19,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -38,7 +38,7 @@ .text /* int ffi_call_unix (struct ia64_args *stack, PTR64 rvalue, - void (*fn)(), int flags); + void (*fn)(void), int flags); */ .align 16 @@ -554,3 +554,7 @@ data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m32r/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2004 Renesas Technology + Copyright (c) 2008 Red Hat, Inc. M32R Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/m68k/sysv.S Wed Feb 27 08:18:14 2008 @@ -1,7 +1,28 @@ /* ----------------------------------------------------------------------- - sysv.S + sysv.S - Copyright (c) 1998 Andreas Schwab + Copyright (c) 2008 Red Hat, Inc. m68k Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -207,3 +228,7 @@ rts CFI_ENDPROC() .size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/mips/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 2007 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 2007, 2008 Red Hat, Inc. Copyright (c) 2008 David Daney MIPS Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - (c) 2003-2004 Randolph Chung + (c) 2008 Red Hat, Inc. HPPA Foreign Function Interface HP-UX PA ABI support (c) 2006 Free Software Foundation, Inc. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/pa/linux.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- linux.S - (c) 2003-2004 Randolph Chung + (c) 2008 Red Hat, Inc. HPPA Foreign Function Interface @@ -17,8 +18,7 @@ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -37,7 +37,7 @@ unsigned bytes, unsigned flags, unsigned *rvalue, - void (*fn)()); + void (*fn)(void)); */ .export ffi_call_pa32,code Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,6 +1,7 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1998 Geoffrey Keating Copyright (C) 2007 Free Software Foundation, Inc + Copyright (C) 2008 Red Hat, Inc PowerPC Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. PowerPC64 Assembly glue. @@ -14,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -179,3 +181,7 @@ .align 3 .LEFDE1: #endif + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64_closure.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64_closure.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/linux64_closure.S Wed Feb 27 08:18:14 2008 @@ -1,3 +1,29 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC64 Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include @@ -204,3 +230,7 @@ .align 3 .LEFDE1: #endif + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/ppc_closure.S Wed Feb 27 08:18:14 2008 @@ -1,3 +1,29 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ #define LIBFFI_ASM #include #include @@ -295,3 +321,7 @@ .LEFDE1: #endif + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/powerpc/sysv.S Wed Feb 27 08:18:14 2008 @@ -15,13 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -223,3 +224,7 @@ .align 2 .LEFDE1: #endif + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2000, 2007 Software AG + Copyright (c) 2008 Red Hat, Inc S390 Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/s390/sysv.S Wed Feb 27 08:18:14 2008 @@ -1,6 +1,7 @@ /* ----------------------------------------------------------------------- sysv.S - Copyright (c) 2000 Software AG - + Copyright (c) 2008 Red Hat, Inc. + S390 Foreign Function Interface Permission is hereby granted, free of charge, to any person obtaining @@ -14,14 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -428,3 +429,6 @@ #endif +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Kaz Kojima + Copyright (c) 2008 Red Hat, Inc. SuperH Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sh64/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2003, 2004 Kaz Kojima + Copyright (c) 2008 Anthony Green SuperH SHmedia Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 2003, 2004, 2007 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 2003, 2004, 2007, 2008 Red Hat, Inc. SPARC Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v8.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - v8.S - Copyright (c) 1996, 1997, 2003, 2004 Red Hat, Inc. + v8.S - Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. SPARC Foreign Function Interface @@ -14,14 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -266,3 +266,7 @@ .byte 0x1f ! uleb128 0x1f .align WS .LLEFDE2: + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/sparc/v9.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - v9.S - Copyright (c) 2000, 2003, 2004 Red Hat, Inc. + v9.S - Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc. SPARC 64-bit Foreign Function Interface @@ -14,14 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #define LIBFFI_ASM @@ -301,3 +301,7 @@ .align 8 .LLEFDE2: #endif + +#ifdef __linux__ + .section .note.GNU-stack,"", at progbits +#endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007 Red Hat, Inc. + ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle @@ -249,7 +249,7 @@ void **respp; void *args; { - /* our various things... */ + /* our various things... */ ffi_cif *cif; void **arg_area; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi64.c Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2002, 2007 Bo Thorsen + Copyright (c) 2008 Red Hat, Inc. x86-64 Foreign Function Interface Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/sysv.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. + sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008 Red Hat, Inc. X86 Foreign Function Interface @@ -14,14 +14,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef __x86_64__ @@ -432,6 +432,6 @@ #endif /* ifndef __x86_64__ */ -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits #endif Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/unix64.S Wed Feb 27 08:18:14 2008 @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- unix64.S - Copyright (c) 2002 Bo Thorsen + Copyright (c) 2008 Red Hat, Inc x86-64 Foreign Function Interface @@ -14,14 +15,14 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifdef __x86_64__ @@ -32,7 +33,7 @@ .text /* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, - void *raddr, void (*fnaddr)()); + void *raddr, void (*fnaddr)(void)); Bit o trickiness here -- ARGS+BYTES is the base of the stack frame for this function. This has been allocated by ffi_call. We also @@ -411,3 +412,7 @@ .LEFDE3: #endif /* __x86_64__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"", at progbits +#endif From python-checkins at python.org Wed Feb 27 10:35:32 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 27 Feb 2008 10:35:32 +0100 (CET) Subject: [Python-checkins] r61094 - python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.in python/branches/libffi3-branch/Modules/_ctypes/libffi/acinclude.m4 python/branches/libffi3-branch/Modules/_ctypes/libffi/aclocal.m4 python/branches/libffi3-branch/Modules/_ctypes/libffi/config.guess python/branches/libffi3-branch/Modules/_ctypes/libffi/config.sub python/branches/libffi3-branch/Modules/_ctypes/libffi/configure python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.host python/branches/libffi3-branch/Modules/_ctypes/libffi/install-sh python/branches/libffi3-branch/Modules/_ctypes/libffi/libffi.pc.in python/branches/libffi3-branch/Modules/_ctypes/libffi/missing Message-ID: <20080227093532.F2D781E4014@bag.python.org> Author: thomas.heller Date: Wed Feb 27 10:35:27 2008 New Revision: 61094 Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.in (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/acinclude.m4 (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.host (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/libffi.pc.in (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/missing (contents, props changed) Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/aclocal.m4 python/branches/libffi3-branch/Modules/_ctypes/libffi/config.guess python/branches/libffi3-branch/Modules/_ctypes/libffi/config.sub python/branches/libffi3-branch/Modules/_ctypes/libffi/configure python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac python/branches/libffi3-branch/Modules/_ctypes/libffi/install-sh Log: libffi3 configuration. Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.in ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.in Wed Feb 27 10:35:27 2008 @@ -0,0 +1,1640 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + at SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ + at MIPS_TRUE@am__append_1 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S + at X86_TRUE@am__append_2 = src/x86/ffi.c src/x86/sysv.S + at X86_FREEBSD_TRUE@am__append_3 = src/x86/ffi.c src/x86/freebsd.S + at X86_WIN32_TRUE@am__append_4 = src/x86/ffi.c src/x86/win32.S + at X86_DARWIN_TRUE@am__append_5 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S + at SPARC_TRUE@am__append_6 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S + at ALPHA_TRUE@am__append_7 = src/alpha/ffi.c src/alpha/osf.S + at IA64_TRUE@am__append_8 = src/ia64/ffi.c src/ia64/unix.S + at M32R_TRUE@am__append_9 = src/m32r/sysv.S src/m32r/ffi.c + at M68K_TRUE@am__append_10 = src/m68k/ffi.c src/m68k/sysv.S + at POWERPC_TRUE@am__append_11 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S + at POWERPC_AIX_TRUE@am__append_12 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S + at POWERPC_DARWIN_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S + at POWERPC_FREEBSD_TRUE@am__append_14 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S + at ARM_TRUE@am__append_15 = src/arm/sysv.S src/arm/ffi.c + at LIBFFI_CRIS_TRUE@am__append_16 = src/cris/sysv.S src/cris/ffi.c + at FRV_TRUE@am__append_17 = src/frv/eabi.S src/frv/ffi.c + at S390_TRUE@am__append_18 = src/s390/sysv.S src/s390/ffi.c + at X86_64_TRUE@am__append_19 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S + at SH_TRUE@am__append_20 = src/sh/sysv.S src/sh/ffi.c + at SH64_TRUE@am__append_21 = src/sh64/sysv.S src/sh64/ffi.c + at PA_LINUX_TRUE@am__append_22 = src/pa/linux.S src/pa/ffi.c + at PA_HPUX_TRUE@am__append_23 = src/pa/hpux32.S src/pa/ffi.c +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \ + $(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \ + $(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog TODO \ + compile config.guess config.sub depcomp install-sh ltcf-c.sh \ + ltcf-cxx.sh ltcf-gcj.sh ltconfig ltmain.sh mdate-sh missing \ + mkinstalldirs texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = fficonfig.h +CONFIG_CLEAN_FILES = libffi.pc +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \ + "$(DESTDIR)$(pkgconfigdir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) +libffi_la_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ + src/raw_api.lo src/java_raw_api.lo src/closures.lo + at MIPS_TRUE@am__objects_1 = src/mips/ffi.lo src/mips/o32.lo \ + at MIPS_TRUE@ src/mips/n32.lo + at X86_TRUE@am__objects_2 = src/x86/ffi.lo src/x86/sysv.lo + at X86_FREEBSD_TRUE@am__objects_3 = src/x86/ffi.lo src/x86/freebsd.lo + at X86_WIN32_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/win32.lo + at X86_DARWIN_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/darwin.lo \ + at X86_DARWIN_TRUE@ src/x86/ffi64.lo src/x86/darwin64.lo + at SPARC_TRUE@am__objects_6 = src/sparc/ffi.lo src/sparc/v8.lo \ + at SPARC_TRUE@ src/sparc/v9.lo + at ALPHA_TRUE@am__objects_7 = src/alpha/ffi.lo src/alpha/osf.lo + at IA64_TRUE@am__objects_8 = src/ia64/ffi.lo src/ia64/unix.lo + at M32R_TRUE@am__objects_9 = src/m32r/sysv.lo src/m32r/ffi.lo + at M68K_TRUE@am__objects_10 = src/m68k/ffi.lo src/m68k/sysv.lo + at POWERPC_TRUE@am__objects_11 = src/powerpc/ffi.lo src/powerpc/sysv.lo \ + at POWERPC_TRUE@ src/powerpc/ppc_closure.lo \ + at POWERPC_TRUE@ src/powerpc/linux64.lo \ + at POWERPC_TRUE@ src/powerpc/linux64_closure.lo + at POWERPC_AIX_TRUE@am__objects_12 = src/powerpc/ffi_darwin.lo \ + at POWERPC_AIX_TRUE@ src/powerpc/aix.lo \ + at POWERPC_AIX_TRUE@ src/powerpc/aix_closure.lo + at POWERPC_DARWIN_TRUE@am__objects_13 = src/powerpc/ffi_darwin.lo \ + at POWERPC_DARWIN_TRUE@ src/powerpc/darwin.lo \ + at POWERPC_DARWIN_TRUE@ src/powerpc/darwin_closure.lo + at POWERPC_FREEBSD_TRUE@am__objects_14 = src/powerpc/ffi.lo \ + at POWERPC_FREEBSD_TRUE@ src/powerpc/sysv.lo \ + at POWERPC_FREEBSD_TRUE@ src/powerpc/ppc_closure.lo + at ARM_TRUE@am__objects_15 = src/arm/sysv.lo src/arm/ffi.lo + at LIBFFI_CRIS_TRUE@am__objects_16 = src/cris/sysv.lo src/cris/ffi.lo + at FRV_TRUE@am__objects_17 = src/frv/eabi.lo src/frv/ffi.lo + at S390_TRUE@am__objects_18 = src/s390/sysv.lo src/s390/ffi.lo + at X86_64_TRUE@am__objects_19 = src/x86/ffi64.lo src/x86/unix64.lo \ + at X86_64_TRUE@ src/x86/ffi.lo src/x86/sysv.lo + at SH_TRUE@am__objects_20 = src/sh/sysv.lo src/sh/ffi.lo + at SH64_TRUE@am__objects_21 = src/sh64/sysv.lo src/sh64/ffi.lo + at PA_LINUX_TRUE@am__objects_22 = src/pa/linux.lo src/pa/ffi.lo + at PA_HPUX_TRUE@am__objects_23 = src/pa/hpux32.lo src/pa/ffi.lo +nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ + $(am__objects_3) $(am__objects_4) $(am__objects_5) \ + $(am__objects_6) $(am__objects_7) $(am__objects_8) \ + $(am__objects_9) $(am__objects_10) $(am__objects_11) \ + $(am__objects_12) $(am__objects_13) $(am__objects_14) \ + $(am__objects_15) $(am__objects_16) $(am__objects_17) \ + $(am__objects_18) $(am__objects_19) $(am__objects_20) \ + $(am__objects_21) $(am__objects_22) $(am__objects_23) +libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \ + $(nodist_libffi_la_OBJECTS) +libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libffi_la_LDFLAGS) $(LDFLAGS) -o $@ +libffi_convenience_la_LIBADD = +am__objects_24 = src/debug.lo src/prep_cif.lo src/types.lo \ + src/raw_api.lo src/java_raw_api.lo src/closures.lo +am_libffi_convenience_la_OBJECTS = $(am__objects_24) +am__objects_25 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ + $(am__objects_4) $(am__objects_5) $(am__objects_6) \ + $(am__objects_7) $(am__objects_8) $(am__objects_9) \ + $(am__objects_10) $(am__objects_11) $(am__objects_12) \ + $(am__objects_13) $(am__objects_14) $(am__objects_15) \ + $(am__objects_16) $(am__objects_17) $(am__objects_18) \ + $(am__objects_19) $(am__objects_20) $(am__objects_21) \ + $(am__objects_22) $(am__objects_23) +nodist_libffi_convenience_la_OBJECTS = $(am__objects_25) +libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \ + $(nodist_libffi_convenience_la_OBJECTS) +DEFAULT_INCLUDES = -I. at am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \ + $(libffi_convenience_la_SOURCES) \ + $(nodist_libffi_convenience_la_SOURCES) +DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES) +INFO_DEPS = $(srcdir)/doc/libffi.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = doc/libffi.dvi +PDFS = doc/libffi.pdf +PSS = doc/libffi.ps +HTMLS = doc/libffi.html +TEXINFOS = doc/libffi.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +DVIPS = dvips +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TARGET = @TARGET@ +TARGETDIR = @TARGETDIR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +toolexecdir = @toolexecdir@ +toolexeclibdir = @toolexeclibdir@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign subdir-objects +SUBDIRS = include testsuite man +EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \ + src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ + src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ + src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \ + src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \ + src/ia64/unix.S \ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ + src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ + src/powerpc/ffi.c src/powerpc/sysv.S \ + src/powerpc/linux64.S src/powerpc/linux64_closure.S \ + src/powerpc/ppc_closure.S src/powerpc/asm.h \ + src/powerpc/aix.S src/powerpc/darwin.S \ + src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ + src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ + src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ + src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \ + src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \ + src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \ + src/sparc/ffi.c src/x86/darwin64.S \ + src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \ + src/x86/freebsd.S \ + src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \ + src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ + src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \ + libtool-version ChangeLog.libffi + +info_TEXINFOS = doc/libffi.texi + +# Work around what appears to be a GNU make bug handling MAKEFLAGS +# values defined in terms of make variables, as is the case for CC and +# friends when we are called from the top level Makefile. +AM_MAKEFLAGS = \ + "AR_FLAGS=$(AR_FLAGS)" \ + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ + "CFLAGS=$(CFLAGS)" \ + "CXXFLAGS=$(CXXFLAGS)" \ + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ + "JC1FLAGS=$(JC1FLAGS)" \ + "LDFLAGS=$(LDFLAGS)" \ + "LIBCFLAGS=$(LIBCFLAGS)" \ + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ + "MAKE=$(MAKE)" \ + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ + "PICFLAG=$(PICFLAG)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ + "SHELL=$(SHELL)" \ + "exec_prefix=$(exec_prefix)" \ + "infodir=$(infodir)" \ + "libdir=$(libdir)" \ + "prefix=$(prefix)" \ + "AR=$(AR)" \ + "AS=$(AS)" \ + "CC=$(CC)" \ + "CXX=$(CXX)" \ + "LD=$(LD)" \ + "NM=$(NM)" \ + "RANLIB=$(RANLIB)" \ + "DESTDIR=$(DESTDIR)" + +MAKEOVERRIDES = +lib_LTLIBRARIES = libffi.la +noinst_LTLIBRARIES = libffi_convenience.la +libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \ + src/raw_api.c src/java_raw_api.c src/closures.c + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libffi.pc +nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \ + $(am__append_3) $(am__append_4) $(am__append_5) \ + $(am__append_6) $(am__append_7) $(am__append_8) \ + $(am__append_9) $(am__append_10) $(am__append_11) \ + $(am__append_12) $(am__append_13) $(am__append_14) \ + $(am__append_15) $(am__append_16) $(am__append_17) \ + $(am__append_18) $(am__append_19) $(am__append_20) \ + $(am__append_21) $(am__append_22) $(am__append_23) +libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) +nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) +AM_CFLAGS = -Wall -g -fexceptions +libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` +AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src +AM_CCASFLAGS = $(AM_CPPFLAGS) +all: fficonfig.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .S .c .dvi .lo .o .obj .ps +am--refresh: + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +fficonfig.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h +$(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f fficonfig.h stamp-h1 +libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +src/$(am__dirstamp): + @$(MKDIR_P) src + @: > src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: > src/$(DEPDIR)/$(am__dirstamp) +src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/mips/$(am__dirstamp): + @$(MKDIR_P) src/mips + @: > src/mips/$(am__dirstamp) +src/mips/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/mips/$(DEPDIR) + @: > src/mips/$(DEPDIR)/$(am__dirstamp) +src/mips/ffi.lo: src/mips/$(am__dirstamp) \ + src/mips/$(DEPDIR)/$(am__dirstamp) +src/mips/o32.lo: src/mips/$(am__dirstamp) \ + src/mips/$(DEPDIR)/$(am__dirstamp) +src/mips/n32.lo: src/mips/$(am__dirstamp) \ + src/mips/$(DEPDIR)/$(am__dirstamp) +src/x86/$(am__dirstamp): + @$(MKDIR_P) src/x86 + @: > src/x86/$(am__dirstamp) +src/x86/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/x86/$(DEPDIR) + @: > src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/ffi.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/sysv.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/freebsd.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/win32.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/darwin.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/ffi64.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/x86/darwin64.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/sparc/$(am__dirstamp): + @$(MKDIR_P) src/sparc + @: > src/sparc/$(am__dirstamp) +src/sparc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/sparc/$(DEPDIR) + @: > src/sparc/$(DEPDIR)/$(am__dirstamp) +src/sparc/ffi.lo: src/sparc/$(am__dirstamp) \ + src/sparc/$(DEPDIR)/$(am__dirstamp) +src/sparc/v8.lo: src/sparc/$(am__dirstamp) \ + src/sparc/$(DEPDIR)/$(am__dirstamp) +src/sparc/v9.lo: src/sparc/$(am__dirstamp) \ + src/sparc/$(DEPDIR)/$(am__dirstamp) +src/alpha/$(am__dirstamp): + @$(MKDIR_P) src/alpha + @: > src/alpha/$(am__dirstamp) +src/alpha/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/alpha/$(DEPDIR) + @: > src/alpha/$(DEPDIR)/$(am__dirstamp) +src/alpha/ffi.lo: src/alpha/$(am__dirstamp) \ + src/alpha/$(DEPDIR)/$(am__dirstamp) +src/alpha/osf.lo: src/alpha/$(am__dirstamp) \ + src/alpha/$(DEPDIR)/$(am__dirstamp) +src/ia64/$(am__dirstamp): + @$(MKDIR_P) src/ia64 + @: > src/ia64/$(am__dirstamp) +src/ia64/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/ia64/$(DEPDIR) + @: > src/ia64/$(DEPDIR)/$(am__dirstamp) +src/ia64/ffi.lo: src/ia64/$(am__dirstamp) \ + src/ia64/$(DEPDIR)/$(am__dirstamp) +src/ia64/unix.lo: src/ia64/$(am__dirstamp) \ + src/ia64/$(DEPDIR)/$(am__dirstamp) +src/m32r/$(am__dirstamp): + @$(MKDIR_P) src/m32r + @: > src/m32r/$(am__dirstamp) +src/m32r/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/m32r/$(DEPDIR) + @: > src/m32r/$(DEPDIR)/$(am__dirstamp) +src/m32r/sysv.lo: src/m32r/$(am__dirstamp) \ + src/m32r/$(DEPDIR)/$(am__dirstamp) +src/m32r/ffi.lo: src/m32r/$(am__dirstamp) \ + src/m32r/$(DEPDIR)/$(am__dirstamp) +src/m68k/$(am__dirstamp): + @$(MKDIR_P) src/m68k + @: > src/m68k/$(am__dirstamp) +src/m68k/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/m68k/$(DEPDIR) + @: > src/m68k/$(DEPDIR)/$(am__dirstamp) +src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \ + src/m68k/$(DEPDIR)/$(am__dirstamp) +src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \ + src/m68k/$(DEPDIR)/$(am__dirstamp) +src/powerpc/$(am__dirstamp): + @$(MKDIR_P) src/powerpc + @: > src/powerpc/$(am__dirstamp) +src/powerpc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/powerpc/$(DEPDIR) + @: > src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/ffi_darwin.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) +src/arm/$(am__dirstamp): + @$(MKDIR_P) src/arm + @: > src/arm/$(am__dirstamp) +src/arm/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/arm/$(DEPDIR) + @: > src/arm/$(DEPDIR)/$(am__dirstamp) +src/arm/sysv.lo: src/arm/$(am__dirstamp) \ + src/arm/$(DEPDIR)/$(am__dirstamp) +src/arm/ffi.lo: src/arm/$(am__dirstamp) \ + src/arm/$(DEPDIR)/$(am__dirstamp) +src/cris/$(am__dirstamp): + @$(MKDIR_P) src/cris + @: > src/cris/$(am__dirstamp) +src/cris/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cris/$(DEPDIR) + @: > src/cris/$(DEPDIR)/$(am__dirstamp) +src/cris/sysv.lo: src/cris/$(am__dirstamp) \ + src/cris/$(DEPDIR)/$(am__dirstamp) +src/cris/ffi.lo: src/cris/$(am__dirstamp) \ + src/cris/$(DEPDIR)/$(am__dirstamp) +src/frv/$(am__dirstamp): + @$(MKDIR_P) src/frv + @: > src/frv/$(am__dirstamp) +src/frv/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/frv/$(DEPDIR) + @: > src/frv/$(DEPDIR)/$(am__dirstamp) +src/frv/eabi.lo: src/frv/$(am__dirstamp) \ + src/frv/$(DEPDIR)/$(am__dirstamp) +src/frv/ffi.lo: src/frv/$(am__dirstamp) \ + src/frv/$(DEPDIR)/$(am__dirstamp) +src/s390/$(am__dirstamp): + @$(MKDIR_P) src/s390 + @: > src/s390/$(am__dirstamp) +src/s390/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/s390/$(DEPDIR) + @: > src/s390/$(DEPDIR)/$(am__dirstamp) +src/s390/sysv.lo: src/s390/$(am__dirstamp) \ + src/s390/$(DEPDIR)/$(am__dirstamp) +src/s390/ffi.lo: src/s390/$(am__dirstamp) \ + src/s390/$(DEPDIR)/$(am__dirstamp) +src/x86/unix64.lo: src/x86/$(am__dirstamp) \ + src/x86/$(DEPDIR)/$(am__dirstamp) +src/sh/$(am__dirstamp): + @$(MKDIR_P) src/sh + @: > src/sh/$(am__dirstamp) +src/sh/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/sh/$(DEPDIR) + @: > src/sh/$(DEPDIR)/$(am__dirstamp) +src/sh/sysv.lo: src/sh/$(am__dirstamp) \ + src/sh/$(DEPDIR)/$(am__dirstamp) +src/sh/ffi.lo: src/sh/$(am__dirstamp) src/sh/$(DEPDIR)/$(am__dirstamp) +src/sh64/$(am__dirstamp): + @$(MKDIR_P) src/sh64 + @: > src/sh64/$(am__dirstamp) +src/sh64/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/sh64/$(DEPDIR) + @: > src/sh64/$(DEPDIR)/$(am__dirstamp) +src/sh64/sysv.lo: src/sh64/$(am__dirstamp) \ + src/sh64/$(DEPDIR)/$(am__dirstamp) +src/sh64/ffi.lo: src/sh64/$(am__dirstamp) \ + src/sh64/$(DEPDIR)/$(am__dirstamp) +src/pa/$(am__dirstamp): + @$(MKDIR_P) src/pa + @: > src/pa/$(am__dirstamp) +src/pa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/pa/$(DEPDIR) + @: > src/pa/$(DEPDIR)/$(am__dirstamp) +src/pa/linux.lo: src/pa/$(am__dirstamp) \ + src/pa/$(DEPDIR)/$(am__dirstamp) +src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp) +src/pa/hpux32.lo: src/pa/$(am__dirstamp) \ + src/pa/$(DEPDIR)/$(am__dirstamp) +libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) + $(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) +libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) + $(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f src/alpha/ffi.$(OBJEXT) + -rm -f src/alpha/ffi.lo + -rm -f src/alpha/osf.$(OBJEXT) + -rm -f src/alpha/osf.lo + -rm -f src/arm/ffi.$(OBJEXT) + -rm -f src/arm/ffi.lo + -rm -f src/arm/sysv.$(OBJEXT) + -rm -f src/arm/sysv.lo + -rm -f src/closures.$(OBJEXT) + -rm -f src/closures.lo + -rm -f src/cris/ffi.$(OBJEXT) + -rm -f src/cris/ffi.lo + -rm -f src/cris/sysv.$(OBJEXT) + -rm -f src/cris/sysv.lo + -rm -f src/debug.$(OBJEXT) + -rm -f src/debug.lo + -rm -f src/frv/eabi.$(OBJEXT) + -rm -f src/frv/eabi.lo + -rm -f src/frv/ffi.$(OBJEXT) + -rm -f src/frv/ffi.lo + -rm -f src/ia64/ffi.$(OBJEXT) + -rm -f src/ia64/ffi.lo + -rm -f src/ia64/unix.$(OBJEXT) + -rm -f src/ia64/unix.lo + -rm -f src/java_raw_api.$(OBJEXT) + -rm -f src/java_raw_api.lo + -rm -f src/m32r/ffi.$(OBJEXT) + -rm -f src/m32r/ffi.lo + -rm -f src/m32r/sysv.$(OBJEXT) + -rm -f src/m32r/sysv.lo + -rm -f src/m68k/ffi.$(OBJEXT) + -rm -f src/m68k/ffi.lo + -rm -f src/m68k/sysv.$(OBJEXT) + -rm -f src/m68k/sysv.lo + -rm -f src/mips/ffi.$(OBJEXT) + -rm -f src/mips/ffi.lo + -rm -f src/mips/n32.$(OBJEXT) + -rm -f src/mips/n32.lo + -rm -f src/mips/o32.$(OBJEXT) + -rm -f src/mips/o32.lo + -rm -f src/pa/ffi.$(OBJEXT) + -rm -f src/pa/ffi.lo + -rm -f src/pa/hpux32.$(OBJEXT) + -rm -f src/pa/hpux32.lo + -rm -f src/pa/linux.$(OBJEXT) + -rm -f src/pa/linux.lo + -rm -f src/powerpc/aix.$(OBJEXT) + -rm -f src/powerpc/aix.lo + -rm -f src/powerpc/aix_closure.$(OBJEXT) + -rm -f src/powerpc/aix_closure.lo + -rm -f src/powerpc/darwin.$(OBJEXT) + -rm -f src/powerpc/darwin.lo + -rm -f src/powerpc/darwin_closure.$(OBJEXT) + -rm -f src/powerpc/darwin_closure.lo + -rm -f src/powerpc/ffi.$(OBJEXT) + -rm -f src/powerpc/ffi.lo + -rm -f src/powerpc/ffi_darwin.$(OBJEXT) + -rm -f src/powerpc/ffi_darwin.lo + -rm -f src/powerpc/linux64.$(OBJEXT) + -rm -f src/powerpc/linux64.lo + -rm -f src/powerpc/linux64_closure.$(OBJEXT) + -rm -f src/powerpc/linux64_closure.lo + -rm -f src/powerpc/ppc_closure.$(OBJEXT) + -rm -f src/powerpc/ppc_closure.lo + -rm -f src/powerpc/sysv.$(OBJEXT) + -rm -f src/powerpc/sysv.lo + -rm -f src/prep_cif.$(OBJEXT) + -rm -f src/prep_cif.lo + -rm -f src/raw_api.$(OBJEXT) + -rm -f src/raw_api.lo + -rm -f src/s390/ffi.$(OBJEXT) + -rm -f src/s390/ffi.lo + -rm -f src/s390/sysv.$(OBJEXT) + -rm -f src/s390/sysv.lo + -rm -f src/sh/ffi.$(OBJEXT) + -rm -f src/sh/ffi.lo + -rm -f src/sh/sysv.$(OBJEXT) + -rm -f src/sh/sysv.lo + -rm -f src/sh64/ffi.$(OBJEXT) + -rm -f src/sh64/ffi.lo + -rm -f src/sh64/sysv.$(OBJEXT) + -rm -f src/sh64/sysv.lo + -rm -f src/sparc/ffi.$(OBJEXT) + -rm -f src/sparc/ffi.lo + -rm -f src/sparc/v8.$(OBJEXT) + -rm -f src/sparc/v8.lo + -rm -f src/sparc/v9.$(OBJEXT) + -rm -f src/sparc/v9.lo + -rm -f src/types.$(OBJEXT) + -rm -f src/types.lo + -rm -f src/x86/darwin.$(OBJEXT) + -rm -f src/x86/darwin.lo + -rm -f src/x86/darwin64.$(OBJEXT) + -rm -f src/x86/darwin64.lo + -rm -f src/x86/ffi.$(OBJEXT) + -rm -f src/x86/ffi.lo + -rm -f src/x86/ffi64.$(OBJEXT) + -rm -f src/x86/ffi64.lo + -rm -f src/x86/freebsd.$(OBJEXT) + -rm -f src/x86/freebsd.lo + -rm -f src/x86/sysv.$(OBJEXT) + -rm -f src/x86/sysv.lo + -rm -f src/x86/unix64.$(OBJEXT) + -rm -f src/x86/unix64.lo + -rm -f src/x86/win32.$(OBJEXT) + -rm -f src/x86/win32.lo + +distclean-compile: + -rm -f *.tab.c + + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/closures.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/debug.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/java_raw_api.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/prep_cif.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/raw_api.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/types.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/alpha/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/alpha/$(DEPDIR)/osf.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/arm/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/arm/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/cris/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/cris/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/frv/$(DEPDIR)/eabi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/frv/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/ia64/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/ia64/$(DEPDIR)/unix.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/m32r/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/m32r/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/m68k/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/m68k/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/mips/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/mips/$(DEPDIR)/n32.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/mips/$(DEPDIR)/o32.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/pa/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/pa/$(DEPDIR)/hpux32.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/pa/$(DEPDIR)/linux.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/aix.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/aix_closure.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/darwin.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/darwin_closure.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/ffi_darwin.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/linux64.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/linux64_closure.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/ppc_closure.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/powerpc/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/s390/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/s390/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sh/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sh/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sh64/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sh64/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sparc/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sparc/$(DEPDIR)/v8.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/sparc/$(DEPDIR)/v9.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/darwin.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/darwin64.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/ffi.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/ffi64.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/freebsd.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/sysv.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/unix64.Plo at am__quote@ + at AMDEP_TRUE@@am__include@ @am__quote at src/x86/$(DEPDIR)/win32.Plo at am__quote@ + +.S.o: + at am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + at am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + at am__fastdepCCAS_TRUE@ mv -f $$depbase.Tpo $$depbase.Po + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< + +.S.obj: + at am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + at am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + at am__fastdepCCAS_TRUE@ mv -f $$depbase.Tpo $$depbase.Po + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.S.lo: + at am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + at am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + at am__fastdepCCAS_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< + +.c.o: + at am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + at am__fastdepCC_TRUE@ mv -f $$depbase.Tpo $$depbase.Po + at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: + at am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + at am__fastdepCC_TRUE@ mv -f $$depbase.Tpo $$depbase.Po + at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + at am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + at am__fastdepCC_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo + at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf src/.libs src/_libs + -rm -rf src/alpha/.libs src/alpha/_libs + -rm -rf src/arm/.libs src/arm/_libs + -rm -rf src/cris/.libs src/cris/_libs + -rm -rf src/frv/.libs src/frv/_libs + -rm -rf src/ia64/.libs src/ia64/_libs + -rm -rf src/m32r/.libs src/m32r/_libs + -rm -rf src/m68k/.libs src/m68k/_libs + -rm -rf src/mips/.libs src/mips/_libs + -rm -rf src/pa/.libs src/pa/_libs + -rm -rf src/powerpc/.libs src/powerpc/_libs + -rm -rf src/s390/.libs src/s390/_libs + -rm -rf src/sh/.libs src/sh/_libs + -rm -rf src/sh64/.libs src/sh64/_libs + -rm -rf src/sparc/.libs src/sparc/_libs + -rm -rf src/x86/.libs src/x86/_libs + +distclean-libtool: + -rm -f libtool +doc/$(am__dirstamp): + @$(MKDIR_P) doc + @: > doc/$(am__dirstamp) + +$(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && cd $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \ + -o $@ $(srcdir)/doc/libffi.texi; \ + then \ + rc=0; \ + cd $(srcdir); \ + else \ + rc=$$?; \ + cd $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \ + $(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi + +doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \ + $(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi + +doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) + rm -rf $(@:.html=.htp) + if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \ + -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \ + then \ + rm -rf $@; \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + else \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ + exit 1; \ + fi +$(srcdir)/doc/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/doc/stamp-vti +$(srcdir)/doc/stamp-vti: doc/libffi.texi $(top_srcdir)/configure + test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp) + @(dir=.; test -f ./doc/libffi.texi || dir=$(srcdir); \ + set `$(SHELL) $(srcdir)/mdate-sh $$dir/doc/libffi.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp $(srcdir)/doc/version.texi \ + || (echo "Updating $(srcdir)/doc/version.texi"; \ + cp vti.tmp $(srcdir)/doc/version.texi) + - at rm -f vti.tmp + @cp $(srcdir)/doc/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp + +maintainer-clean-vti: + at MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi +.dvi.ps: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && \ + (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f $(distdir)/$$relfile || \ + cp -p $$file $(distdir)/$$relfile; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \ + libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr \ + doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -rm -f doc/$(am__dirstamp) + -rm -f src/$(DEPDIR)/$(am__dirstamp) + -rm -f src/$(am__dirstamp) + -rm -f src/alpha/$(DEPDIR)/$(am__dirstamp) + -rm -f src/alpha/$(am__dirstamp) + -rm -f src/arm/$(DEPDIR)/$(am__dirstamp) + -rm -f src/arm/$(am__dirstamp) + -rm -f src/cris/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cris/$(am__dirstamp) + -rm -f src/frv/$(DEPDIR)/$(am__dirstamp) + -rm -f src/frv/$(am__dirstamp) + -rm -f src/ia64/$(DEPDIR)/$(am__dirstamp) + -rm -f src/ia64/$(am__dirstamp) + -rm -f src/m32r/$(DEPDIR)/$(am__dirstamp) + -rm -f src/m32r/$(am__dirstamp) + -rm -f src/m68k/$(DEPDIR)/$(am__dirstamp) + -rm -f src/m68k/$(am__dirstamp) + -rm -f src/mips/$(DEPDIR)/$(am__dirstamp) + -rm -f src/mips/$(am__dirstamp) + -rm -f src/pa/$(DEPDIR)/$(am__dirstamp) + -rm -f src/pa/$(am__dirstamp) + -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp) + -rm -f src/powerpc/$(am__dirstamp) + -rm -f src/s390/$(DEPDIR)/$(am__dirstamp) + -rm -f src/s390/$(am__dirstamp) + -rm -f src/sh/$(DEPDIR)/$(am__dirstamp) + -rm -f src/sh/$(am__dirstamp) + -rm -f src/sh64/$(DEPDIR)/$(am__dirstamp) + -rm -f src/sh64/$(am__dirstamp) + -rm -f src/sparc/$(DEPDIR)/$(am__dirstamp) + -rm -f src/sparc/$(am__dirstamp) + -rm -f src/x86/$(DEPDIR)/$(am__dirstamp) + -rm -f src/x86/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: $(DVIS) + +html: html-recursive + +html-am: $(HTMLS) + +info: info-recursive + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" + @list='$(DVIS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \ + done +install-exec-am: install-libLTLIBRARIES + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS)'; for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ + else \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ + fi; \ + done +install-info: install-info-recursive + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ + echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ + $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ + done +install-ps: install-ps-recursive + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" + @list='$(PSS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \ + done +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-vti + +pdf: pdf-recursive + +pdf-am: $(PDFS) + +ps: ps-recursive + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-libLTLIBRARIES uninstall-pdf-am \ + uninstall-pkgconfigDATA uninstall-ps-am + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-info dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-pkgconfigDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-vti pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am uninstall-dvi-am \ + uninstall-html-am uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-pdf-am uninstall-pkgconfigDATA uninstall-ps-am + + +# No install-html or install-pdf support in automake yet +.PHONY: install-html install-pdf +install-html: +install-pdf: +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/acinclude.m4 ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/acinclude.m4 Wed Feb 27 10:35:27 2008 @@ -0,0 +1,92 @@ +# mmap(2) blacklisting. Some platforms provide the mmap library routine +# but don't support all of the features we need from it. +AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], +[ +AC_CHECK_HEADER([sys/mman.h], + [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) +AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) +if test "$libffi_header_sys_mman_h" != yes \ + || test "$libffi_func_mmap" != yes; then + ac_cv_func_mmap_file=no + ac_cv_func_mmap_dev_zero=no + ac_cv_func_mmap_anon=no +else + AC_CACHE_CHECK([whether read-only mmap of a plain file works], + ac_cv_func_mmap_file, + [# Add a system to this blacklist if + # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a + # memory area containing the same data that you'd get if you applied + # read() to the same fd. The only system known to have a problem here + # is VMS, where text files have record structure. + case "$host_os" in + vms* | ultrix*) + ac_cv_func_mmap_file=no ;; + *) + ac_cv_func_mmap_file=yes;; + esac]) + AC_CACHE_CHECK([whether mmap from /dev/zero works], + ac_cv_func_mmap_dev_zero, + [# Add a system to this blacklist if it has mmap() but /dev/zero + # does not exist, or if mmapping /dev/zero does not give anonymous + # zeroed pages with both the following properties: + # 1. If you map N consecutive pages in with one call, and then + # unmap any subset of those pages, the pages that were not + # explicitly unmapped remain accessible. + # 2. If you map two adjacent blocks of memory and then unmap them + # both at once, they must both go away. + # Systems known to be in this category are Windows (all variants), + # VMS, and Darwin. + case "$host_os" in + vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) + ac_cv_func_mmap_dev_zero=no ;; + *) + ac_cv_func_mmap_dev_zero=yes;; + esac]) + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. + AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, + [AC_TRY_COMPILE( +[#include +#include +#include + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +], +[int n = MAP_ANONYMOUS;], + ac_cv_decl_map_anon=yes, + ac_cv_decl_map_anon=no)]) + + if test $ac_cv_decl_map_anon = no; then + ac_cv_func_mmap_anon=no + else + AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], + ac_cv_func_mmap_anon, + [# Add a system to this blacklist if it has mmap() and MAP_ANON or + # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + # doesn't give anonymous zeroed pages with the same properties listed + # above for use of /dev/zero. + # Systems known to be in this category are Windows, VMS, and SCO Unix. + case "$host_os" in + vms* | cygwin* | pe | mingw* | sco* | udk* ) + ac_cv_func_mmap_anon=no ;; + *) + ac_cv_func_mmap_anon=yes;; + esac]) + fi +fi + +if test $ac_cv_func_mmap_file = yes; then + AC_DEFINE(HAVE_MMAP_FILE, 1, + [Define if read-only mmap of a plain file works.]) +fi +if test $ac_cv_func_mmap_dev_zero = yes; then + AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, + [Define if mmap of /dev/zero works.]) +fi +if test $ac_cv_func_mmap_anon = yes; then + AC_DEFINE(HAVE_MMAP_ANON, 1, + [Define if mmap with MAP_ANON(YMOUS) works.]) +fi +]) Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/aclocal.m4 ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/aclocal.m4 (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/aclocal.m4 Wed Feb 27 10:35:27 2008 @@ -1,92 +1,7516 @@ -# mmap(2) blacklisting. Some platforms provide the mmap library routine -# but don't support all of the features we need from it. -AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_if(m4_PACKAGE_VERSION, [2.61],, +[m4_fatal([this file was generated for autoconf 2.61. +You have another version of autoconf. If you want to use that, +you should regenerate the build system entirely.], [63])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 51 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + libsuff=64 + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +m4_if($1,[],[ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognize shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool at gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognize a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_AC_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac +])# AC_LIBTOOL_POSTDEP_PREDEP + +# AC_LIBTOOL_LANG_F77_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) +AC_DEFUN([_LT_AC_LANG_F77_CONFIG], +[AC_REQUIRE([AC_PROG_F77]) +AC_LANG_PUSH(Fortran 77) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +_LT_AC_TAGVAR(GCC, $1)="$G77" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_F77_CONFIG + + +# AC_LIBTOOL_LANG_GCJ_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) +AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], +[AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_GCJ_CONFIG + + +# AC_LIBTOOL_LANG_RC_CONFIG +# ------------------------- +# Ensure that the configuration vars for the Windows resource compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) +AC_DEFUN([_LT_AC_LANG_RC_CONFIG], +[AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_RC_CONFIG + + +# AC_LIBTOOL_CONFIG([TAGNAME]) +# ---------------------------- +# If TAGNAME is not passed, then create an initial libtool script +# with a default configuration from the untagged config vars. Otherwise +# add code to config.status for appending the configuration named by +# TAGNAME from the matching tagged config vars. +AC_DEFUN([AC_LIBTOOL_CONFIG], +[# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + _LT_AC_TAGVAR(compiler, $1) \ + _LT_AC_TAGVAR(CC, $1) \ + _LT_AC_TAGVAR(LD, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ + _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ + _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ + _LT_AC_TAGVAR(old_archive_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ + _LT_AC_TAGVAR(predep_objects, $1) \ + _LT_AC_TAGVAR(postdep_objects, $1) \ + _LT_AC_TAGVAR(predeps, $1) \ + _LT_AC_TAGVAR(postdeps, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ + _LT_AC_TAGVAR(archive_cmds, $1) \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ + _LT_AC_TAGVAR(postinstall_cmds, $1) \ + _LT_AC_TAGVAR(postuninstall_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ + _LT_AC_TAGVAR(allow_undefined_flag, $1) \ + _LT_AC_TAGVAR(no_undefined_flag, $1) \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ + _LT_AC_TAGVAR(hardcode_automatic, $1) \ + _LT_AC_TAGVAR(module_cmds, $1) \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) \ + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ + _LT_AC_TAGVAR(fix_srcfile_path, $1) \ + _LT_AC_TAGVAR(exclude_expsyms, $1) \ + _LT_AC_TAGVAR(include_expsyms, $1); do + + case $var in + _LT_AC_TAGVAR(old_archive_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ + _LT_AC_TAGVAR(archive_cmds, $1) | \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\[$]0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` + ;; + esac + +ifelse([$1], [], + [cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + AC_MSG_NOTICE([creating $ofile])], + [cfgfile="$ofile"]) + + cat <<__EOF__ >> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([LT_AC_PROG_SED]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ -AC_CHECK_HEADER([sys/mman.h], - [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) -AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) -if test "$libffi_header_sys_mman_h" != yes \ - || test "$libffi_func_mmap" != yes; then - ac_cv_func_mmap_file=no - ac_cv_func_mmap_dev_zero=no - ac_cv_func_mmap_anon=no -else - AC_CACHE_CHECK([whether read-only mmap of a plain file works], - ac_cv_func_mmap_file, - [# Add a system to this blacklist if - # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a - # memory area containing the same data that you'd get if you applied - # read() to the same fd. The only system known to have a problem here - # is VMS, where text files have record structure. - case "$host_os" in - vms* | ultrix*) - ac_cv_func_mmap_file=no ;; - *) - ac_cv_func_mmap_file=yes;; - esac]) - AC_CACHE_CHECK([whether mmap from /dev/zero works], - ac_cv_func_mmap_dev_zero, - [# Add a system to this blacklist if it has mmap() but /dev/zero - # does not exist, or if mmapping /dev/zero does not give anonymous - # zeroed pages with both the following properties: - # 1. If you map N consecutive pages in with one call, and then - # unmap any subset of those pages, the pages that were not - # explicitly unmapped remain accessible. - # 2. If you map two adjacent blocks of memory and then unmap them - # both at once, they must both go away. - # Systems known to be in this category are Windows (all variants), - # VMS, and Darwin. - case "$host_os" in - vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) - ac_cv_func_mmap_dev_zero=no ;; - *) - ac_cv_func_mmap_dev_zero=yes;; - esac]) - - # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, - [AC_TRY_COMPILE( -[#include -#include -#include +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi ], -[int n = MAP_ANONYMOUS;], - ac_cv_decl_map_anon=yes, - ac_cv_decl_map_anon=no)]) +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - if test $ac_cv_decl_map_anon = no; then - ac_cv_func_mmap_anon=no - else - AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], - ac_cv_func_mmap_anon, - [# Add a system to this blacklist if it has mmap() and MAP_ANON or - # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) - # doesn't give anonymous zeroed pages with the same properties listed - # above for use of /dev/zero. - # Systems known to be in this category are Windows, VMS, and SCO Unix. - case "$host_os" in - vms* | cygwin* | pe | mingw* | sco* | udk* ) - ac_cv_func_mmap_anon=no ;; - *) - ac_cv_func_mmap_anon=yes;; - esac]) + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + + +# Cheap backport of AS_EXECUTABLE_P and required macros +# from Autoconf 2.59; we should not use $as_executable_p directly. + +# _AS_TEST_PREPARE +# ---------------- +m4_ifndef([_AS_TEST_PREPARE], +[m4_defun([_AS_TEST_PREPARE], +[if test -x / >/dev/null 2>&1; then + as_executable_p='test -x' +else + as_executable_p='test -f' +fi +])])# _AS_TEST_PREPARE + +# AS_EXECUTABLE_P +# --------------- +# Check whether a file is executable. +m4_ifndef([AS_EXECUTABLE_P], +[m4_defun([AS_EXECUTABLE_P], +[AS_REQUIRE([_AS_TEST_PREPARE])dnl +$as_executable_p $1[]dnl +])])# AS_EXECUTABLE_P + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10])dnl +_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD fi fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +dnl Make sure AC_PROG_CC is never called again, or it will override our +dnl setting of CC. +m4_define([AC_PROG_CC], + [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 -if test $ac_cv_func_mmap_file = yes; then - AC_DEFINE(HAVE_MMAP_FILE, 1, - [Define if read-only mmap of a plain file works.]) -fi -if test $ac_cv_func_mmap_dev_zero = yes; then - AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, - [Define if mmap of /dev/zero works.]) -fi -if test $ac_cv_func_mmap_anon = yes; then - AC_DEFINE(HAVE_MMAP_ANON, 1, - [Define if mmap with MAP_ANON(YMOUS) works.]) +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) fi ]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([acinclude.m4]) Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/config.guess ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/config.guess (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/config.guess Wed Feb 27 10:35:27 2008 @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. -timestamp='2004-11-12' +timestamp='2007-05-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,13 +18,15 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. @@ -53,7 +56,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -66,11 +69,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -104,7 +107,7 @@ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; @@ -123,7 +126,7 @@ ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi at noc.rutgers.edu 1994-08-24) @@ -158,6 +161,7 @@ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -196,55 +200,23 @@ # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" - exit 0 ;; - amd64:OpenBSD:*:*) - echo x86_64-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - cats:OpenBSD:*:*) - echo arm-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - luna88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips64-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit 0 ;; + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -297,40 +269,43 @@ # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; + exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix - exit 0 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe - exit 0 ;; + exit ;; *:OS400:*:*) echo powerpc-ibm-os400 - exit 0 ;; + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp - exit 0;; + exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -338,32 +313,32 @@ else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; + exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 - exit 0 ;; + exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; + sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) + exit ;; + i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -372,10 +347,10 @@ esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 @@ -387,10 +362,10 @@ echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -401,40 +376,40 @@ # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -458,32 +433,33 @@ exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; + exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix - exit 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -499,29 +475,29 @@ else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix - exit 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -529,7 +505,7 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -544,14 +520,18 @@ exit(0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi - exit 0 ;; + exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then @@ -565,28 +545,28 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -648,9 +628,19 @@ esac if [ ${HP_ARCH} = "hppa2.0w" ] then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else @@ -658,11 +648,11 @@ fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -690,158 +680,182 @@ exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; + exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) + exit ;; + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix - exit 0 ;; + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit 0 ;; + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu - exit 0 ;; + exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu - exit 0 ;; + exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu - exit 0 ;; + exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -858,8 +872,12 @@ #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build @@ -877,15 +895,22 @@ #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu - exit 0 ;; + exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu - exit 0 ;; + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -899,7 +924,7 @@ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -907,25 +932,31 @@ PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; + exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu - exit 0 ;; + exit ;; + xtensa:Linux:*:*) + echo xtensa-unknown-linux-gnu + exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent @@ -943,15 +974,15 @@ ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; + exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; + exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; + exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -968,7 +999,7 @@ LIBC=gnulibc1 # endif #else - #ifdef __INTEL_COMPILER + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout @@ -978,16 +1009,23 @@ LIBC=dietlibc #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 - exit 0 ;; + exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... @@ -995,27 +1033,27 @@ # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; + exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; + exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:syllable:*:*) + exit ;; + i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable - exit 0 ;; + exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -1023,15 +1061,16 @@ else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi - exit 0 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; + exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv - exit 0 ;; + exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix - exit 0 ;; + exit ;; M68*:*:R3V[5678]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; + && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1123,69 +1162,81 @@ else echo ns32k-sni-sysv fi - exit 0 ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 - exit 0 ;; + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From seanf at swdc.stratus.com. echo i860-stratus-sysv4 - exit 0 ;; + exit ;; + i*86:VOS:*:*) + # From Paul.Green at stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; *:VOS:*:*) # From Paul.Green at stratus.com. echo hppa1.1-stratus-vos - exit 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi - exit 0 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in - *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1193,22 +1244,25 @@ UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1219,41 +1273,47 @@ UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; + exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; + exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; + exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms && exit 0 ;; - I*) echo ia64-dec-vms && exit 0 ;; - V*) echo vax-dec-vms && exit 0 ;; + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix - exit 0 ;; + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1285,7 +1345,7 @@ #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1374,11 +1434,12 @@ } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1387,22 +1448,22 @@ case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi @@ -1413,7 +1474,9 @@ the operating system you are using. It is advised that you download the most up to date version of the config scripts from - ftp://ftp.gnu.org/pub/gnu/config/ + http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess +and + http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub If the version you run ($0) is already up to date, please send the following data and any information you think might be Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/config.sub ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/config.sub (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/config.sub Wed Feb 27 10:35:27 2008 @@ -1,9 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. -timestamp='2005-04-22' +timestamp='2007-04-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,14 +22,15 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # @@ -83,11 +85,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +101,7 @@ *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,8 +120,9 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ - kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -170,6 +173,10 @@ -hiux*) os=-hiuxwe2 ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -186,6 +193,10 @@ # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -230,15 +241,16 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -247,6 +259,7 @@ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ @@ -255,21 +268,24 @@ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | mt \ | msp430 \ + | nios | nios2 \ | ns16k | ns32k \ - | openrisc | or32 \ + | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; @@ -280,6 +296,9 @@ ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; + ms1) + basic_machine=mt-unknown + ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and @@ -299,18 +318,18 @@ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ + | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ + | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ @@ -321,6 +340,7 @@ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ @@ -329,24 +349,26 @@ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ + | mt-* \ | msp430-* \ + | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) @@ -661,6 +683,10 @@ basic_machine=i386-pc os=-mingw32 ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) basic_machine=m68000-convergent ;; @@ -686,6 +712,9 @@ basic_machine=i386-pc os=-msdos ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; mvs) basic_machine=i370-ibm os=-mvs @@ -761,9 +790,8 @@ basic_machine=hppa1.1-oki os=-proelf ;; - or32 | or32-*) + openrisc | openrisc-*) basic_machine=or32-unknown - os=-coff ;; os400) basic_machine=powerpc-ibm @@ -794,6 +822,12 @@ pc532 | pc532-*) basic_machine=ns32k-pc532 ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; @@ -850,6 +884,10 @@ basic_machine=i586-unknown os=-pw32 ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -876,6 +914,10 @@ sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; sei) basic_machine=mips-sei os=-seiux @@ -887,6 +929,9 @@ basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; sh64) basic_machine=sh64-unknown ;; @@ -1089,13 +1134,10 @@ we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) @@ -1168,20 +1210,23 @@ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1199,7 +1244,7 @@ os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) @@ -1333,6 +1378,12 @@ # system, and we'll never get to this point. case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; *-acorn) os=-riscix1.2 ;; @@ -1342,9 +1393,9 @@ arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff - ;; + c4x-* | tic4x-*) + os=-coff + ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 @@ -1370,6 +1421,9 @@ m68*-cisco) os=-aout ;; + mep-*) + os=-elf + ;; mips*-cisco) os=-elf ;; @@ -1388,6 +1442,9 @@ *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; @@ -1559,7 +1616,7 @@ esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure Wed Feb 27 10:35:27 2008 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for libffi 2.1. +# Generated by GNU Autoconf 2.61 for libffi 3.0.4. # # Report bugs to . # @@ -551,6 +551,160 @@ + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + exec 7<&0 &1 # Name of the host. @@ -574,8 +728,8 @@ # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' -PACKAGE_VERSION='2.1' -PACKAGE_STRING='libffi 2.1' +PACKAGE_VERSION='3.0.4' +PACKAGE_STRING='libffi 3.0.4' PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html' # Factoring default headers for most tests. @@ -663,6 +817,28 @@ target_cpu target_vendor target_os +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar CC CFLAGS LDFLAGS @@ -670,22 +846,118 @@ ac_ct_CC EXEEXT OBJEXT -CPP +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +CCAS +CCASFLAGS +CCASDEPMODE +am__fastdepCCAS_TRUE +am__fastdepCCAS_FALSE +SED GREP EGREP +LN_S +ECHO +AR +RANLIB +CPP +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +MAINTAINER_MODE_TRUE +MAINTAINER_MODE_FALSE +MAINT +TESTSUBDIR_TRUE +TESTSUBDIR_FALSE +AM_RUNTESTFLAGS +MIPS_TRUE +MIPS_FALSE +SPARC_TRUE +SPARC_FALSE +X86_TRUE +X86_FALSE +X86_FREEBSD_TRUE +X86_FREEBSD_FALSE +X86_WIN32_TRUE +X86_WIN32_FALSE +X86_DARWIN_TRUE +X86_DARWIN_FALSE +ALPHA_TRUE +ALPHA_FALSE +IA64_TRUE +IA64_FALSE +M32R_TRUE +M32R_FALSE +M68K_TRUE +M68K_FALSE +POWERPC_TRUE +POWERPC_FALSE +POWERPC_AIX_TRUE +POWERPC_AIX_FALSE +POWERPC_DARWIN_TRUE +POWERPC_DARWIN_FALSE +POWERPC_FREEBSD_TRUE +POWERPC_FREEBSD_FALSE +ARM_TRUE +ARM_FALSE +LIBFFI_CRIS_TRUE +LIBFFI_CRIS_FALSE +FRV_TRUE +FRV_FALSE +S390_TRUE +S390_FALSE +X86_64_TRUE +X86_64_FALSE +SH_TRUE +SH_FALSE +SH64_TRUE +SH64_FALSE +PA_LINUX_TRUE +PA_LINUX_FALSE +PA_HPUX_TRUE +PA_HPUX_FALSE +PA64_HPUX_TRUE +PA64_HPUX_FALSE ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR MKTARGET +toolexecdir +toolexeclibdir LIBOBJS LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias +CCAS +CCASFLAGS CPP -CPPFLAGS' +CPPFLAGS +CXX +CXXFLAGS +LDFLAGS +LIBS +CCC +CXXCPP +F77 +FFLAGS' # Initialize some variables set by options. @@ -1188,7 +1460,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 2.1 to adapt to many kinds of systems. +\`configure' configures libffi 3.0.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1245,6 +1517,11 @@ cat <<\_ACEOF +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] @@ -1254,10 +1531,35 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libffi 2.1:";; + short | recursive ) echo "Configuration of libffi 3.0.4:";; esac cat <<\_ACEOF +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --enable-debug debugging mode + --disable-structs omit code for struct support + --disable-raw-api make the raw api unavailable + --enable-purify-safety purify-safe mode + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + Some influential environment variables: CC C compiler command CFLAGS C compiler flags @@ -1266,7 +1568,14 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1332,7 +1641,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libffi configure 2.1 +libffi configure 3.0.4 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1346,7 +1655,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 2.1, which was +It was created by libffi $as_me 3.0.4, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -1861,6 +2170,466 @@ program_prefix=${target_alias}- target_alias=${target_alias-$host_alias} +. ${srcdir}/configure.host + +am__api_version='1.10' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm -f conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libffi' + VERSION='3.0.4' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +# The same as in boehm-gc and libstdc++. Have to borrow it from there. +# We must force CC to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS ourselves. + ac_ext=c @@ -2781,242 +3550,552 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" +ac_config_commands="$ac_config_commands depfiles" +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + am_cv_CC_dependencies_compiler_type=none +fi - # Broken: fails on valid input. -continue fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -rm -f conftest.err conftest.$ac_ext + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue + + + + + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # Passes both tests. -ac_preproc_ok=: -break + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none fi -rm -f conftest.err conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= fi - done - ac_cv_prog_CPP=$CPP -fi - CPP=$ac_cv_prog_CPP +if test "x$CC" != xcc; then + { echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 +echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6; } else - ac_cv_prog_CPP=$CPP + { echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 +echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6; } fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. +set dummy $CC; ac_cc=`echo $2 | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error + +int +main () +{ + + ; + return 0; +} _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + (eval "$ac_try") 2>&5 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in + (exit $ac_status); } && + test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + (eval "$ac_try") 2>&5 ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue + (exit $ac_status); }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + test -f conftest2.$ac_objext && { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* - # Passes both tests. -ac_preproc_ok=: -break fi +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } -rm -f conftest.err conftest.$ac_ext +cat >>confdefs.h <<\_ACEOF +#define NO_MINUS_C_MINUS_O 1 +_ACEOF -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +fi + +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi + + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +{ echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6; } { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } @@ -3180,21 +4259,548 @@ EGREP="$ac_cv_path_EGREP" -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4694 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + libsuff=64 + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -#include -#include -#include int main () @@ -3204,14 +4810,14 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3220,207 +4826,14910 @@ (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_stdc=no + lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no fi -rm -f conftest* +{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; -fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include - +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - ac_cv_header_stdc=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue fi -rm -f conftest* +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#ifdef __STDC__ +# include #else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +# include #endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} + Syntax error _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" +if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_header_stdc=no + # Passes both tests. +ac_preproc_ok=: +break fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------------- ## +## Report this to http://gcc.gnu.org/bugs.html ## +## ------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } +else + { echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6; } +fi + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } +else + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool at gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool at gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7437: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7441: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7727: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7731: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7831: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:7835: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + ;; + *) + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + { echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + fix_srcfile_path \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + ld_shlibs_CXX=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:12702: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:12706: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:12806: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:12810: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + fix_srcfile_path_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14370: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14374: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14474: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14478: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix[3-9]*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_F77=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + fix_srcfile_path_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16663: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16667: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16953: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16957: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17057: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:17061: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix[3-9]*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_GCJ=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + fix_srcfile_path_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + fix_srcfile_path_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi fi -# On IRIX 5.3, sys/types and inttypes.h are conflicting. +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +# Prevent multiple expansion -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + + + + + + + + + + + +{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= fi -done + MAINT=$MAINTAINER_MODE_TRUE + @@ -4043,61 +20352,130 @@ fi + if test -d $srcdir/testsuite; then + TESTSUBDIR_TRUE= + TESTSUBDIR_FALSE='#' +else + TESTSUBDIR_TRUE='#' + TESTSUBDIR_FALSE= +fi + + TARGETDIR="unknown" case "$host" in -x86_64-*-openbsd*) TARGET=X86_64; TARGETDIR=x86;; -mips*-*-openbsd*) TARGET=MIPS; TARGETDIR=mips;; -sparc-*-openbsd*) TARGET=SPARC; TARGETDIR=sparc;; -sparc64-*-openbsd*) TARGET=SPARC; TARGETDIR=sparc;; -alpha*-*-openbsd*) TARGET=ALPHA; TARGETDIR=alpha;; -m68k-*-openbsd*) TARGET=M68K; TARGETDIR=m68k;; -powerpc-*-openbsd*) TARGET=POWERPC; TARGETDIR=powerpc;; -i*86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86;; -i*86-*-linux*) TARGET=X86; TARGETDIR=x86;; -i*86-*-gnu*) TARGET=X86; TARGETDIR=x86;; -i*86-*-solaris2.1[0-9]*) TARGET=X86_64; TARGETDIR=x86;; -i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;; -i*86-*-beos*) TARGET=X86; TARGETDIR=x86;; -i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;; -i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;; -i*86-*-openbsd*) TARGET=X86; TARGETDIR=x86;; -i*86-*-rtems*) TARGET=X86; TARGETDIR=x86;; -i*86-*-win32*) TARGET=X86_WIN32; TARGETDIR=x86;; -i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; -i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; -frv-*-*) TARGET=FRV; TARGETDIR=frv;; -sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; -sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; -sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; -sparc*-*-rtems*) TARGET=SPARC; TARGETDIR=sparc;; -sparc64-*-linux* | sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; -alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;; -ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; -m32r*-*-linux* ) TARGET=M32R; TARGETDIR=m32r;; -m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; -mips64*-*);; -mips-sgi-irix5.* | mips-sgi-irix6.*) TARGET=MIPS_IRIX; TARGETDIR=mips;; -mips*-*-linux*) TARGET=MIPS_LINUX; TARGETDIR=mips;; -powerpc*-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc;; -powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;; -powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc;; -powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; -powerpc-*-freebsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc;; -powerpc*-*-rtems*) TARGET=POWERPC; TARGETDIR=powerpc;; -rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; -arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; -arm*-*-netbsdelf* | arm*-*-knetbsd*-gnu) TARGET=ARM; TARGETDIR=arm;; -arm*-*-rtems*) TARGET=ARM; TARGETDIR=arm;; -cris-*-*) TARGET=LIBFFI_CRIS; TARGETDIR=cris;; -s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; -s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; -amd64-*-freebsd* | x86_64-*-linux* | x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) TARGET=X86_64; TARGETDIR=x86;; -sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;; -sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; -sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; + alpha*-*-*) + TARGET=ALPHA; TARGETDIR=alpha; + # Support 128-bit long double, changable via command-line switch. + HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' + ;; + + arm*-*-*) + TARGET=ARM; TARGETDIR=arm + ;; + + amd64-*-freebsd*) + TARGET=X86_64; TARGETDIR=x86 + ;; + + cris-*-*) + TARGET=LIBFFI_CRIS; TARGETDIR=cris + ;; + + frv-*-*) + TARGET=FRV; TARGETDIR=frv + ;; + + hppa*-*-linux* | parisc*-*-linux*) + TARGET=PA_LINUX; TARGETDIR=pa + ;; + hppa*64-*-hpux*) + TARGET=PA64_HPUX; TARGETDIR=pa + ;; + hppa*-*-hpux*) + TARGET=PA_HPUX; TARGETDIR=pa + ;; + + i386-*-freebsd* | i386-*-openbsd*) + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; + i?86-win32* | i?86-*-cygwin* | i?86-*-mingw*) + TARGET=X86_WIN32; TARGETDIR=x86 + ;; + i?86-*-darwin*) + TARGET=X86_DARWIN; TARGETDIR=x86 + ;; + i?86-*-solaris2.1[0-9]*) + TARGET=X86_64; TARGETDIR=x86 + ;; + i?86-*-*) + TARGET=X86; TARGETDIR=x86 + ;; + + ia64*-*-*) + TARGET=IA64; TARGETDIR=ia64 + ;; + + m32r*-*-*) + TARGET=M32R; TARGETDIR=m32r + ;; + + m68k-*-*) + TARGET=M68K; TARGETDIR=m68k + ;; + + mips-sgi-irix5.* | mips-sgi-irix6.*) + TARGET=MIPS; TARGETDIR=mips + ;; + mips*-*-linux*) + TARGET=MIPS; TARGETDIR=mips + ;; + + powerpc*-*-linux* | powerpc-*-sysv*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-beos*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-darwin*) + TARGET=POWERPC_DARWIN; TARGETDIR=powerpc + ;; + powerpc-*-aix* | rs6000-*-aix*) + TARGET=POWERPC_AIX; TARGETDIR=powerpc + ;; + powerpc-*-freebsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc + ;; + powerpc*-*-rtems*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + ;; + + sh-*-* | sh[34]*-*-*) + TARGET=SH; TARGETDIR=sh + ;; + sh64-*-* | sh5*-*-*) + TARGET=SH64; TARGETDIR=sh64 + ;; + + sparc*-*-*) + TARGET=SPARC; TARGETDIR=sparc + ;; + + x86_64-*-darwin*) + TARGET=X86_DARWIN; TARGETDIR=x86 + ;; + x86_64-*-cygwin* | x86_64-*-mingw*) + ;; + x86_64-*-*) + TARGET=X86_64; TARGETDIR=x86 + ;; esac + + if test $TARGETDIR = unknown; then { { echo "$as_me:$LINENO: error: \"libffi has not been ported to $host.\"" >&5 echo "$as_me: error: \"libffi has not been ported to $host.\"" >&2;} @@ -4106,10 +20484,198 @@ MKTARGET=$TARGET -case x$TARGET in - xMIPS*) TARGET=MIPS ;; - *) ;; -esac + if test x$TARGET = xMIPS; then + MIPS_TRUE= + MIPS_FALSE='#' +else + MIPS_TRUE='#' + MIPS_FALSE= +fi + + if test x$TARGET = xSPARC; then + SPARC_TRUE= + SPARC_FALSE='#' +else + SPARC_TRUE='#' + SPARC_FALSE= +fi + + if test x$TARGET = xX86; then + X86_TRUE= + X86_FALSE='#' +else + X86_TRUE='#' + X86_FALSE= +fi + + if test x$TARGET = xX86_FREEBSD; then + X86_FREEBSD_TRUE= + X86_FREEBSD_FALSE='#' +else + X86_FREEBSD_TRUE='#' + X86_FREEBSD_FALSE= +fi + + if test x$TARGET = xX86_WIN32; then + X86_WIN32_TRUE= + X86_WIN32_FALSE='#' +else + X86_WIN32_TRUE='#' + X86_WIN32_FALSE= +fi + + if test x$TARGET = xX86_DARWIN; then + X86_DARWIN_TRUE= + X86_DARWIN_FALSE='#' +else + X86_DARWIN_TRUE='#' + X86_DARWIN_FALSE= +fi + + if test x$TARGET = xALPHA; then + ALPHA_TRUE= + ALPHA_FALSE='#' +else + ALPHA_TRUE='#' + ALPHA_FALSE= +fi + + if test x$TARGET = xIA64; then + IA64_TRUE= + IA64_FALSE='#' +else + IA64_TRUE='#' + IA64_FALSE= +fi + + if test x$TARGET = xM32R; then + M32R_TRUE= + M32R_FALSE='#' +else + M32R_TRUE='#' + M32R_FALSE= +fi + + if test x$TARGET = xM68K; then + M68K_TRUE= + M68K_FALSE='#' +else + M68K_TRUE='#' + M68K_FALSE= +fi + + if test x$TARGET = xPOWERPC; then + POWERPC_TRUE= + POWERPC_FALSE='#' +else + POWERPC_TRUE='#' + POWERPC_FALSE= +fi + + if test x$TARGET = xPOWERPC_AIX; then + POWERPC_AIX_TRUE= + POWERPC_AIX_FALSE='#' +else + POWERPC_AIX_TRUE='#' + POWERPC_AIX_FALSE= +fi + + if test x$TARGET = xPOWERPC_DARWIN; then + POWERPC_DARWIN_TRUE= + POWERPC_DARWIN_FALSE='#' +else + POWERPC_DARWIN_TRUE='#' + POWERPC_DARWIN_FALSE= +fi + + if test x$TARGET = xPOWERPC_FREEBSD; then + POWERPC_FREEBSD_TRUE= + POWERPC_FREEBSD_FALSE='#' +else + POWERPC_FREEBSD_TRUE='#' + POWERPC_FREEBSD_FALSE= +fi + + if test x$TARGET = xARM; then + ARM_TRUE= + ARM_FALSE='#' +else + ARM_TRUE='#' + ARM_FALSE= +fi + + if test x$TARGET = xLIBFFI_CRIS; then + LIBFFI_CRIS_TRUE= + LIBFFI_CRIS_FALSE='#' +else + LIBFFI_CRIS_TRUE='#' + LIBFFI_CRIS_FALSE= +fi + + if test x$TARGET = xFRV; then + FRV_TRUE= + FRV_FALSE='#' +else + FRV_TRUE='#' + FRV_FALSE= +fi + + if test x$TARGET = xS390; then + S390_TRUE= + S390_FALSE='#' +else + S390_TRUE='#' + S390_FALSE= +fi + + if test x$TARGET = xX86_64; then + X86_64_TRUE= + X86_64_FALSE='#' +else + X86_64_TRUE='#' + X86_64_FALSE= +fi + + if test x$TARGET = xSH; then + SH_TRUE= + SH_FALSE='#' +else + SH_TRUE='#' + SH_FALSE= +fi + + if test x$TARGET = xSH64; then + SH64_TRUE= + SH64_FALSE='#' +else + SH64_TRUE='#' + SH64_FALSE= +fi + + if test x$TARGET = xPA_LINUX; then + PA_LINUX_TRUE= + PA_LINUX_FALSE='#' +else + PA_LINUX_TRUE='#' + PA_LINUX_FALSE= +fi + + if test x$TARGET = xPA_HPUX; then + PA_HPUX_TRUE= + PA_HPUX_FALSE='#' +else + PA_HPUX_TRUE='#' + PA_HPUX_FALSE= +fi + + if test x$TARGET = xPA64_HPUX; then + PA64_HPUX_TRUE= + PA64_HPUX_FALSE='#' +else + PA64_HPUX_TRUE='#' + PA64_HPUX_FALSE= +fi + { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } @@ -5551,15 +22117,17 @@ # Also AC_SUBST this variable for ffi.h. -HAVE_LONG_DOUBLE=0 -if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then - if test $ac_cv_sizeof_long_double != 0; then - HAVE_LONG_DOUBLE=1 +if test -z "$HAVE_LONG_DOUBLE"; then + HAVE_LONG_DOUBLE=0 + if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then + if test $ac_cv_sizeof_long_double != 0; then + HAVE_LONG_DOUBLE=1 cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_DOUBLE 1 _ACEOF + fi fi fi @@ -5803,6 +22371,65 @@ +{ echo "$as_me:$LINENO: checking assembler .cfi pseudo-op support" >&5 +echo $ECHO_N "checking assembler .cfi pseudo-op support... $ECHO_C" >&6; } +if test "${libffi_cv_as_cfi_pseudo_op+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + libffi_cv_as_cfi_pseudo_op=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +asm (".cfi_startproc\n\t.cfi_endproc"); +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + libffi_cv_as_cfi_pseudo_op=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + libffi_cv_as_cfi_pseudo_op=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $libffi_cv_as_cfi_pseudo_op" >&5 +echo "${ECHO_T}$libffi_cv_as_cfi_pseudo_op" >&6; } +if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_AS_CFI_PSEUDO_OP 1 +_ACEOF + +fi if test x$TARGET = xSPARC; then { echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 @@ -6013,11 +22640,75 @@ +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then + enableval=$enable_debug; if test "$enable_debug" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define FFI_DEBUG 1 +_ACEOF + + fi +fi + + +# Check whether --enable-structs was given. +if test "${enable_structs+set}" = set; then + enableval=$enable_structs; if test "$enable_structs" = "no"; then + +cat >>confdefs.h <<\_ACEOF +#define FFI_NO_STRUCTS 1 +_ACEOF + + fi +fi + + +# Check whether --enable-raw-api was given. +if test "${enable_raw_api+set}" = set; then + enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then cat >>confdefs.h <<\_ACEOF #define FFI_NO_RAW_API 1 _ACEOF + fi +fi + + +# Check whether --enable-purify-safety was given. +if test "${enable_purify_safety+set}" = set; then + enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define USING_PURIFY 1 +_ACEOF + + fi +fi + + +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='$(exec_prefix)/$(target_alias)' + toolexeclibdir='$(toolexecdir)/lib' +else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +fi +multi_os_directory=`$CC -print-multi-os-directory` +case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +esac + + + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi ac_config_commands="$ac_config_commands include" @@ -6030,14 +22721,16 @@ TARGETINCDIR="darwin" ;; esac +ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" + +ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc" -ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" -ac_config_files="$ac_config_files include/ffi.h fficonfig.py" +ac_config_files="$ac_config_files fficonfig.py" cat >confcache <<\_ACEOF @@ -6136,6 +22829,216 @@ LTLIBOBJS=$ac_ltlibobjs +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"TESTSUBDIR\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"TESTSUBDIR\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MIPS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MIPS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"SPARC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"SPARC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${X86_TRUE}" && test -z "${X86_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"X86\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"X86\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${X86_FREEBSD_TRUE}" && test -z "${X86_FREEBSD_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"X86_FREEBSD\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"X86_FREEBSD\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${X86_WIN32_TRUE}" && test -z "${X86_WIN32_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"X86_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"X86_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"X86_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"X86_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ALPHA\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ALPHA\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${IA64_TRUE}" && test -z "${IA64_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"IA64\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"IA64\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${M32R_TRUE}" && test -z "${M32R_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"M32R\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"M32R\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${M68K_TRUE}" && test -z "${M68K_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"M68K\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"M68K\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${POWERPC_TRUE}" && test -z "${POWERPC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"POWERPC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"POWERPC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${POWERPC_AIX_TRUE}" && test -z "${POWERPC_AIX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_AIX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"POWERPC_AIX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"POWERPC_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_FREEBSD\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"POWERPC_FREEBSD\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ARM\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ARM\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${LIBFFI_CRIS_TRUE}" && test -z "${LIBFFI_CRIS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"LIBFFI_CRIS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"LIBFFI_CRIS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FRV_TRUE}" && test -z "${FRV_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FRV\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FRV\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${S390_TRUE}" && test -z "${S390_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"S390\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"S390\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"X86_64\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"X86_64\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${SH_TRUE}" && test -z "${SH_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"SH\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"SH\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${SH64_TRUE}" && test -z "${SH64_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"SH64\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"SH64\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${PA_LINUX_TRUE}" && test -z "${PA_LINUX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"PA_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"PA_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${PA_HPUX_TRUE}" && test -z "${PA_HPUX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"PA_HPUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"PA_HPUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"PA64_HPUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"PA64_HPUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files @@ -6436,7 +23339,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 2.1, which was +This file was extended by libffi $as_me 3.0.4, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6493,7 +23396,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -libffi config.status 2.1 +libffi config.status 3.0.4 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -6503,6 +23406,8 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -6595,6 +23500,7 @@ # # INIT-COMMANDS # +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" TARGETDIR="$TARGETDIR" _ACEOF @@ -6606,11 +23512,17 @@ do case $ac_config_target in "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; - "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; + "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;; + "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; + "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; + "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 @@ -6724,6 +23636,28 @@ target_cpu!$target_cpu$ac_delim target_vendor!$target_vendor$ac_delim target_os!$target_os$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +am__isrc!$am__isrc$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim @@ -6731,19 +23665,146 @@ ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim -CPP!$CPP$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +CCAS!$CCAS$ac_delim +CCASFLAGS!$CCASFLAGS$ac_delim +CCASDEPMODE!$CCASDEPMODE$ac_delim +am__fastdepCCAS_TRUE!$am__fastdepCCAS_TRUE$ac_delim +am__fastdepCCAS_FALSE!$am__fastdepCCAS_FALSE$ac_delim +SED!$SED$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim +LN_S!$LN_S$ac_delim +ECHO!$ECHO$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +AR!$AR$ac_delim +RANLIB!$RANLIB$ac_delim +CPP!$CPP$ac_delim +CXX!$CXX$ac_delim +CXXFLAGS!$CXXFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +CXXDEPMODE!$CXXDEPMODE$ac_delim +am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim +am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim +CXXCPP!$CXXCPP$ac_delim +F77!$F77$ac_delim +FFLAGS!$FFLAGS$ac_delim +ac_ct_F77!$ac_ct_F77$ac_delim +LIBTOOL!$LIBTOOL$ac_delim +MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim +MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim +MAINT!$MAINT$ac_delim +TESTSUBDIR_TRUE!$TESTSUBDIR_TRUE$ac_delim +TESTSUBDIR_FALSE!$TESTSUBDIR_FALSE$ac_delim +AM_RUNTESTFLAGS!$AM_RUNTESTFLAGS$ac_delim +MIPS_TRUE!$MIPS_TRUE$ac_delim +MIPS_FALSE!$MIPS_FALSE$ac_delim +SPARC_TRUE!$SPARC_TRUE$ac_delim +SPARC_FALSE!$SPARC_FALSE$ac_delim +X86_TRUE!$X86_TRUE$ac_delim +X86_FALSE!$X86_FALSE$ac_delim +X86_FREEBSD_TRUE!$X86_FREEBSD_TRUE$ac_delim +X86_FREEBSD_FALSE!$X86_FREEBSD_FALSE$ac_delim +X86_WIN32_TRUE!$X86_WIN32_TRUE$ac_delim +X86_WIN32_FALSE!$X86_WIN32_FALSE$ac_delim +X86_DARWIN_TRUE!$X86_DARWIN_TRUE$ac_delim +X86_DARWIN_FALSE!$X86_DARWIN_FALSE$ac_delim +ALPHA_TRUE!$ALPHA_TRUE$ac_delim +ALPHA_FALSE!$ALPHA_FALSE$ac_delim +IA64_TRUE!$IA64_TRUE$ac_delim +IA64_FALSE!$IA64_FALSE$ac_delim +M32R_TRUE!$M32R_TRUE$ac_delim +M32R_FALSE!$M32R_FALSE$ac_delim +M68K_TRUE!$M68K_TRUE$ac_delim +M68K_FALSE!$M68K_FALSE$ac_delim +POWERPC_TRUE!$POWERPC_TRUE$ac_delim +POWERPC_FALSE!$POWERPC_FALSE$ac_delim +POWERPC_AIX_TRUE!$POWERPC_AIX_TRUE$ac_delim +POWERPC_AIX_FALSE!$POWERPC_AIX_FALSE$ac_delim +POWERPC_DARWIN_TRUE!$POWERPC_DARWIN_TRUE$ac_delim +POWERPC_DARWIN_FALSE!$POWERPC_DARWIN_FALSE$ac_delim +POWERPC_FREEBSD_TRUE!$POWERPC_FREEBSD_TRUE$ac_delim +POWERPC_FREEBSD_FALSE!$POWERPC_FREEBSD_FALSE$ac_delim +ARM_TRUE!$ARM_TRUE$ac_delim +ARM_FALSE!$ARM_FALSE$ac_delim +LIBFFI_CRIS_TRUE!$LIBFFI_CRIS_TRUE$ac_delim +LIBFFI_CRIS_FALSE!$LIBFFI_CRIS_FALSE$ac_delim +FRV_TRUE!$FRV_TRUE$ac_delim +FRV_FALSE!$FRV_FALSE$ac_delim +S390_TRUE!$S390_TRUE$ac_delim +S390_FALSE!$S390_FALSE$ac_delim +X86_64_TRUE!$X86_64_TRUE$ac_delim +X86_64_FALSE!$X86_64_FALSE$ac_delim +SH_TRUE!$SH_TRUE$ac_delim +SH_FALSE!$SH_FALSE$ac_delim +SH64_TRUE!$SH64_TRUE$ac_delim +SH64_FALSE!$SH64_FALSE$ac_delim +PA_LINUX_TRUE!$PA_LINUX_TRUE$ac_delim +PA_LINUX_FALSE!$PA_LINUX_FALSE$ac_delim +PA_HPUX_TRUE!$PA_HPUX_TRUE$ac_delim +PA_HPUX_FALSE!$PA_HPUX_FALSE$ac_delim +PA64_HPUX_TRUE!$PA64_HPUX_TRUE$ac_delim +PA64_HPUX_FALSE!$PA64_HPUX_FALSE$ac_delim ALLOCA!$ALLOCA$ac_delim HAVE_LONG_DOUBLE!$HAVE_LONG_DOUBLE$ac_delim TARGET!$TARGET$ac_delim TARGETDIR!$TARGETDIR$ac_delim MKTARGET!$MKTARGET$ac_delim +toolexecdir!$toolexecdir$ac_delim +toolexeclibdir!$toolexeclibdir$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 77; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -6761,7 +23822,7 @@ fi cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' @@ -6966,6 +24027,15 @@ # CONFIG_FILE # + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -7018,8 +24088,10 @@ s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && @@ -7132,6 +24204,39 @@ cat "$ac_result" fi rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| . 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count ;; :L) # @@ -7167,6 +24272,130 @@ case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; "include":C) test -d include || mkdir include ;; "src":C) test -d src || mkdir src Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac Wed Feb 27 10:35:27 2008 @@ -2,12 +2,21 @@ AC_PREREQ(2.59) -AC_INIT([libffi], [2.1], [http://gcc.gnu.org/bugs.html]) +AC_INIT([libffi], [3.0.4], [http://gcc.gnu.org/bugs.html]) AC_CONFIG_HEADERS([fficonfig.h]) AC_CANONICAL_SYSTEM target_alias=${target_alias-$host_alias} +. ${srcdir}/configure.host + +AM_INIT_AUTOMAKE + +# The same as in boehm-gc and libstdc++. Have to borrow it from there. +# We must force CC to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS ourselves. + m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) m4_define([_AC_ARG_VAR_PRECIOUS],[]) AC_PROG_CC @@ -15,65 +24,134 @@ AC_SUBST(CFLAGS) +AM_PROG_AS +AM_PROG_CC_C_O +AC_PROG_LIBTOOL + +AM_MAINTAINER_MODE + AC_CHECK_HEADERS(sys/mman.h) AC_CHECK_FUNCS(mmap) AC_FUNC_MMAP_BLACKLIST +dnl The -no-testsuite modules omit the test subdir. +AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite) + TARGETDIR="unknown" case "$host" in -x86_64-*-openbsd*) TARGET=X86_64; TARGETDIR=x86;; -mips*-*-openbsd*) TARGET=MIPS; TARGETDIR=mips;; -sparc-*-openbsd*) TARGET=SPARC; TARGETDIR=sparc;; -sparc64-*-openbsd*) TARGET=SPARC; TARGETDIR=sparc;; -alpha*-*-openbsd*) TARGET=ALPHA; TARGETDIR=alpha;; -m68k-*-openbsd*) TARGET=M68K; TARGETDIR=m68k;; -powerpc-*-openbsd*) TARGET=POWERPC; TARGETDIR=powerpc;; -i*86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86;; -i*86-*-linux*) TARGET=X86; TARGETDIR=x86;; -i*86-*-gnu*) TARGET=X86; TARGETDIR=x86;; -i*86-*-solaris2.1[[0-9]]*) TARGET=X86_64; TARGETDIR=x86;; -i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;; -i*86-*-beos*) TARGET=X86; TARGETDIR=x86;; -i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;; -i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;; -i*86-*-openbsd*) TARGET=X86; TARGETDIR=x86;; -i*86-*-rtems*) TARGET=X86; TARGETDIR=x86;; -i*86-*-win32*) TARGET=X86_WIN32; TARGETDIR=x86;; -i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; -i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; -frv-*-*) TARGET=FRV; TARGETDIR=frv;; -sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; -sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; -sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; -sparc*-*-rtems*) TARGET=SPARC; TARGETDIR=sparc;; -sparc64-*-linux* | sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; -alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;; -ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; -m32r*-*-linux* ) TARGET=M32R; TARGETDIR=m32r;; -m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; -mips64*-*);; -mips-sgi-irix5.* | mips-sgi-irix6.*) TARGET=MIPS_IRIX; TARGETDIR=mips;; -mips*-*-linux*) TARGET=MIPS_LINUX; TARGETDIR=mips;; -powerpc*-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc;; -powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;; -powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc;; -powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; -powerpc-*-freebsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc;; -powerpc*-*-rtems*) TARGET=POWERPC; TARGETDIR=powerpc;; -rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; -arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; -arm*-*-netbsdelf* | arm*-*-knetbsd*-gnu) TARGET=ARM; TARGETDIR=arm;; -arm*-*-rtems*) TARGET=ARM; TARGETDIR=arm;; -cris-*-*) TARGET=LIBFFI_CRIS; TARGETDIR=cris;; -s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; -s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; -amd64-*-freebsd* | x86_64-*-linux* | x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) TARGET=X86_64; TARGETDIR=x86;; -sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; -sh-*-rtems*) TARGET=SH; TARGETDIR=sh;; -sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; -hppa*-*-linux* | parisc*-*-linux*) TARGET=PA; TARGETDIR=pa;; + alpha*-*-*) + TARGET=ALPHA; TARGETDIR=alpha; + # Support 128-bit long double, changable via command-line switch. + HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' + ;; + + arm*-*-*) + TARGET=ARM; TARGETDIR=arm + ;; + + amd64-*-freebsd*) + TARGET=X86_64; TARGETDIR=x86 + ;; + + cris-*-*) + TARGET=LIBFFI_CRIS; TARGETDIR=cris + ;; + + frv-*-*) + TARGET=FRV; TARGETDIR=frv + ;; + + hppa*-*-linux* | parisc*-*-linux*) + TARGET=PA_LINUX; TARGETDIR=pa + ;; + hppa*64-*-hpux*) + TARGET=PA64_HPUX; TARGETDIR=pa + ;; + hppa*-*-hpux*) + TARGET=PA_HPUX; TARGETDIR=pa + ;; + + i386-*-freebsd* | i386-*-openbsd*) + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; + i?86-win32* | i?86-*-cygwin* | i?86-*-mingw*) + TARGET=X86_WIN32; TARGETDIR=x86 + ;; + i?86-*-darwin*) + TARGET=X86_DARWIN; TARGETDIR=x86 + ;; + i?86-*-solaris2.1[[0-9]]*) + TARGET=X86_64; TARGETDIR=x86 + ;; + i?86-*-*) + TARGET=X86; TARGETDIR=x86 + ;; + + ia64*-*-*) + TARGET=IA64; TARGETDIR=ia64 + ;; + + m32r*-*-*) + TARGET=M32R; TARGETDIR=m32r + ;; + + m68k-*-*) + TARGET=M68K; TARGETDIR=m68k + ;; + + mips-sgi-irix5.* | mips-sgi-irix6.*) + TARGET=MIPS; TARGETDIR=mips + ;; + mips*-*-linux*) + TARGET=MIPS; TARGETDIR=mips + ;; + + powerpc*-*-linux* | powerpc-*-sysv*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-beos*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-darwin*) + TARGET=POWERPC_DARWIN; TARGETDIR=powerpc + ;; + powerpc-*-aix* | rs6000-*-aix*) + TARGET=POWERPC_AIX; TARGETDIR=powerpc + ;; + powerpc-*-freebsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc + ;; + powerpc*-*-rtems*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + ;; + + sh-*-* | sh[[34]]*-*-*) + TARGET=SH; TARGETDIR=sh + ;; + sh64-*-* | sh5*-*-*) + TARGET=SH64; TARGETDIR=sh64 + ;; + + sparc*-*-*) + TARGET=SPARC; TARGETDIR=sparc + ;; + + x86_64-*-darwin*) + TARGET=X86_DARWIN; TARGETDIR=x86 + ;; + x86_64-*-cygwin* | x86_64-*-mingw*) + ;; + x86_64-*-*) + TARGET=X86_64; TARGETDIR=x86 + ;; esac +AC_SUBST(AM_RUNTESTFLAGS) + if test $TARGETDIR = unknown; then AC_MSG_ERROR(["libffi has not been ported to $host."]) fi @@ -84,10 +162,30 @@ dnl of TARGET to use in fficonfig.py.in. MKTARGET=$TARGET -case x$TARGET in - xMIPS*) TARGET=MIPS ;; - *) ;; -esac +AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS) +AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC) +AM_CONDITIONAL(X86, test x$TARGET = xX86) +AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD) +AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32) +AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN) +AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA) +AM_CONDITIONAL(IA64, test x$TARGET = xIA64) +AM_CONDITIONAL(M32R, test x$TARGET = xM32R) +AM_CONDITIONAL(M68K, test x$TARGET = xM68K) +AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC) +AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX) +AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN) +AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD) +AM_CONDITIONAL(ARM, test x$TARGET = xARM) +AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS) +AM_CONDITIONAL(FRV, test x$TARGET = xFRV) +AM_CONDITIONAL(S390, test x$TARGET = xS390) +AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64) +AM_CONDITIONAL(SH, test x$TARGET = xSH) +AM_CONDITIONAL(SH64, test x$TARGET = xSH64) +AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX) +AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX) +AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX) AC_HEADER_STDC AC_CHECK_FUNCS(memcpy) @@ -97,11 +195,13 @@ AC_CHECK_SIZEOF(long double) # Also AC_SUBST this variable for ffi.h. -HAVE_LONG_DOUBLE=0 -if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then - if test $ac_cv_sizeof_long_double != 0; then - HAVE_LONG_DOUBLE=1 - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double]) +if test -z "$HAVE_LONG_DOUBLE"; then + HAVE_LONG_DOUBLE=0 + if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then + if test $ac_cv_sizeof_long_double != 0; then + HAVE_LONG_DOUBLE=1 + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double]) + fi fi fi AC_SUBST(HAVE_LONG_DOUBLE) @@ -111,7 +211,7 @@ [ /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). - + The block below does compile-time checking for endianness on platforms that use GCC and therefore allows compiling fat binaries on OSX by using '-arch ppc -arch i386' as the compile flags. The phrasing was choosen @@ -125,6 +225,17 @@ #endif #endif]) +AC_CACHE_CHECK([assembler .cfi pseudo-op support], + libffi_cv_as_cfi_pseudo_op, [ + libffi_cv_as_cfi_pseudo_op=unknown + AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],, + [libffi_cv_as_cfi_pseudo_op=yes], + [libffi_cv_as_cfi_pseudo_op=no]) +]) +if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then + AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1, + [Define if your assembler supports .cfi_* directives.]) +fi if test x$TARGET = xSPARC; then AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs], @@ -219,7 +330,51 @@ AC_SUBST(SHELL) -AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.]) +AC_ARG_ENABLE(debug, +[ --enable-debug debugging mode], + if test "$enable_debug" = "yes"; then + AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) + fi) + +AC_ARG_ENABLE(structs, +[ --disable-structs omit code for struct support], + if test "$enable_structs" = "no"; then + AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.]) + fi) + +AC_ARG_ENABLE(raw-api, +[ --disable-raw-api make the raw api unavailable], + if test "$enable_raw_api" = "no"; then + AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.]) + fi) + +AC_ARG_ENABLE(purify-safety, +[ --enable-purify-safety purify-safe mode], + if test "$enable_purify_safety" = "yes"; then + AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) + fi) + +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='$(exec_prefix)/$(target_alias)' + toolexeclibdir='$(toolexecdir)/lib' +else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +fi +multi_os_directory=`$CC -print-multi-os-directory` +case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +esac +AC_SUBST(toolexecdir) +AC_SUBST(toolexeclibdir) + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) AC_CONFIG_COMMANDS(src, [ @@ -233,11 +388,12 @@ TARGETINCDIR="darwin" ;; esac +AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) +AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc) -AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h) AC_CONFIG_LINKS(include/ffi_common.h:include/ffi_common.h) -AC_CONFIG_FILES(include/ffi.h fficonfig.py) +AC_CONFIG_FILES(fficonfig.py) AC_OUTPUT Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.host ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.host Wed Feb 27 10:35:27 2008 @@ -0,0 +1,11 @@ +# configure.host +# +# This shell script handles all host based configuration for libffi. +# + +# THIS TABLE IS SORTED. KEEP IT THAT WAY. +case "${host}" in + frv*-elf) + LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ + ;; +esac Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/install-sh ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/install-sh (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/install-sh Wed Feb 27 10:35:27 2008 @@ -1,7 +1,8 @@ #!/bin/sh -# # install - install a program, script, or datafile -# + +scriptversion=2004-12-17.09 + # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. @@ -41,13 +42,11 @@ # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. - # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" - # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" @@ -59,236 +58,266 @@ rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" -transformbasename="" -transform_arg="" -instcmd="$mvprog" chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" +chowncmd= +chgrpcmd= +stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "$0: no input file specified" >&2 - exit 1 -else - : -fi +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d "$dst" ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "$0: $src does not exist" >&2 - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "$0: no destination specified" >&2 - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d "$dst" ] - then - dst=$dst/`basename "$src"` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-$defaultIFS}" - -oIFS=$IFS -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS=$oIFS - -pathcomp='' + -t) dstarg=$2 + shift + shift + continue;; -while [ $# -ne 0 ] ; do - pathcomp=$pathcomp$1 + -T) no_target_directory=true shift + continue;; - if [ ! -d "$pathcomp" ] ; - then - $mkdirprog "$pathcomp" - else - : - fi + --version) echo "$0 $scriptversion"; exit 0;; - pathcomp=$pathcomp/ + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd "$dst" && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - if [ x"$transformarg" = x ] - then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename "$dst"` - else - : - fi - -# Make a couple of temp file names in the proper directory. - - dsttmp=$dstdir/#inst.$$# - rmtmp=$dstdir/#rm.$$# - -# Trap to clean up temp files at exit. - - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - -# Move or copy the file name to the temp name - - $doit $instcmd "$src" "$dsttmp" && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && - -# Now remove or move aside any old file at destination location. We try this -# two ways since rm can't unlink itself on some systems and the destination -# file might be busy for other reasons. In this case, the final cleanup -# might fail but the new file should still install successfully. - -{ - if [ -f "$dstdir/$dstfile" ] - then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || - $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || - { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi -} && - -# Now rename the file to the real destination. +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac -fi && + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done # The final little trick to "correctly" pass the exit status to the exit trap. - { - (exit 0); exit + (exit 0); exit 0 } + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/libffi.pc.in ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/libffi.pc.in Wed Feb 27 10:35:27 2008 @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=${libdir}/@PACKAGE_NAME at -@PACKAGE_VERSION@/include + +Name: @PACKAGE_NAME@ +Description: Library supporting Foreign Function Interfaces +Version: @PACKAGE_VERSION@ +Libs: -lffi +Cflags: -I${includedir} Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/missing ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/missing Wed Feb 27 10:35:27 2008 @@ -0,0 +1,353 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2004-09-07.08 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit 0 + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit 0 + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: From python-checkins at python.org Wed Feb 27 11:00:12 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 27 Feb 2008 11:00:12 +0100 (CET) Subject: [Python-checkins] r61095 - in python/branches/libffi3-branch/Modules/_ctypes/libffi: fficonfig.py.in src/x86/ffi.c Message-ID: <20080227100012.D44231E400A@bag.python.org> Author: thomas.heller Date: Wed Feb 27 11:00:12 2008 New Revision: 61095 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.py.in python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Log: src/x86/ffi.c: sync with libffi3. fficonfig.py.in: add fix for OpenBSD. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.py.in ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.py.in (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/fficonfig.py.in Wed Feb 27 11:00:12 2008 @@ -7,6 +7,7 @@ 'MIPS_LINUX': ['src/mips/ffi.c', 'src/mips/o32.S'], 'X86': ['src/x86/ffi.c', 'src/x86/sysv.S'], 'X86_DARWIN': ['src/x86/ffi_darwin.c', 'src/x86/darwin.S'], + 'X86_FREEBSD': ['src/x86/ffi.c', 'src/x86/sysv.S'], 'X86_WIN32': ['src/x86/ffi.c', 'src/x86/win32.S'], 'SPARC': ['src/sparc/ffi.c', 'src/sparc/v8.S', 'src/sparc/v9.S'], 'ALPHA': ['src/alpha/ffi.c', 'src/alpha/osf.S'], Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/src/x86/ffi.c Wed Feb 27 11:00:12 2008 @@ -121,7 +121,7 @@ switch (cif->rtype->type) { case FFI_TYPE_VOID: -#if !defined(X86_WIN32) && !defined(__OpenBSD__) && !defined(__FreeBSD__) +#ifdef X86 case FFI_TYPE_STRUCT: #endif #if defined(X86) || defined(X86_DARWIN) @@ -142,7 +142,7 @@ cif->flags = FFI_TYPE_SINT64; break; -#if defined(X86_WIN32) || defined(__OpenBSD__) || defined(__FreeBSD__) +#ifndef X86 case FFI_TYPE_STRUCT: if (cif->rtype->size == 1) { From python-checkins at python.org Wed Feb 27 11:25:31 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 27 Feb 2008 11:25:31 +0100 (CET) Subject: [Python-checkins] r61096 - in python/branches/libffi3-branch/Modules/_ctypes/libffi: Makefile.am include/Makefile.am include/Makefile.in Message-ID: <20080227102531.489FA1E400A@bag.python.org> Author: thomas.heller Date: Wed Feb 27 11:25:30 2008 New Revision: 61096 Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.am (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.am (contents, props changed) python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.in (contents, props changed) Log: Add missing files. Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.am ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/Makefile.am Wed Feb 27 11:25:30 2008 @@ -0,0 +1,177 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS = foreign subdir-objects + +SUBDIRS = include testsuite man + +EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \ + src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ + src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ + src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \ + src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \ + src/ia64/unix.S \ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ + src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ + src/powerpc/ffi.c src/powerpc/sysv.S \ + src/powerpc/linux64.S src/powerpc/linux64_closure.S \ + src/powerpc/ppc_closure.S src/powerpc/asm.h \ + src/powerpc/aix.S src/powerpc/darwin.S \ + src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ + src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ + src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ + src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \ + src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \ + src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \ + src/sparc/ffi.c src/x86/darwin64.S \ + src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \ + src/x86/freebsd.S \ + src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \ + src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ + src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \ + libtool-version ChangeLog.libffi + +info_TEXINFOS = doc/libffi.texi + +## ################################################################ + +## +## This section is for make and multilib madness. +## + +# Work around what appears to be a GNU make bug handling MAKEFLAGS +# values defined in terms of make variables, as is the case for CC and +# friends when we are called from the top level Makefile. +AM_MAKEFLAGS = \ + "AR_FLAGS=$(AR_FLAGS)" \ + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ + "CFLAGS=$(CFLAGS)" \ + "CXXFLAGS=$(CXXFLAGS)" \ + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ + "JC1FLAGS=$(JC1FLAGS)" \ + "LDFLAGS=$(LDFLAGS)" \ + "LIBCFLAGS=$(LIBCFLAGS)" \ + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ + "MAKE=$(MAKE)" \ + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ + "PICFLAG=$(PICFLAG)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ + "SHELL=$(SHELL)" \ + "exec_prefix=$(exec_prefix)" \ + "infodir=$(infodir)" \ + "libdir=$(libdir)" \ + "prefix=$(prefix)" \ + "AR=$(AR)" \ + "AS=$(AS)" \ + "CC=$(CC)" \ + "CXX=$(CXX)" \ + "LD=$(LD)" \ + "NM=$(NM)" \ + "RANLIB=$(RANLIB)" \ + "DESTDIR=$(DESTDIR)" + +MAKEOVERRIDES= + +lib_LTLIBRARIES = libffi.la +noinst_LTLIBRARIES = libffi_convenience.la + +libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \ + src/raw_api.c src/java_raw_api.c src/closures.c + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libffi.pc + +nodist_libffi_la_SOURCES = + +if MIPS +nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S +endif +if X86 +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S +endif +if X86_FREEBSD +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S +endif +if X86_WIN32 +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S +endif +if X86_DARWIN +nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S +endif +if SPARC +nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S +endif +if ALPHA +nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S +endif +if IA64 +nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S +endif +if M32R +nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c +endif +if M68K +nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S +endif +if POWERPC +nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S +endif +if POWERPC_AIX +nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S +endif +if POWERPC_DARWIN +nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S +endif +if POWERPC_FREEBSD +nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S +endif +if ARM +nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c +endif +if LIBFFI_CRIS +nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c +endif +if FRV +nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c +endif +if S390 +nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c +endif +if X86_64 +nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S +endif +if SH +nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c +endif +if SH64 +nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c +endif +if PA_LINUX +nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c +endif +if PA_HPUX +nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c +endif + +libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) +nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + +AM_CFLAGS = -Wall -g -fexceptions + +libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` + +AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src +AM_CCASFLAGS = $(AM_CPPFLAGS) + +# No install-html or install-pdf support in automake yet +.PHONY: install-html install-pdf +install-html: +install-pdf: + Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.am ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.am Wed Feb 27 11:25:30 2008 @@ -0,0 +1,9 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS=foreign + +DISTCLEANFILES=ffitarget.h +EXTRA_DIST=ffi.h.in ffi_common.h + +includesdir = $(libdir)/@PACKAGE_NAME at -@PACKAGE_VERSION@/include +nodist_includes_HEADERS = ffi.h ffitarget.h Added: python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.in ============================================================================== --- (empty file) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/include/Makefile.in Wed Feb 27 11:25:30 2008 @@ -0,0 +1,422 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + at SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/ffi.h.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/fficonfig.h +CONFIG_CLEAN_FILES = ffi.h ffitarget.h +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(includesdir)" +nodist_includesHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(nodist_includes_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TARGET = @TARGET@ +TARGETDIR = @TARGETDIR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +toolexecdir = @toolexecdir@ +toolexeclibdir = @toolexeclibdir@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign +DISTCLEANFILES = ffitarget.h +EXTRA_DIST = ffi.h.in ffi_common.h +includesdir = $(libdir)/@PACKAGE_NAME at -@PACKAGE_VERSION@/include +nodist_includes_HEADERS = ffi.h ffitarget.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +ffi.h: $(top_builddir)/config.status $(srcdir)/ffi.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-nodist_includesHEADERS: $(nodist_includes_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)" + @list='$(nodist_includes_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_includesHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includesdir)/$$f'"; \ + $(nodist_includesHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includesdir)/$$f"; \ + done + +uninstall-nodist_includesHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_includes_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includesdir)/$$f'"; \ + rm -f "$(DESTDIR)$(includesdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-nodist_includesHEADERS + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-nodist_includesHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-nodist_includesHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-nodist_includesHEADERS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: From python-checkins at python.org Wed Feb 27 12:13:39 2008 From: python-checkins at python.org (thomas.heller) Date: Wed, 27 Feb 2008 12:13:39 +0100 (CET) Subject: [Python-checkins] r61097 - python/branches/libffi3-branch/Modules/_ctypes/libffi/configure python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac Message-ID: <20080227111339.3540B1E400A@bag.python.org> Author: thomas.heller Date: Wed Feb 27 12:13:38 2008 New Revision: 61097 Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac Log: Remove unneeded files from configure.ac. Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure Wed Feb 27 12:13:38 2008 @@ -22724,7 +22724,7 @@ ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" -ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc" +ac_config_files="$ac_config_files include/ffi.h" ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" @@ -23516,12 +23516,7 @@ "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; - "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; Modified: python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/libffi3-branch/Modules/_ctypes/libffi/configure.ac Wed Feb 27 12:13:38 2008 @@ -390,7 +390,7 @@ esac AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) -AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc) +AC_CONFIG_FILES(include/ffi.h) AC_CONFIG_LINKS(include/ffi_common.h:include/ffi_common.h) From python-checkins at python.org Thu Feb 28 05:45:37 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Thu, 28 Feb 2008 05:45:37 +0100 (CET) Subject: [Python-checkins] r61098 - in python/trunk: Include/object.h Lib/abc.py Lib/test/test_descrtut.py Objects/typeobject.c Message-ID: <20080228044537.22DAF1E4023@bag.python.org> Author: jeffrey.yasskin Date: Thu Feb 28 05:45:36 2008 New Revision: 61098 Modified: python/trunk/Include/object.h python/trunk/Lib/abc.py python/trunk/Lib/test/test_descrtut.py python/trunk/Objects/typeobject.c Log: Move abc._Abstract into object by adding a new flag Py_TPFLAGS_IS_ABSTRACT, which forbids constructing types that have it set. The effect is to speed ./python.exe -m timeit -s 'import abc' -s 'class Foo(object): __metaclass__ = abc.ABCMeta' 'Foo()' up from 2.5us to 0.201us. This fixes issue 1762. Modified: python/trunk/Include/object.h ============================================================================== --- python/trunk/Include/object.h (original) +++ python/trunk/Include/object.h Thu Feb 28 05:45:36 2008 @@ -537,6 +537,9 @@ #define Py_TPFLAGS_HAVE_VERSION_TAG (1L<<18) #define Py_TPFLAGS_VALID_VERSION_TAG (1L<<19) +/* Type is abstract and cannot be instantiated */ +#define Py_TPFLAGS_IS_ABSTRACT (1L<<20) + /* These flags are used to determine if a type is a subclass. */ #define Py_TPFLAGS_INT_SUBCLASS (1L<<23) #define Py_TPFLAGS_LONG_SUBCLASS (1L<<24) Modified: python/trunk/Lib/abc.py ============================================================================== --- python/trunk/Lib/abc.py (original) +++ python/trunk/Lib/abc.py Thu Feb 28 05:45:36 2008 @@ -51,52 +51,6 @@ __isabstractmethod__ = True -class _Abstract(object): - - """Helper class inserted into the bases by ABCMeta (using _fix_bases()). - - You should never need to explicitly subclass this class. - - There should never be a base class between _Abstract and object. - """ - - def __new__(cls, *args, **kwds): - am = cls.__dict__.get("__abstractmethods__") - if am: - raise TypeError("Can't instantiate abstract class %s " - "with abstract methods %s" % - (cls.__name__, ", ".join(sorted(am)))) - if (args or kwds) and cls.__init__ is object.__init__: - raise TypeError("Can't pass arguments to __new__ " - "without overriding __init__") - return super(_Abstract, cls).__new__(cls) - - @classmethod - def __subclasshook__(cls, subclass): - """Abstract classes can override this to customize issubclass(). - - This is invoked early on by __subclasscheck__() below. It - should return True, False or NotImplemented. If it returns - NotImplemented, the normal algorithm is used. Otherwise, it - overrides the normal algorithm (and the outcome is cached). - """ - return NotImplemented - - -def _fix_bases(bases): - """Helper method that inserts _Abstract in the bases if needed.""" - for base in bases: - if issubclass(base, _Abstract): - # _Abstract is already a base (maybe indirectly) - return bases - if object in bases: - # Replace object with _Abstract - return tuple([_Abstract if base is object else base - for base in bases]) - # Append _Abstract to the end - return bases + (_Abstract,) - - class ABCMeta(type): """Metaclass for defining Abstract Base Classes (ABCs). @@ -119,7 +73,6 @@ _abc_invalidation_counter = 0 def __new__(mcls, name, bases, namespace): - bases = _fix_bases(bases) cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace) # Compute set of abstract method names abstracts = set(name @@ -130,7 +83,7 @@ value = getattr(cls, name, None) if getattr(value, "__isabstractmethod__", False): abstracts.add(name) - cls.__abstractmethods__ = abstracts + cls.__abstractmethods__ = frozenset(abstracts) # Set up inheritance registry cls._abc_registry = set() cls._abc_cache = set() Modified: python/trunk/Lib/test/test_descrtut.py ============================================================================== --- python/trunk/Lib/test/test_descrtut.py (original) +++ python/trunk/Lib/test/test_descrtut.py Thu Feb 28 05:45:36 2008 @@ -209,6 +209,7 @@ '__setitem__', '__setslice__', '__str__', + '__subclasshook__', 'append', 'count', 'extend', Modified: python/trunk/Objects/typeobject.c ============================================================================== --- python/trunk/Objects/typeobject.c (original) +++ python/trunk/Objects/typeobject.c Thu Feb 28 05:45:36 2008 @@ -306,6 +306,40 @@ } static PyObject * +type_abstractmethods(PyTypeObject *type, void *context) +{ + PyObject *mod = PyDict_GetItemString(type->tp_dict, + "__abstractmethods__"); + if (!mod) { + PyErr_Format(PyExc_AttributeError, "__abstractmethods__"); + return NULL; + } + Py_XINCREF(mod); + return mod; +} + +static int +type_set_abstractmethods(PyTypeObject *type, PyObject *value, void *context) +{ + /* __abstractmethods__ should only be set once on a type, in + abc.ABCMeta.__new__, so this function doesn't do anything + special to update subclasses. + */ + int res = PyDict_SetItemString(type->tp_dict, + "__abstractmethods__", value); + if (res == 0) { + type_modified(type); + if (value && PyObject_IsTrue(value)) { + type->tp_flags |= Py_TPFLAGS_IS_ABSTRACT; + } + else { + type->tp_flags &= ~Py_TPFLAGS_IS_ABSTRACT; + } + } + return res; +} + +static PyObject * type_get_bases(PyTypeObject *type, void *context) { Py_INCREF(type->tp_bases); @@ -542,6 +576,8 @@ {"__name__", (getter)type_name, (setter)type_set_name, NULL}, {"__bases__", (getter)type_get_bases, (setter)type_set_bases, NULL}, {"__module__", (getter)type_module, (setter)type_set_module, NULL}, + {"__abstractmethods__", (getter)type_abstractmethods, + (setter)type_set_abstractmethods, NULL}, {"__dict__", (getter)type_dict, NULL, NULL}, {"__doc__", (getter)type_get_doc, NULL, NULL}, {0} @@ -2749,6 +2785,56 @@ } if (err < 0) return NULL; + + if (type->tp_flags & Py_TPFLAGS_IS_ABSTRACT) { + static PyObject *comma = NULL; + PyObject *abstract_methods = NULL; + PyObject *builtins; + PyObject *sorted; + PyObject *sorted_methods = NULL; + PyObject *joined = NULL; + const char *joined_str; + + /* Compute ", ".join(sorted(type.__abstractmethods__)) + into joined. */ + abstract_methods = type_abstractmethods(type, NULL); + if (abstract_methods == NULL) + goto error; + builtins = PyEval_GetBuiltins(); + if (builtins == NULL) + goto error; + sorted = PyDict_GetItemString(builtins, "sorted"); + if (sorted == NULL) + goto error; + sorted_methods = PyObject_CallFunctionObjArgs(sorted, + abstract_methods, + NULL); + if (sorted_methods == NULL) + goto error; + if (comma == NULL) { + comma = PyString_InternFromString(", "); + if (comma == NULL) + goto error; + } + joined = PyObject_CallMethod(comma, "join", + "O", sorted_methods); + if (joined == NULL) + goto error; + joined_str = PyString_AsString(joined); + if (joined_str == NULL) + goto error; + + PyErr_Format(PyExc_TypeError, + "Can't instantiate abstract class %s " + "with abstract methods %s", + type->tp_name, + joined_str); + error: + Py_XDECREF(joined); + Py_XDECREF(sorted_methods); + Py_XDECREF(abstract_methods); + return NULL; + } return type->tp_alloc(type, 0); } @@ -3210,6 +3296,21 @@ return _common_reduce(self, proto); } +static PyObject * +object_subclasshook(PyObject *cls, PyObject *args) +{ + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; +} + +PyDoc_STRVAR(object_subclasshook_doc, +"Abstract classes can override this to customize issubclass().\n" +"\n" +"This is invoked early on by abc.ABCMeta.__subclasscheck__().\n" +"It should return True, False or NotImplemented. If it returns\n" +"NotImplemented, the normal algorithm is used. Otherwise, it\n" +"overrides the normal algorithm (and the outcome is cached).\n"); + /* from PEP 3101, this code implements: @@ -3259,6 +3360,8 @@ PyDoc_STR("helper for pickle")}, {"__reduce__", object_reduce, METH_VARARGS, PyDoc_STR("helper for pickle")}, + {"__subclasshook__", object_subclasshook, METH_CLASS | METH_VARARGS, + object_subclasshook_doc}, {"__format__", object_format, METH_VARARGS, PyDoc_STR("default object formatter")}, {0} From python-checkins at python.org Thu Feb 28 06:53:18 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Thu, 28 Feb 2008 06:53:18 +0100 (CET) Subject: [Python-checkins] r61099 - python/trunk/Lib/test/test_socketserver.py Message-ID: <20080228055318.975CD1E4002@bag.python.org> Author: jeffrey.yasskin Date: Thu Feb 28 06:53:18 2008 New Revision: 61099 Modified: python/trunk/Lib/test/test_socketserver.py Log: Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make sure all tests run even if some fail. Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Thu Feb 28 06:53:18 2008 @@ -2,13 +2,15 @@ Test suite for SocketServer.py. """ -import os -import socket import errno import imp +import os import select -import time +import signal +import socket +import tempfile import threading +import time import unittest import SocketServer @@ -19,7 +21,6 @@ test.test_support.requires("network") NREQ = 3 -DELAY = 0.5 TEST_STR = "hello world\n" HOST = "localhost" @@ -27,14 +28,6 @@ HAVE_FORKING = hasattr(os, "fork") and os.name != "os2" -class MyMixinHandler: - def handle(self): - time.sleep(DELAY) - line = self.rfile.readline() - time.sleep(DELAY) - self.wfile.write(line) - - def receive(sock, n, timeout=20): r, w, x = select.select([sock], [], [], timeout) if sock in r: @@ -42,14 +35,6 @@ else: raise RuntimeError, "timed out on %r" % (sock,) - -class MyStreamHandler(MyMixinHandler, SocketServer.StreamRequestHandler): - pass - -class MyDatagramHandler(MyMixinHandler, - SocketServer.DatagramRequestHandler): - pass - if HAVE_UNIX_SOCKETS: class ForkingUnixStreamServer(SocketServer.ForkingMixIn, SocketServer.UnixStreamServer): @@ -84,48 +69,28 @@ pass if verbose: print "thread: creating server" svr = svrcls(self.__addr, self.__hdlrcls) - # pull the address out of the server in case it changed - # this can happen if another process is using the port - addr = svr.server_address - if addr: - self.__addr = addr - if self.__addr != svr.socket.getsockname(): - raise RuntimeError('server_address was %s, expected %s' % - (self.__addr, svr.socket.getsockname())) + # We had the OS pick a port, so pull the real address out of + # the server. + self.addr = svr.server_address + self.port = self.addr[1] + if self.addr != svr.socket.getsockname(): + raise RuntimeError('server_address was %s, expected %s' % + (self.addr, svr.socket.getsockname())) self.ready.set() if verbose: print "thread: serving three times" svr.serve_a_few() if verbose: print "thread: done" -class ForgivingTCPServer(SocketServer.TCPServer): - # prevent errors if another process is using the port we want - def server_bind(self): - host, default_port = self.server_address - # this code shamelessly stolen from test.test_support - # the ports were changed to protect the innocent - import sys - for port in [default_port, 3434, 8798, 23833]: - try: - self.server_address = host, port - SocketServer.TCPServer.server_bind(self) - break - except socket.error, (err, msg): - if err != errno.EADDRINUSE: - raise - print >> sys.__stderr__, \ - "WARNING: failed to listen on port %d, trying another: " % port - - class SocketServerTest(unittest.TestCase): """Test all socket servers.""" def setUp(self): + signal.alarm(20) # Kill deadlocks after 20 seconds. self.port_seed = 0 self.test_files = [] def tearDown(self): - time.sleep(DELAY) reap_children() for fn in self.test_files: @@ -134,16 +99,18 @@ except os.error: pass self.test_files[:] = [] - - def pickport(self): - self.port_seed += 1 - return 10000 + (os.getpid() % 1000)*10 + self.port_seed + signal.alarm(0) # Didn't deadlock. def pickaddr(self, proto): if proto == socket.AF_INET: - return (HOST, self.pickport()) + return (HOST, 0) else: - fn = TEST_FILE + str(self.pickport()) + # XXX: We need a way to tell AF_UNIX to pick its own name + # like AF_INET provides port==0. + dir = None + if os.name == 'os2': + dir = '\socket' + fn = tempfile.mktemp(prefix='unix_socket.', dir=dir) if os.name == 'os2': # AF_UNIX socket names on OS/2 require a specific prefix # which can't include a drive letter and must also use @@ -152,7 +119,6 @@ fn = fn[2:] if fn[0] in (os.sep, os.altsep): fn = fn[1:] - fn = os.path.join('\socket', fn) if os.sep == '/': fn = fn.replace(os.sep, os.altsep) else: @@ -160,25 +126,30 @@ self.test_files.append(fn) return fn - def run_servers(self, proto, servers, hdlrcls, testfunc): - for svrcls in servers: - addr = self.pickaddr(proto) - if verbose: - print "ADDR =", addr - print "CLASS =", svrcls - t = ServerThread(addr, svrcls, hdlrcls) - if verbose: print "server created" - t.start() - if verbose: print "server running" - for i in range(NREQ): - t.ready.wait(10*DELAY) - self.assert_(t.ready.isSet(), - "Server not ready within a reasonable time") - if verbose: print "test client", i - testfunc(proto, addr) - if verbose: print "waiting for server" - t.join() - if verbose: print "done" + def run_server(self, svrcls, hdlrbase, testfunc): + class MyHandler(hdlrbase): + def handle(self): + line = self.rfile.readline() + self.wfile.write(line) + + addr = self.pickaddr(svrcls.address_family) + if verbose: + print "ADDR =", addr + print "CLASS =", svrcls + t = ServerThread(addr, svrcls, MyHandler) + if verbose: print "server created" + t.start() + if verbose: print "server running" + t.ready.wait(10) + self.assert_(t.ready.isSet(), + "%s not ready within a reasonable time" % svrcls) + addr = t.addr + for i in range(NREQ): + if verbose: print "test client", i + testfunc(svrcls.address_family, addr) + if verbose: print "waiting for server" + t.join() + if verbose: print "done" def stream_examine(self, proto, addr): s = socket.socket(proto, socket.SOCK_STREAM) @@ -201,47 +172,74 @@ self.assertEquals(buf, TEST_STR) s.close() - def test_TCPServers(self): - # Test SocketServer.TCPServer - servers = [ForgivingTCPServer, SocketServer.ThreadingTCPServer] - if HAVE_FORKING: - servers.append(SocketServer.ForkingTCPServer) - self.run_servers(socket.AF_INET, servers, - MyStreamHandler, self.stream_examine) - - def test_UDPServers(self): - # Test SocketServer.UDPServer - servers = [SocketServer.UDPServer, - SocketServer.ThreadingUDPServer] - if HAVE_FORKING: - servers.append(SocketServer.ForkingUDPServer) - self.run_servers(socket.AF_INET, servers, MyDatagramHandler, - self.dgram_examine) - - def test_stream_servers(self): - # Test SocketServer's stream servers - if not HAVE_UNIX_SOCKETS: - return - servers = [SocketServer.UnixStreamServer, - SocketServer.ThreadingUnixStreamServer] + def test_TCPServer(self): + self.run_server(SocketServer.TCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_ThreadingTCPServer(self): + self.run_server(SocketServer.ThreadingTCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + if HAVE_FORKING: + def test_ThreadingTCPServer(self): + self.run_server(SocketServer.ForkingTCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + if HAVE_UNIX_SOCKETS: + def test_UnixStreamServer(self): + self.run_server(SocketServer.UnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_ThreadingUnixStreamServer(self): + self.run_server(SocketServer.ThreadingUnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + if HAVE_FORKING: - servers.append(ForkingUnixStreamServer) - self.run_servers(socket.AF_UNIX, servers, MyStreamHandler, - self.stream_examine) + def test_ForkingUnixStreamServer(self): + self.run_server(ForkingUnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_UDPServer(self): + self.run_server(SocketServer.UDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) + + def test_ThreadingUDPServer(self): + self.run_server(SocketServer.ThreadingUDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) + + if HAVE_FORKING: + def test_ForkingUDPServer(self): + self.run_server(SocketServer.ForkingUDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) # Alas, on Linux (at least) recvfrom() doesn't return a meaningful # client address so this cannot work: - # def test_dgram_servers(self): - # # Test SocketServer.UnixDatagramServer - # if not HAVE_UNIX_SOCKETS: - # return - # servers = [SocketServer.UnixDatagramServer, - # SocketServer.ThreadingUnixDatagramServer] + # if HAVE_UNIX_SOCKETS: + # def test_UnixDatagramServer(self): + # self.run_server(SocketServer.UnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) + # + # def test_ThreadingUnixDatagramServer(self): + # self.run_server(SocketServer.ThreadingUnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) + # # if HAVE_FORKING: - # servers.append(ForkingUnixDatagramServer) - # self.run_servers(socket.AF_UNIX, servers, MyDatagramHandler, - # self.dgram_examine) + # def test_ForkingUnixDatagramServer(self): + # self.run_server(SocketServer.ForkingUnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) def test_main(): @@ -253,3 +251,4 @@ if __name__ == "__main__": test_main() + signal.alarm(3) # Shutdown shouldn't take more than 3 seconds. From python-checkins at python.org Thu Feb 28 07:09:20 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Thu, 28 Feb 2008 07:09:20 +0100 (CET) Subject: [Python-checkins] r61100 - python/trunk/Lib/threading.py Message-ID: <20080228060920.3EE801E4002@bag.python.org> Author: jeffrey.yasskin Date: Thu Feb 28 07:09:19 2008 New Revision: 61100 Modified: python/trunk/Lib/threading.py Log: Thread.start() used sleep(0.000001) to make sure it didn't return before the new thread had started. At least on my MacBook Pro, that wound up sleeping for a full 10ms (probably 1 jiffy). By using an Event instead, we can be absolutely certain that the thread has started, and return more quickly (217us). Before: $ ./python.exe -m timeit -s 'from threading import Thread' 't = Thread(); t.start(); t.join()' 100 loops, best of 3: 10.3 msec per loop $ ./python.exe -m timeit -s 'from threading import Thread; t = Thread()' 't.isAlive()' 1000000 loops, best of 3: 0.47 usec per loop After: $ ./python.exe -m timeit -s 'from threading import Thread' 't = Thread(); t.start(); t.join()' 1000 loops, best of 3: 217 usec per loop $ ./python.exe -m timeit -s 'from threading import Thread; t = Thread()' 't.isAlive()' 1000000 loops, best of 3: 0.86 usec per loop To be fair, the 10ms isn't CPU time, and other threads including the spawned one get to run during it. There are also some slightly more complicated ways to get back the .4us in isAlive() if we want. Modified: python/trunk/Lib/threading.py ============================================================================== --- python/trunk/Lib/threading.py (original) +++ python/trunk/Lib/threading.py Thu Feb 28 07:09:19 2008 @@ -404,7 +404,7 @@ self.__args = args self.__kwargs = kwargs self.__daemonic = self._set_daemon() - self.__started = False + self.__started = Event() self.__stopped = False self.__block = Condition(Lock()) self.__initialized = True @@ -419,7 +419,7 @@ def __repr__(self): assert self.__initialized, "Thread.__init__() was not called" status = "initial" - if self.__started: + if self.__started.isSet(): status = "started" if self.__stopped: status = "stopped" @@ -430,7 +430,7 @@ def start(self): if not self.__initialized: raise RuntimeError("thread.__init__() not called") - if self.__started: + if self.__started.isSet(): raise RuntimeError("thread already started") if __debug__: self._note("%s.start(): starting thread", self) @@ -438,8 +438,7 @@ _limbo[self] = self _active_limbo_lock.release() _start_new_thread(self.__bootstrap, ()) - self.__started = True - _sleep(0.000001) # 1 usec, to let the thread run (Solaris hack) + self.__started.wait() def run(self): try: @@ -472,7 +471,7 @@ def __bootstrap_inner(self): try: - self.__started = True + self.__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self del _limbo[self] @@ -581,7 +580,7 @@ def join(self, timeout=None): if not self.__initialized: raise RuntimeError("Thread.__init__() not called") - if not self.__started: + if not self.__started.isSet(): raise RuntimeError("cannot join thread before it is started") if self is currentThread(): raise RuntimeError("cannot join current thread") @@ -621,7 +620,7 @@ def isAlive(self): assert self.__initialized, "Thread.__init__() not called" - return self.__started and not self.__stopped + return self.__started.isSet() and not self.__stopped def isDaemon(self): assert self.__initialized, "Thread.__init__() not called" @@ -630,7 +629,7 @@ def setDaemon(self, daemonic): if not self.__initialized: raise RuntimeError("Thread.__init__() not called") - if self.__started: + if self.__started.isSet(): raise RuntimeError("cannot set daemon status of active thread"); self.__daemonic = daemonic @@ -672,7 +671,7 @@ def __init__(self): Thread.__init__(self, name="MainThread") - self._Thread__started = True + self._Thread__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self _active_limbo_lock.release() @@ -718,7 +717,7 @@ # instance is immortal, that's bad, so release this resource. del self._Thread__block - self._Thread__started = True + self._Thread__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self _active_limbo_lock.release() From python-checkins at python.org Thu Feb 28 10:23:48 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 28 Feb 2008 10:23:48 +0100 (CET) Subject: [Python-checkins] r61101 - python/trunk/Doc/library/itertools.rst Message-ID: <20080228092348.657281E4010@bag.python.org> Author: raymond.hettinger Date: Thu Feb 28 10:23:48 2008 New Revision: 61101 Modified: python/trunk/Doc/library/itertools.rst Log: Add repeat keyword argument to itertools.product(). Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Thu Feb 28 10:23:48 2008 @@ -340,7 +340,7 @@ .. versionadded:: 2.6 -.. function:: product(*iterables) +.. function:: product(*iterables[, repeat]) Cartesian product of input iterables. @@ -353,11 +353,15 @@ so that if the inputs iterables are sorted, the product tuples are emitted in sorted order. + To compute the product of an iterable with itself, specify the number of + repetitions with the optional *repeat* keyword argument. For example, + ``product(A, repeat=4)`` means the same as ``product(A, A, A, A)``. + Equivalent to the following except that the actual implementation does not build-up intermediate results in memory:: - def product(*args): - pools = map(tuple, args) + def product(*args, **kwds): + pools = map(tuple, args) * kwds.get('repeat', 1) if pools: result = [[]] for pool in pools: From python-checkins at python.org Thu Feb 28 12:18:50 2008 From: python-checkins at python.org (christian.heimes) Date: Thu, 28 Feb 2008 12:18:50 +0100 (CET) Subject: [Python-checkins] r61102 - python/trunk/Modules/itertoolsmodule.c Message-ID: <20080228111850.061BA1E4010@bag.python.org> Author: christian.heimes Date: Thu Feb 28 12:18:49 2008 New Revision: 61102 Modified: python/trunk/Modules/itertoolsmodule.c Log: The empty tuple is usually a singleton with a much higher refcnt than 1 Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Thu Feb 28 12:18:49 2008 @@ -2111,8 +2111,11 @@ } Py_DECREF(old_result); } - /* Now, we've got the only copy so we can update it in-place */ - assert (Py_REFCNT(result) == 1); + /* Now, we've got the only copy so we can update it in-place + * CPython's empty tuple is a singleton and cached in + * PyTuple's freelist. + */ + assert(r == 0 || Py_REFCNT(result) == 1); /* Scan indices right-to-left until finding one that is not at its maximum (i + n - r). */ From python-checkins at python.org Thu Feb 28 15:03:04 2008 From: python-checkins at python.org (andrew.kuchling) Date: Thu, 28 Feb 2008 15:03:04 +0100 (CET) Subject: [Python-checkins] r61105 - python/trunk/Lib/SimpleHTTPServer.py Message-ID: <20080228140304.3E1171E4010@bag.python.org> Author: andrew.kuchling Date: Thu Feb 28 15:03:03 2008 New Revision: 61105 Modified: python/trunk/Lib/SimpleHTTPServer.py Log: #2169: make generated HTML more valid Modified: python/trunk/Lib/SimpleHTTPServer.py ============================================================================== --- python/trunk/Lib/SimpleHTTPServer.py (original) +++ python/trunk/Lib/SimpleHTTPServer.py Thu Feb 28 15:03:03 2008 @@ -112,8 +112,9 @@ list.sort(key=lambda a: a.lower()) f = StringIO() displaypath = cgi.escape(urllib.unquote(self.path)) - f.write("Directory listing for %s\n" % displaypath) - f.write("

    Directory listing for %s

    \n" % displaypath) + f.write('') + f.write("\nDirectory listing for %s\n" % displaypath) + f.write("\n

    Directory listing for %s

    \n" % displaypath) f.write("
    \n
      \n") for name in list: fullname = os.path.join(path, name) @@ -127,7 +128,7 @@ # Note: a link to a directory displays with @ and links with / f.write('
    • %s\n' % (urllib.quote(linkname), cgi.escape(displayname))) - f.write("
    \n
    \n") + f.write("\n
    \n\n\n") length = f.tell() f.seek(0) self.send_response(200) From buildbot at python.org Thu Feb 28 15:31:11 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 14:31:11 +0000 Subject: [Python-checkins] buildbot failure in amd64 gentoo trunk Message-ID: <20080228143111.C512C1E4010@bag.python.org> The Buildbot has detected a new failure of amd64 gentoo trunk. Full details are available at: http://www.python.org/dev/buildbot/all/amd64%20gentoo%20trunk/builds/276 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-amd64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/threading.py", line 490, in __bootstrap_inner self.run() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_socketserver.py", line 81, in run svr.serve_a_few() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/test/test_socketserver.py", line 51, in serve_a_few self.handle_request() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/home/buildbot/slave/py-build/trunk.norwitz-amd64/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=23486 and list=[23488] 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From buildbot at python.org Thu Feb 28 15:52:17 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 14:52:17 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080228145217.90C921E402B@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/962 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Thu Feb 28 16:39:49 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 15:39:49 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080228153949.EEC141E4011@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2613 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/threading.py", line 490, in __bootstrap_inner self.run() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 81, in run svr.serve_a_few() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 51, in serve_a_few self.handle_request() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 229, in handle_request self.handle_error(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 470, in process_request self.collect_children() File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/SocketServer.py", line 459, in collect_children self.active_children)) ValueError: list.remove(x): x not in list. x=461479 and list=[461409] 3 tests failed: test_asynchat test_smtplib test_socketserver ====================================================================== FAIL: test_ForkingUnixStreamServer (test.test_socketserver.SocketServerTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 206, in test_ForkingUnixStreamServer self.stream_examine) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 149, in run_server testfunc(svrcls.address_family, addr) File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socketserver.py", line 162, in stream_examine self.assertEquals(buf, TEST_STR) AssertionError: '' != 'hello world\n' sincerely, -The Buildbot From buildbot at python.org Thu Feb 28 18:08:08 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 17:08:08 +0000 Subject: [Python-checkins] buildbot failure in sparc Debian trunk Message-ID: <20080228170808.30CD91E4011@bag.python.org> The Buildbot has detected a new failure of sparc Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/sparc%20Debian%20trunk/builds/133 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-sparc Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling BUILD FAILED: failed test Excerpt from the test logfile: 1 test failed: test_socketserver make: *** [buildbottest] Error 1 sincerely, -The Buildbot From python-checkins at python.org Thu Feb 28 19:03:16 2008 From: python-checkins at python.org (jeffrey.yasskin) Date: Thu, 28 Feb 2008 19:03:16 +0100 (CET) Subject: [Python-checkins] r61106 - in python/trunk/Lib: SocketServer.py test/test_socketserver.py Message-ID: <20080228180316.3AF6E1E400B@bag.python.org> Author: jeffrey.yasskin Date: Thu Feb 28 19:03:15 2008 New Revision: 61106 Modified: python/trunk/Lib/SocketServer.py python/trunk/Lib/test/test_socketserver.py Log: Prevent SocketServer.ForkingMixIn from waiting on child processes that it didn't create, in most cases. When there are max_children handlers running, it will still wait for any child process, not just handler processes. Modified: python/trunk/Lib/SocketServer.py ============================================================================== --- python/trunk/Lib/SocketServer.py (original) +++ python/trunk/Lib/SocketServer.py Thu Feb 28 19:03:15 2008 @@ -440,18 +440,30 @@ def collect_children(self): """Internal routine to wait for children that have exited.""" - while self.active_children: - if len(self.active_children) < self.max_children: - options = os.WNOHANG - else: - # If the maximum number of children are already - # running, block while waiting for a child to exit - options = 0 + if self.active_children is None: return + while len(self.active_children) >= self.max_children: + # XXX: This will wait for any child process, not just ones + # spawned by this library. This could confuse other + # libraries that expect to be able to wait for their own + # children. try: - pid, status = os.waitpid(0, options) + pid, status = os.waitpid(0, options=0) except os.error: pid = None - if not pid: break + if pid not in self.active_children: continue + self.active_children.remove(pid) + + # XXX: This loop runs more system calls than it ought + # to. There should be a way to put the active_children into a + # process group and then use os.waitpid(-pgid) to wait for any + # of that set, but I couldn't find a way to allocate pgids + # that couldn't collide. + for child in self.active_children: + try: + pid, status = os.waitpid(child, os.WNOHANG) + except os.error: + pid = None + if not pid: continue try: self.active_children.remove(pid) except ValueError, e: Modified: python/trunk/Lib/test/test_socketserver.py ============================================================================== --- python/trunk/Lib/test/test_socketserver.py (original) +++ python/trunk/Lib/test/test_socketserver.py Thu Feb 28 19:03:15 2008 @@ -2,6 +2,7 @@ Test suite for SocketServer.py. """ +import contextlib import errno import imp import os @@ -82,6 +83,18 @@ if verbose: print "thread: done" + at contextlib.contextmanager +def simple_subprocess(testcase): + pid = os.fork() + if pid == 0: + # Don't throw an exception; it would be caught by the test harness. + os._exit(72) + yield None + pid2, status = os.waitpid(pid, 0) + testcase.assertEquals(pid2, pid) + testcase.assertEquals(72 << 8, status) + + class SocketServerTest(unittest.TestCase): """Test all socket servers.""" @@ -183,10 +196,11 @@ self.stream_examine) if HAVE_FORKING: - def test_ThreadingTCPServer(self): - self.run_server(SocketServer.ForkingTCPServer, - SocketServer.StreamRequestHandler, - self.stream_examine) + def test_ForkingTCPServer(self): + with simple_subprocess(self): + self.run_server(SocketServer.ForkingTCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) if HAVE_UNIX_SOCKETS: def test_UnixStreamServer(self): @@ -201,9 +215,10 @@ if HAVE_FORKING: def test_ForkingUnixStreamServer(self): - self.run_server(ForkingUnixStreamServer, - SocketServer.StreamRequestHandler, - self.stream_examine) + with simple_subprocess(self): + self.run_server(ForkingUnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) def test_UDPServer(self): self.run_server(SocketServer.UDPServer, @@ -217,9 +232,10 @@ if HAVE_FORKING: def test_ForkingUDPServer(self): - self.run_server(SocketServer.ForkingUDPServer, - SocketServer.DatagramRequestHandler, - self.dgram_examine) + with simple_subprocess(self): + self.run_server(SocketServer.ForkingUDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) # Alas, on Linux (at least) recvfrom() doesn't return a meaningful # client address so this cannot work: From python-checkins at python.org Thu Feb 28 20:41:25 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 28 Feb 2008 20:41:25 +0100 (CET) Subject: [Python-checkins] r61107 - python/trunk/Doc/library/itertools.rst Message-ID: <20080228194125.1B64B1E400B@bag.python.org> Author: raymond.hettinger Date: Thu Feb 28 20:41:24 2008 New Revision: 61107 Modified: python/trunk/Doc/library/itertools.rst Log: Document impending updates to itertools. Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Thu Feb 28 20:41:24 2008 @@ -76,17 +76,30 @@ yield element +.. function:: itertools.chain.from_iterable(iterable) + + Alternate constructor for :func:`chain`. Gets chained inputs from a + single iterable argument that is evaluated lazily. Equivalent to:: + + @classmethod + def from_iterable(iterables): + for it in iterables: + for element in it: + yield element + + .. versionadded:: 2.6 + .. function:: combinations(iterable, r) Return successive *r* length combinations of elements in the *iterable*. - Combinations are emitted in a lexicographic sort order. So, if the + Combinations are emitted in lexicographic sort order. So, if the input *iterable* is sorted, the combination tuples will be produced in sorted order. Elements are treated as unique based on their position, not on their value. So if the input elements are unique, there will be no repeat - values within a single combination. + values in each combination. Each result tuple is ordered to match the input order. So, every combination is a subsequence of the input *iterable*. @@ -340,6 +353,26 @@ .. versionadded:: 2.6 +.. function:: permutations(iterable[, r]) + + Return successive *r* length permutations of elements in the *iterable*. + + If *r* is not specified or is ``None``, then *r* defaults to the length + of the *iterable* and all possible full-length permutations + are generated. + + Permutations are emitted in lexicographic sort order. So, if the + input *iterable* is sorted, the permutation tuples will be produced + in sorted order. + + Elements are treated as unique based on their position, not on their + value. So if the input elements are unique, there will be no repeat + values in each permutation. + + Example: ``permutations(range(3),2) --> (1,2) (1,3) (2,1) (2,3) (3,1) (3,2)`` + + .. versionadded:: 2.6 + .. function:: product(*iterables[, repeat]) Cartesian product of input iterables. @@ -560,13 +593,13 @@ def ncycles(seq, n): "Returns the sequence elements n times" - return chain(*repeat(seq, n)) + return chain.from_iterable(repeat(seq, n)) def dotproduct(vec1, vec2): return sum(imap(operator.mul, vec1, vec2)) def flatten(listOfLists): - return list(chain(*listOfLists)) + return list(chain.from_iterable(listOfLists)) def repeatfunc(func, times=None, *args): """Repeat calls to func with specified arguments. @@ -575,8 +608,7 @@ """ if times is None: return starmap(func, repeat(args)) - else: - return starmap(func, repeat(args, times)) + return starmap(func, repeat(args, times)) def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." @@ -593,7 +625,7 @@ def roundrobin(*iterables): "roundrobin('abc', 'd', 'ef') --> 'a', 'd', 'e', 'b', 'f', 'c'" - # Recipe contributed by George Sakkis + # Recipe credited to George Sakkis pending = len(iterables) nexts = cycle(iter(it).next for it in iterables) while pending: @@ -605,8 +637,9 @@ nexts = cycle(islice(nexts, pending)) def powerset(iterable): - "powerset('ab') --> set([]), set(['b']), set(['a']), set(['a', 'b'])" - skip = object() - for t in product(*izip(repeat(skip), iterable)): - yield set(e for e in t if e is not skip) + "powerset('ab') --> set([]), set(['a']), set(['b']), set(['a', 'b'])" + # Recipe credited to Eric Raymond + pairs = [(2**i, x) for i, x in enumerate(iterable)] + for n in xrange(2**len(pairs)): + yield set(x for m, x in pairs if m&n) From python-checkins at python.org Thu Feb 28 20:44:22 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 28 Feb 2008 20:44:22 +0100 (CET) Subject: [Python-checkins] r61108 - python/trunk/Tools/msi/uuids.py Message-ID: <20080228194422.888B91E4011@bag.python.org> Author: martin.v.loewis Date: Thu Feb 28 20:44:22 2008 New Revision: 61108 Modified: python/trunk/Tools/msi/uuids.py Log: Add 2.6aN uuids. Modified: python/trunk/Tools/msi/uuids.py ============================================================================== --- python/trunk/Tools/msi/uuids.py (original) +++ python/trunk/Tools/msi/uuids.py Thu Feb 28 20:44:22 2008 @@ -37,4 +37,8 @@ '2.5.1150':'{31800004-6386-4999-a519-518f2d78d8f0}', # 2.5.1 '2.5.2150':'{6304a7da-1132-4e91-a343-a296269eab8a}', # 2.5.2c1 '2.5.2150':'{6b976adf-8ae8-434e-b282-a06c7f624d2f}', # 2.5.2 + '2.6.101': '{0ba82e1b-52fd-4e03-8610-a6c76238e8a8}', # 2.6a1 + '2.6.102': '{3b27e16c-56db-4570-a2d3-e9a26180c60b}', # 2.6a2 + '2.6.103': '{cd06a9c5-bde5-4bd7-9874-48933997122a}', # 2.6a3 + '2.6.104': '{dc6ed634-474a-4a50-a547-8de4b7491e53}', # 2.6a4 } From python-checkins at python.org Thu Feb 28 20:57:35 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 28 Feb 2008 20:57:35 +0100 (CET) Subject: [Python-checkins] r61109 - python/trunk/Tools/msi/msi.py Message-ID: <20080228195735.167091E401B@bag.python.org> Author: martin.v.loewis Date: Thu Feb 28 20:57:34 2008 New Revision: 61109 Modified: python/trunk/Tools/msi/msi.py Log: Bundle msvcr90.dll as a "private assembly". Modified: python/trunk/Tools/msi/msi.py ============================================================================== --- python/trunk/Tools/msi/msi.py (original) +++ python/trunk/Tools/msi/msi.py Thu Feb 28 20:57:34 2008 @@ -844,21 +844,19 @@ prod_dir = _winreg.QueryValueEx(k, "ProductDir")[0] _winreg.CloseKey(k) - # Copy msvcr90* - dir = os.path.join(prod_dir, r'VC\redist\x86\Microsoft.VC90.CRT') - files = glob.glob1(dir, "*CRT*.dll") + glob.glob1(dir, "*VCR*.dll") - for file in files: - shutil.copy(os.path.join(dir, file), '.') - - dir = os.path.join(prod_dir, r'VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT') - files = glob.glob1(dir, "*CRT*.dll") + glob.glob1(dir, "*VCR*.dll") - for file in files: - shutil.copy(os.path.join(dir, file), '.') - - # Find the version/language of msvcr90.dll + result = [] installer = msilib.MakeInstaller() - return installer.FileVersion("msvcr90.dll", 0), \ - installer.FileVersion("msvcr90.dll", 1) + dir = os.path.join(prod_dir, r'VC\redist\x86\Microsoft.VC90.CRT') + # omit msvcm90 and msvcp90, as they aren't really needed + files = ["Microsoft.VC90.CRT.manifest", "msvcr90.dll"] + for f in files: + path = os.path.join(dir, f) + kw = {'src':path} + if f.endswith('.dll'): + kw['version'] = installer.FileVersion(path, 0) + kw['language'] = installer.FileVersion(path, 1) + result.append((f, kw)) + return result class PyDirectory(Directory): """By default, all components in the Python installer @@ -887,7 +885,10 @@ root.add_file("%s/pythonw.exe" % PCBUILD) # msidbComponentAttributesSharedDllRefCount = 8, see "Component Table" - dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".") + #dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".") + #install python30.dll into root dir for now + dlldir = root + pydll = "python%s%s.dll" % (major, minor) pydllsrc = os.path.join(srcdir, PCBUILD, pydll) dlldir.start_component("DLLDIR", flags = 8, keyfile = pydll, uuid = pythondll_uuid) @@ -900,17 +901,14 @@ dlldir.add_file("%s/python%s%s.dll" % (PCBUILD, major, minor), version=pyversion, language=installer.FileVersion(pydllsrc, 1)) + DLLs = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs") # XXX determine dependencies if MSVCR == "90": - # XXX don't package the CRT for the moment; - # this should probably use the merge module in the long run. - pass - #version, lang = extract_msvcr90() - #dlldir.start_component("msvcr90", flags=8, keyfile="msvcr90.dll", - # uuid=msvcr90_uuid) - #dlldir.add_file("msvcr90.dll", src=os.path.abspath("msvcr90.dll"), - # version=version, language=lang) - #tmpfiles.append("msvcr90.dll") + root.start_component("msvcr90") + for file, kw in extract_msvcr90(): + root.add_file(file, **kw) + if file.endswith("manifest"): + DLLs.add_file(file, **kw) else: version, lang = extract_msvcr71() dlldir.start_component("msvcr71", flags=8, keyfile="msvcr71.dll", @@ -1011,7 +1009,7 @@ pydirs.append((lib, f)) # Add DLLs default_feature.set_current() - lib = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs") + lib = DLLs lib.add_file("py.ico", src=srcdir+"/PC/py.ico") lib.add_file("pyc.ico", src=srcdir+"/PC/pyc.ico") dlls = [] From python-checkins at python.org Thu Feb 28 21:09:33 2008 From: python-checkins at python.org (christian.heimes) Date: Thu, 28 Feb 2008 21:09:33 +0100 (CET) Subject: [Python-checkins] r61111 - in python/branches/trunk-math: Demo/tkinter/guido/ShellWindow.py Doc/Makefile Doc/README.txt Doc/c-api/long.rst Doc/c-api/objbuffer.rst Doc/c-api/tuple.rst Doc/c-api/typeobj.rst Doc/conf.py Doc/distutils/builtdist.rst Doc/distutils/packageindex.rst Doc/distutils/setupscript.rst Doc/howto/advocacy.rst Doc/howto/doanddont.rst Doc/howto/functional.rst Doc/howto/regex.rst Doc/howto/sockets.rst Doc/library/basehttpserver.rst Doc/library/codecs.rst Doc/library/collections.rst Doc/library/configparser.rst Doc/library/decimal.rst Doc/library/difflib.rst Doc/library/dis.rst Doc/library/inspect.rst Doc/library/itertools.rst Doc/library/logging.rst Doc/library/mailbox.rst Doc/library/modulefinder.rst Doc/library/msilib.rst Doc/library/operator.rst Doc/library/optparse.rst Doc/library/pickle.rst Doc/library/platform.rst Doc/library/profile.rst Doc/library/random.rst Doc/library/re.rst Doc/library/signal.rst Doc/library/simplexmlrpcserver.rst Doc/library/socket.rst Doc/library/tokenize.rst Doc/library/trace.rst Doc/library/userdict.rst Doc/library/weakref.rst Doc/library/xml.dom.rst Doc/library/xml.etree.elementtree.rst Doc/library/xmlrpclib.rst Doc/reference/compound_stmts.rst Doc/reference/expressions.rst Doc/reference/index.rst Doc/tutorial/interpreter.rst Doc/tutorial/stdlib2.rst Doc/using/cmdline.rst Doc/using/unix.rst Doc/using/windows.rst Doc/whatsnew/2.6.rst Grammar/Grammar Include/Python-ast.h Include/abstract.h Include/formatter_string.h Include/formatter_unicode.h Include/graminit.h Include/longintrepr.h Include/object.h Lib/BaseHTTPServer.py Lib/ConfigParser.py Lib/SimpleHTTPServer.py Lib/UserDict.py Lib/abc.py Lib/bsddb/test/test_associate.py Lib/bsddb/test/test_basics.py Lib/bsddb/test/test_compare.py Lib/bsddb/test/test_compat.py Lib/bsddb/test/test_cursor_pget_bug.py Lib/bsddb/test/test_dbobj.py Lib/bsddb/test/test_dbshelve.py Lib/bsddb/test/test_dbtables.py Lib/bsddb/test/test_env_close.py Lib/bsddb/test/test_get_none.py Lib/bsddb/test/test_join.py Lib/bsddb/test/test_lock.py Lib/bsddb/test/test_misc.py Lib/bsddb/test/test_pickle.py Lib/bsddb/test/test_queue.py Lib/bsddb/test/test_recno.py Lib/bsddb/test/test_sequence.py Lib/bsddb/test/test_thread.py Lib/compiler/ast.py Lib/compiler/transformer.py Lib/copy_reg.py Lib/ctypes/__init__.py Lib/ctypes/macholib/dyld.py Lib/ctypes/test/__init__.py Lib/ctypes/test/test_cfuncs.py Lib/ctypes/test/test_checkretval.py Lib/ctypes/test/test_find.py Lib/ctypes/test/test_libc.py Lib/ctypes/test/test_loading.py Lib/ctypes/test/test_macholib.py Lib/ctypes/test/test_numbers.py Lib/ctypes/test/test_random_things.py Lib/curses/__init__.py Lib/curses/wrapper.py Lib/decimal.py Lib/distutils/archive_util.py Lib/distutils/bcppcompiler.py Lib/distutils/ccompiler.py Lib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_msi.py Lib/distutils/command/bdist_rpm.py Lib/distutils/command/build_ext.py Lib/distutils/command/build_py.py Lib/distutils/command/build_scripts.py Lib/distutils/command/install.py Lib/distutils/command/install_headers.py Lib/distutils/command/install_lib.py Lib/distutils/command/register.py Lib/distutils/command/sdist.py Lib/distutils/command/upload.py Lib/distutils/core.py Lib/distutils/dir_util.py Lib/distutils/dist.py Lib/distutils/fancy_getopt.py Lib/distutils/filelist.py Lib/distutils/msvccompiler.py Lib/distutils/sysconfig.py Lib/distutils/tests/test_dist.py Lib/distutils/tests/test_sysconfig.py Lib/distutils/text_file.py Lib/distutils/unixccompiler.py Lib/distutils/util.py Lib/email/base64mime.py Lib/email/utils.py Lib/hotshot/log.py Lib/hotshot/stones.py Lib/httplib.py Lib/idlelib/MultiCall.py Lib/idlelib/RemoteDebugger.py Lib/idlelib/TreeWidget.py Lib/idlelib/UndoDelegator.py Lib/idlelib/configDialog.py Lib/idlelib/keybindingDialog.py Lib/idlelib/run.py Lib/imaplib.py Lib/inspect.py Lib/lib-tk/tkSimpleDialog.py Lib/logging/handlers.py Lib/ntpath.py Lib/plat-mac/MiniAEFrame.py Lib/plat-mac/aepack.py Lib/plat-mac/bgenlocations.py Lib/plat-mac/macostools.py Lib/plat-riscos/rourl2path.py Lib/popen2.py Lib/pydoc.py Lib/runpy.py Lib/smtplib.py Lib/socket.py Lib/sqlite3/test/hooks.py Lib/ssl.py Lib/string.py Lib/symbol.py Lib/test/fork_wait.py Lib/test/list_tests.py Lib/test/output/test_logging Lib/test/seq_tests.py Lib/test/string_tests.py Lib/test/test_MimeWriter.py Lib/test/test_SimpleHTTPServer.py Lib/test/test___all__.py Lib/test/test_abc.py Lib/test/test_applesingle.py Lib/test/test_array.py Lib/test/test_ast.py Lib/test/test_bisect.py Lib/test/test_bsddb185.py Lib/test/test_bsddb3.py Lib/test/test_builtin.py Lib/test/test_cfgparser.py Lib/test/test_class.py Lib/test/test_cmd.py Lib/test/test_coercion.py Lib/test/test_compare.py Lib/test/test_compiler.py Lib/test/test_copy.py Lib/test/test_cpickle.py Lib/test/test_curses.py Lib/test/test_datetime.py Lib/test/test_dbm.py Lib/test/test_decorators.py Lib/test/test_deque.py Lib/test/test_descrtut.py Lib/test/test_dict.py Lib/test/test_dis.py Lib/test/test_doctest.py Lib/test/test_dummy_threading.py Lib/test/test_email.py Lib/test/test_email_renamed.py Lib/test/test_eof.py Lib/test/test_extcall.py Lib/test/test_file.py Lib/test/test_fileinput.py Lib/test/test_format.py Lib/test/test_fractions.py Lib/test/test_ftplib.py Lib/test/test_future_builtins.py Lib/test/test_getargs2.py Lib/test/test_grammar.py Lib/test/test_gzip.py Lib/test/test_heapq.py Lib/test/test_htmlparser.py Lib/test/test_httplib.py Lib/test/test_imgfile.py Lib/test/test_imp.py Lib/test/test_index.py Lib/test/test_inspect.py Lib/test/test_itertools.py Lib/test/test_linuxaudiodev.py Lib/test/test_list.py Lib/test/test_logging.py Lib/test/test_minidom.py Lib/test/test_mmap.py Lib/test/test_module.py Lib/test/test_modulefinder.py Lib/test/test_multibytecodec_support.py Lib/test/test_mutex.py Lib/test/test_operator.py Lib/test/test_optparse.py Lib/test/test_ossaudiodev.py Lib/test/test_parser.py Lib/test/test_pickle.py Lib/test/test_pkg.py Lib/test/test_plistlib.py Lib/test/test_poll.py Lib/test/test_posix.py Lib/test/test_pyclbr.py Lib/test/test_quopri.py Lib/test/test_resource.py Lib/test/test_rfc822.py Lib/test/test_scope.py Lib/test/test_scriptpackages.py Lib/test/test_sgmllib.py Lib/test/test_shlex.py Lib/test/test_signal.py Lib/test/test_site.py Lib/test/test_smtplib.py Lib/test/test_socketserver.py Lib/test/test_sqlite.py Lib/test/test_str.py Lib/test/test_strftime.py Lib/test/test_string.py Lib/test/test_sunaudiodev.py Lib/test/test_support.py Lib/test/test_threading.py Lib/test/test_tuple.py Lib/test/test_types.py Lib/test/test_unicode.py Lib/test/test_unpack.py Lib/test/test_urllib.py Lib/test/test_urllib2.py Lib/test/test_urllib2_localnet.py Lib/test/test_userdict.py Lib/test/test_userlist.py Lib/test/test_userstring.py Lib/test/test_uu.py Lib/test/test_whichdb.py Lib/test/test_xml_etree.py Lib/test/test_xml_etree_c.py Lib/test/test_xmlrpc.py Lib/test/test_xpickle.py Lib/test/test_zipfile64.py Lib/threading.py Lib/token.py Lib/trace.py Lib/xml/dom/minidom.py Lib/xmlrpclib.py Mac/Demo/PICTbrowse/ICONbrowse.py Mac/Demo/PICTbrowse/PICTbrowse.py Mac/Demo/PICTbrowse/PICTbrowse2.py Mac/Demo/PICTbrowse/cicnbrowse.py Mac/Demo/PICTbrowse/oldPICTbrowse.py Mac/Demo/example1/dnslookup-1.py Mac/Demo/example2/dnslookup-2.py Mac/Demo/imgbrowse/imgbrowse.py Mac/Demo/imgbrowse/mac_image.py Mac/Demo/sound/morse.py Mac/Modules/ae/aescan.py Mac/Modules/ah/ahscan.py Mac/Modules/app/appscan.py Mac/Modules/carbonevt/CarbonEvtscan.py Mac/Modules/cf/cfscan.py Mac/Modules/cg/cgscan.py Mac/Modules/cm/cmscan.py Mac/Modules/ctl/ctlscan.py Mac/Modules/dlg/dlgscan.py Mac/Modules/drag/dragscan.py Mac/Modules/evt/evtscan.py Mac/Modules/file/filescan.py Mac/Modules/fm/fmscan.py Mac/Modules/folder/folderscan.py Mac/Modules/help/helpscan.py Mac/Modules/ibcarbon/IBCarbonscan.py Mac/Modules/icn/icnscan.py Mac/Modules/launch/launchscan.py Mac/Modules/list/listscan.py Mac/Modules/menu/menuscan.py Mac/Modules/mlte/mltescan.py Mac/Modules/osa/osascan.py Mac/Modules/qd/qdscan.py Mac/Modules/qdoffs/qdoffsscan.py Mac/Modules/qt/qtscan.py Mac/Modules/res/resscan.py Mac/Modules/scrap/scrapscan.py Mac/Modules/snd/sndscan.py Mac/Modules/te/tescan.py Mac/Modules/win/winscan.py Makefile.pre.in Misc/ACKS Misc/BeOS-setup.py Misc/HISTORY Misc/NEWS Misc/cheatsheet Modules/_ctypes/_ctypes_test.c Modules/_ctypes/libffi/configure Modules/_ctypes/libffi/configure.ac Modules/_ctypes/libffi/fficonfig.h.in Modules/_struct.c Modules/_testcapimodule.c Modules/cStringIO.c Modules/datetimemodule.c Modules/dbmmodule.c Modules/future_builtins.c Modules/gdbmmodule.c Modules/itertoolsmodule.c Modules/mmapmodule.c Modules/operator.c Modules/parsermodule.c Modules/signalmodule.c Modules/syslogmodule.c Objects/abstract.c Objects/cellobject.c Objects/dictobject.c Objects/fileobject.c Objects/floatobject.c Objects/intobject.c Objects/listobject.c Objects/longobject.c Objects/stringlib/formatter.h Objects/stringlib/string_format.h Objects/stringlib/stringdefs.h Objects/stringlib/unicodedefs.h Objects/stringobject.c Objects/typeobject.c Objects/unicodeobject.c PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/build_tkinter.py PC/VS8.0/pythoncore.vcproj PC/config.c PCbuild/build_tkinter.py PCbuild/pythoncore.vcproj Parser/Python.asdl Parser/asdl_c.py Parser/parser.h Parser/spark.py Python/Python-ast.c Python/ast.c Python/bltinmodule.c Python/compile.c Python/formatter_string.c Python/formatter_unicode.c Python/getargs.c Python/graminit.c Python/import.c Python/mystrtoul.c Python/peephole.c Python/pystrtod.c Python/pythonrun.c Python/symtable.c Tools/compiler/ast.txt Tools/compiler/astgen.py Tools/compiler/dumppyc.py Tools/faqwiz/faqw.py Tools/modulator/Tkextra.py Tools/pybench/systimes.py Tools/pynche/ChipViewer.py Tools/pynche/TypeinViewer.py Tools/scripts/logmerge.py Tools/scripts/nm2def.py Tools/scripts/pindent.py Tools/scripts/pysource.py Tools/scripts/reindent.py Tools/scripts/xxci.py Tools/ssl/get-remote-certificate.py Tools/unicode/gencodec.py Tools/webchecker/wcgui.py Tools/webchecker/wsgui.py setup.py Message-ID: <20080228200933.630971E401D@bag.python.org> Author: christian.heimes Date: Thu Feb 28 21:09:17 2008 New Revision: 61111 Added: python/branches/trunk-math/Include/formatter_string.h - copied unchanged from r61105, python/trunk/Include/formatter_string.h python/branches/trunk-math/Include/formatter_unicode.h - copied unchanged from r61105, python/trunk/Include/formatter_unicode.h python/branches/trunk-math/Lib/test/test_SimpleHTTPServer.py - copied unchanged from r61105, python/trunk/Lib/test/test_SimpleHTTPServer.py python/branches/trunk-math/Lib/test/test_future_builtins.py - copied unchanged from r61105, python/trunk/Lib/test/test_future_builtins.py python/branches/trunk-math/Lib/test/test_mutex.py - copied unchanged from r61105, python/trunk/Lib/test/test_mutex.py python/branches/trunk-math/Modules/future_builtins.c - copied unchanged from r61105, python/trunk/Modules/future_builtins.c python/branches/trunk-math/Objects/stringlib/formatter.h - copied unchanged from r61105, python/trunk/Objects/stringlib/formatter.h python/branches/trunk-math/Objects/stringlib/string_format.h - copied unchanged from r61105, python/trunk/Objects/stringlib/string_format.h python/branches/trunk-math/Objects/stringlib/stringdefs.h - copied unchanged from r61105, python/trunk/Objects/stringlib/stringdefs.h python/branches/trunk-math/Objects/stringlib/unicodedefs.h - copied unchanged from r61105, python/trunk/Objects/stringlib/unicodedefs.h python/branches/trunk-math/Python/formatter_string.c - copied unchanged from r61105, python/trunk/Python/formatter_string.c python/branches/trunk-math/Python/formatter_unicode.c - copied unchanged from r61105, python/trunk/Python/formatter_unicode.c Removed: python/branches/trunk-math/Lib/test/output/test_logging Modified: python/branches/trunk-math/ (props changed) python/branches/trunk-math/Demo/tkinter/guido/ShellWindow.py python/branches/trunk-math/Doc/Makefile python/branches/trunk-math/Doc/README.txt python/branches/trunk-math/Doc/c-api/long.rst python/branches/trunk-math/Doc/c-api/objbuffer.rst python/branches/trunk-math/Doc/c-api/tuple.rst python/branches/trunk-math/Doc/c-api/typeobj.rst python/branches/trunk-math/Doc/conf.py python/branches/trunk-math/Doc/distutils/builtdist.rst python/branches/trunk-math/Doc/distutils/packageindex.rst python/branches/trunk-math/Doc/distutils/setupscript.rst python/branches/trunk-math/Doc/howto/advocacy.rst python/branches/trunk-math/Doc/howto/doanddont.rst python/branches/trunk-math/Doc/howto/functional.rst python/branches/trunk-math/Doc/howto/regex.rst python/branches/trunk-math/Doc/howto/sockets.rst python/branches/trunk-math/Doc/library/basehttpserver.rst python/branches/trunk-math/Doc/library/codecs.rst python/branches/trunk-math/Doc/library/collections.rst python/branches/trunk-math/Doc/library/configparser.rst python/branches/trunk-math/Doc/library/decimal.rst python/branches/trunk-math/Doc/library/difflib.rst python/branches/trunk-math/Doc/library/dis.rst python/branches/trunk-math/Doc/library/inspect.rst python/branches/trunk-math/Doc/library/itertools.rst python/branches/trunk-math/Doc/library/logging.rst python/branches/trunk-math/Doc/library/mailbox.rst python/branches/trunk-math/Doc/library/modulefinder.rst python/branches/trunk-math/Doc/library/msilib.rst python/branches/trunk-math/Doc/library/operator.rst python/branches/trunk-math/Doc/library/optparse.rst python/branches/trunk-math/Doc/library/pickle.rst python/branches/trunk-math/Doc/library/platform.rst python/branches/trunk-math/Doc/library/profile.rst python/branches/trunk-math/Doc/library/random.rst python/branches/trunk-math/Doc/library/re.rst python/branches/trunk-math/Doc/library/signal.rst python/branches/trunk-math/Doc/library/simplexmlrpcserver.rst python/branches/trunk-math/Doc/library/socket.rst python/branches/trunk-math/Doc/library/tokenize.rst python/branches/trunk-math/Doc/library/trace.rst python/branches/trunk-math/Doc/library/userdict.rst python/branches/trunk-math/Doc/library/weakref.rst python/branches/trunk-math/Doc/library/xml.dom.rst python/branches/trunk-math/Doc/library/xml.etree.elementtree.rst python/branches/trunk-math/Doc/library/xmlrpclib.rst python/branches/trunk-math/Doc/reference/compound_stmts.rst python/branches/trunk-math/Doc/reference/expressions.rst python/branches/trunk-math/Doc/reference/index.rst python/branches/trunk-math/Doc/tutorial/interpreter.rst python/branches/trunk-math/Doc/tutorial/stdlib2.rst python/branches/trunk-math/Doc/using/cmdline.rst python/branches/trunk-math/Doc/using/unix.rst python/branches/trunk-math/Doc/using/windows.rst python/branches/trunk-math/Doc/whatsnew/2.6.rst python/branches/trunk-math/Grammar/Grammar python/branches/trunk-math/Include/Python-ast.h python/branches/trunk-math/Include/abstract.h python/branches/trunk-math/Include/graminit.h python/branches/trunk-math/Include/longintrepr.h python/branches/trunk-math/Include/object.h python/branches/trunk-math/Lib/BaseHTTPServer.py python/branches/trunk-math/Lib/ConfigParser.py python/branches/trunk-math/Lib/SimpleHTTPServer.py python/branches/trunk-math/Lib/UserDict.py python/branches/trunk-math/Lib/abc.py python/branches/trunk-math/Lib/bsddb/test/test_associate.py python/branches/trunk-math/Lib/bsddb/test/test_basics.py python/branches/trunk-math/Lib/bsddb/test/test_compare.py python/branches/trunk-math/Lib/bsddb/test/test_compat.py python/branches/trunk-math/Lib/bsddb/test/test_cursor_pget_bug.py python/branches/trunk-math/Lib/bsddb/test/test_dbobj.py python/branches/trunk-math/Lib/bsddb/test/test_dbshelve.py python/branches/trunk-math/Lib/bsddb/test/test_dbtables.py python/branches/trunk-math/Lib/bsddb/test/test_env_close.py python/branches/trunk-math/Lib/bsddb/test/test_get_none.py python/branches/trunk-math/Lib/bsddb/test/test_join.py python/branches/trunk-math/Lib/bsddb/test/test_lock.py python/branches/trunk-math/Lib/bsddb/test/test_misc.py python/branches/trunk-math/Lib/bsddb/test/test_pickle.py python/branches/trunk-math/Lib/bsddb/test/test_queue.py python/branches/trunk-math/Lib/bsddb/test/test_recno.py python/branches/trunk-math/Lib/bsddb/test/test_sequence.py python/branches/trunk-math/Lib/bsddb/test/test_thread.py python/branches/trunk-math/Lib/compiler/ast.py python/branches/trunk-math/Lib/compiler/transformer.py python/branches/trunk-math/Lib/copy_reg.py python/branches/trunk-math/Lib/ctypes/__init__.py python/branches/trunk-math/Lib/ctypes/macholib/dyld.py python/branches/trunk-math/Lib/ctypes/test/__init__.py python/branches/trunk-math/Lib/ctypes/test/test_cfuncs.py python/branches/trunk-math/Lib/ctypes/test/test_checkretval.py python/branches/trunk-math/Lib/ctypes/test/test_find.py python/branches/trunk-math/Lib/ctypes/test/test_libc.py python/branches/trunk-math/Lib/ctypes/test/test_loading.py python/branches/trunk-math/Lib/ctypes/test/test_macholib.py python/branches/trunk-math/Lib/ctypes/test/test_numbers.py python/branches/trunk-math/Lib/ctypes/test/test_random_things.py python/branches/trunk-math/Lib/curses/__init__.py python/branches/trunk-math/Lib/curses/wrapper.py python/branches/trunk-math/Lib/decimal.py python/branches/trunk-math/Lib/distutils/archive_util.py python/branches/trunk-math/Lib/distutils/bcppcompiler.py python/branches/trunk-math/Lib/distutils/ccompiler.py python/branches/trunk-math/Lib/distutils/command/bdist.py python/branches/trunk-math/Lib/distutils/command/bdist_dumb.py python/branches/trunk-math/Lib/distutils/command/bdist_msi.py python/branches/trunk-math/Lib/distutils/command/bdist_rpm.py python/branches/trunk-math/Lib/distutils/command/build_ext.py python/branches/trunk-math/Lib/distutils/command/build_py.py python/branches/trunk-math/Lib/distutils/command/build_scripts.py python/branches/trunk-math/Lib/distutils/command/install.py python/branches/trunk-math/Lib/distutils/command/install_headers.py python/branches/trunk-math/Lib/distutils/command/install_lib.py python/branches/trunk-math/Lib/distutils/command/register.py python/branches/trunk-math/Lib/distutils/command/sdist.py python/branches/trunk-math/Lib/distutils/command/upload.py python/branches/trunk-math/Lib/distutils/core.py python/branches/trunk-math/Lib/distutils/dir_util.py python/branches/trunk-math/Lib/distutils/dist.py python/branches/trunk-math/Lib/distutils/fancy_getopt.py python/branches/trunk-math/Lib/distutils/filelist.py python/branches/trunk-math/Lib/distutils/msvccompiler.py python/branches/trunk-math/Lib/distutils/sysconfig.py python/branches/trunk-math/Lib/distutils/tests/test_dist.py python/branches/trunk-math/Lib/distutils/tests/test_sysconfig.py python/branches/trunk-math/Lib/distutils/text_file.py python/branches/trunk-math/Lib/distutils/unixccompiler.py python/branches/trunk-math/Lib/distutils/util.py python/branches/trunk-math/Lib/email/base64mime.py python/branches/trunk-math/Lib/email/utils.py python/branches/trunk-math/Lib/hotshot/log.py python/branches/trunk-math/Lib/hotshot/stones.py python/branches/trunk-math/Lib/httplib.py python/branches/trunk-math/Lib/idlelib/MultiCall.py python/branches/trunk-math/Lib/idlelib/RemoteDebugger.py python/branches/trunk-math/Lib/idlelib/TreeWidget.py python/branches/trunk-math/Lib/idlelib/UndoDelegator.py python/branches/trunk-math/Lib/idlelib/configDialog.py python/branches/trunk-math/Lib/idlelib/keybindingDialog.py python/branches/trunk-math/Lib/idlelib/run.py python/branches/trunk-math/Lib/imaplib.py python/branches/trunk-math/Lib/inspect.py python/branches/trunk-math/Lib/lib-tk/tkSimpleDialog.py python/branches/trunk-math/Lib/logging/handlers.py python/branches/trunk-math/Lib/ntpath.py python/branches/trunk-math/Lib/plat-mac/MiniAEFrame.py python/branches/trunk-math/Lib/plat-mac/aepack.py python/branches/trunk-math/Lib/plat-mac/bgenlocations.py python/branches/trunk-math/Lib/plat-mac/macostools.py python/branches/trunk-math/Lib/plat-riscos/rourl2path.py python/branches/trunk-math/Lib/popen2.py python/branches/trunk-math/Lib/pydoc.py python/branches/trunk-math/Lib/runpy.py python/branches/trunk-math/Lib/smtplib.py python/branches/trunk-math/Lib/socket.py python/branches/trunk-math/Lib/sqlite3/test/hooks.py python/branches/trunk-math/Lib/ssl.py python/branches/trunk-math/Lib/string.py python/branches/trunk-math/Lib/symbol.py python/branches/trunk-math/Lib/test/fork_wait.py python/branches/trunk-math/Lib/test/list_tests.py python/branches/trunk-math/Lib/test/seq_tests.py python/branches/trunk-math/Lib/test/string_tests.py python/branches/trunk-math/Lib/test/test_MimeWriter.py python/branches/trunk-math/Lib/test/test___all__.py python/branches/trunk-math/Lib/test/test_abc.py python/branches/trunk-math/Lib/test/test_applesingle.py python/branches/trunk-math/Lib/test/test_array.py python/branches/trunk-math/Lib/test/test_ast.py python/branches/trunk-math/Lib/test/test_bisect.py python/branches/trunk-math/Lib/test/test_bsddb185.py python/branches/trunk-math/Lib/test/test_bsddb3.py python/branches/trunk-math/Lib/test/test_builtin.py python/branches/trunk-math/Lib/test/test_cfgparser.py python/branches/trunk-math/Lib/test/test_class.py python/branches/trunk-math/Lib/test/test_cmd.py python/branches/trunk-math/Lib/test/test_coercion.py python/branches/trunk-math/Lib/test/test_compare.py python/branches/trunk-math/Lib/test/test_compiler.py python/branches/trunk-math/Lib/test/test_copy.py python/branches/trunk-math/Lib/test/test_cpickle.py python/branches/trunk-math/Lib/test/test_curses.py python/branches/trunk-math/Lib/test/test_datetime.py python/branches/trunk-math/Lib/test/test_dbm.py python/branches/trunk-math/Lib/test/test_decorators.py python/branches/trunk-math/Lib/test/test_deque.py python/branches/trunk-math/Lib/test/test_descrtut.py python/branches/trunk-math/Lib/test/test_dict.py python/branches/trunk-math/Lib/test/test_dis.py python/branches/trunk-math/Lib/test/test_doctest.py python/branches/trunk-math/Lib/test/test_dummy_threading.py python/branches/trunk-math/Lib/test/test_email.py python/branches/trunk-math/Lib/test/test_email_renamed.py python/branches/trunk-math/Lib/test/test_eof.py python/branches/trunk-math/Lib/test/test_extcall.py python/branches/trunk-math/Lib/test/test_file.py python/branches/trunk-math/Lib/test/test_fileinput.py python/branches/trunk-math/Lib/test/test_format.py python/branches/trunk-math/Lib/test/test_fractions.py python/branches/trunk-math/Lib/test/test_ftplib.py python/branches/trunk-math/Lib/test/test_getargs2.py python/branches/trunk-math/Lib/test/test_grammar.py python/branches/trunk-math/Lib/test/test_gzip.py python/branches/trunk-math/Lib/test/test_heapq.py python/branches/trunk-math/Lib/test/test_htmlparser.py python/branches/trunk-math/Lib/test/test_httplib.py python/branches/trunk-math/Lib/test/test_imgfile.py python/branches/trunk-math/Lib/test/test_imp.py python/branches/trunk-math/Lib/test/test_index.py python/branches/trunk-math/Lib/test/test_inspect.py python/branches/trunk-math/Lib/test/test_itertools.py python/branches/trunk-math/Lib/test/test_linuxaudiodev.py python/branches/trunk-math/Lib/test/test_list.py python/branches/trunk-math/Lib/test/test_logging.py python/branches/trunk-math/Lib/test/test_minidom.py python/branches/trunk-math/Lib/test/test_mmap.py python/branches/trunk-math/Lib/test/test_module.py python/branches/trunk-math/Lib/test/test_modulefinder.py python/branches/trunk-math/Lib/test/test_multibytecodec_support.py python/branches/trunk-math/Lib/test/test_operator.py python/branches/trunk-math/Lib/test/test_optparse.py python/branches/trunk-math/Lib/test/test_ossaudiodev.py python/branches/trunk-math/Lib/test/test_parser.py python/branches/trunk-math/Lib/test/test_pickle.py python/branches/trunk-math/Lib/test/test_pkg.py python/branches/trunk-math/Lib/test/test_plistlib.py python/branches/trunk-math/Lib/test/test_poll.py python/branches/trunk-math/Lib/test/test_posix.py python/branches/trunk-math/Lib/test/test_pyclbr.py python/branches/trunk-math/Lib/test/test_quopri.py python/branches/trunk-math/Lib/test/test_resource.py python/branches/trunk-math/Lib/test/test_rfc822.py python/branches/trunk-math/Lib/test/test_scope.py python/branches/trunk-math/Lib/test/test_scriptpackages.py python/branches/trunk-math/Lib/test/test_sgmllib.py python/branches/trunk-math/Lib/test/test_shlex.py python/branches/trunk-math/Lib/test/test_signal.py python/branches/trunk-math/Lib/test/test_site.py python/branches/trunk-math/Lib/test/test_smtplib.py python/branches/trunk-math/Lib/test/test_socketserver.py python/branches/trunk-math/Lib/test/test_sqlite.py python/branches/trunk-math/Lib/test/test_str.py python/branches/trunk-math/Lib/test/test_strftime.py python/branches/trunk-math/Lib/test/test_string.py python/branches/trunk-math/Lib/test/test_sunaudiodev.py python/branches/trunk-math/Lib/test/test_support.py python/branches/trunk-math/Lib/test/test_threading.py python/branches/trunk-math/Lib/test/test_tuple.py python/branches/trunk-math/Lib/test/test_types.py python/branches/trunk-math/Lib/test/test_unicode.py python/branches/trunk-math/Lib/test/test_unpack.py python/branches/trunk-math/Lib/test/test_urllib.py python/branches/trunk-math/Lib/test/test_urllib2.py python/branches/trunk-math/Lib/test/test_urllib2_localnet.py python/branches/trunk-math/Lib/test/test_userdict.py python/branches/trunk-math/Lib/test/test_userlist.py python/branches/trunk-math/Lib/test/test_userstring.py python/branches/trunk-math/Lib/test/test_uu.py python/branches/trunk-math/Lib/test/test_whichdb.py python/branches/trunk-math/Lib/test/test_xml_etree.py python/branches/trunk-math/Lib/test/test_xml_etree_c.py python/branches/trunk-math/Lib/test/test_xmlrpc.py python/branches/trunk-math/Lib/test/test_xpickle.py python/branches/trunk-math/Lib/test/test_zipfile64.py python/branches/trunk-math/Lib/threading.py python/branches/trunk-math/Lib/token.py python/branches/trunk-math/Lib/trace.py python/branches/trunk-math/Lib/xml/dom/minidom.py python/branches/trunk-math/Lib/xmlrpclib.py python/branches/trunk-math/Mac/Demo/PICTbrowse/ICONbrowse.py python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse.py python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse2.py python/branches/trunk-math/Mac/Demo/PICTbrowse/cicnbrowse.py python/branches/trunk-math/Mac/Demo/PICTbrowse/oldPICTbrowse.py python/branches/trunk-math/Mac/Demo/example1/dnslookup-1.py python/branches/trunk-math/Mac/Demo/example2/dnslookup-2.py python/branches/trunk-math/Mac/Demo/imgbrowse/imgbrowse.py python/branches/trunk-math/Mac/Demo/imgbrowse/mac_image.py python/branches/trunk-math/Mac/Demo/sound/morse.py python/branches/trunk-math/Mac/Modules/ae/aescan.py python/branches/trunk-math/Mac/Modules/ah/ahscan.py python/branches/trunk-math/Mac/Modules/app/appscan.py python/branches/trunk-math/Mac/Modules/carbonevt/CarbonEvtscan.py python/branches/trunk-math/Mac/Modules/cf/cfscan.py python/branches/trunk-math/Mac/Modules/cg/cgscan.py python/branches/trunk-math/Mac/Modules/cm/cmscan.py python/branches/trunk-math/Mac/Modules/ctl/ctlscan.py python/branches/trunk-math/Mac/Modules/dlg/dlgscan.py python/branches/trunk-math/Mac/Modules/drag/dragscan.py python/branches/trunk-math/Mac/Modules/evt/evtscan.py python/branches/trunk-math/Mac/Modules/file/filescan.py python/branches/trunk-math/Mac/Modules/fm/fmscan.py python/branches/trunk-math/Mac/Modules/folder/folderscan.py python/branches/trunk-math/Mac/Modules/help/helpscan.py python/branches/trunk-math/Mac/Modules/ibcarbon/IBCarbonscan.py python/branches/trunk-math/Mac/Modules/icn/icnscan.py python/branches/trunk-math/Mac/Modules/launch/launchscan.py python/branches/trunk-math/Mac/Modules/list/listscan.py python/branches/trunk-math/Mac/Modules/menu/menuscan.py python/branches/trunk-math/Mac/Modules/mlte/mltescan.py python/branches/trunk-math/Mac/Modules/osa/osascan.py python/branches/trunk-math/Mac/Modules/qd/qdscan.py python/branches/trunk-math/Mac/Modules/qdoffs/qdoffsscan.py python/branches/trunk-math/Mac/Modules/qt/qtscan.py python/branches/trunk-math/Mac/Modules/res/resscan.py python/branches/trunk-math/Mac/Modules/scrap/scrapscan.py python/branches/trunk-math/Mac/Modules/snd/sndscan.py python/branches/trunk-math/Mac/Modules/te/tescan.py python/branches/trunk-math/Mac/Modules/win/winscan.py python/branches/trunk-math/Makefile.pre.in python/branches/trunk-math/Misc/ACKS python/branches/trunk-math/Misc/BeOS-setup.py python/branches/trunk-math/Misc/HISTORY python/branches/trunk-math/Misc/NEWS python/branches/trunk-math/Misc/cheatsheet python/branches/trunk-math/Modules/_ctypes/_ctypes_test.c python/branches/trunk-math/Modules/_ctypes/libffi/configure python/branches/trunk-math/Modules/_ctypes/libffi/configure.ac python/branches/trunk-math/Modules/_ctypes/libffi/fficonfig.h.in python/branches/trunk-math/Modules/_struct.c python/branches/trunk-math/Modules/_testcapimodule.c python/branches/trunk-math/Modules/cStringIO.c python/branches/trunk-math/Modules/datetimemodule.c python/branches/trunk-math/Modules/dbmmodule.c python/branches/trunk-math/Modules/gdbmmodule.c python/branches/trunk-math/Modules/itertoolsmodule.c python/branches/trunk-math/Modules/mmapmodule.c python/branches/trunk-math/Modules/operator.c python/branches/trunk-math/Modules/parsermodule.c python/branches/trunk-math/Modules/signalmodule.c python/branches/trunk-math/Modules/syslogmodule.c python/branches/trunk-math/Objects/abstract.c python/branches/trunk-math/Objects/cellobject.c python/branches/trunk-math/Objects/dictobject.c python/branches/trunk-math/Objects/fileobject.c python/branches/trunk-math/Objects/floatobject.c python/branches/trunk-math/Objects/intobject.c python/branches/trunk-math/Objects/listobject.c python/branches/trunk-math/Objects/longobject.c python/branches/trunk-math/Objects/stringobject.c python/branches/trunk-math/Objects/typeobject.c python/branches/trunk-math/Objects/unicodeobject.c python/branches/trunk-math/PC/VC6/pythoncore.dsp python/branches/trunk-math/PC/VS7.1/pythoncore.vcproj python/branches/trunk-math/PC/VS8.0/build_tkinter.py python/branches/trunk-math/PC/VS8.0/pythoncore.vcproj python/branches/trunk-math/PC/config.c python/branches/trunk-math/PCbuild/build_tkinter.py python/branches/trunk-math/PCbuild/pythoncore.vcproj python/branches/trunk-math/Parser/Python.asdl python/branches/trunk-math/Parser/asdl_c.py python/branches/trunk-math/Parser/parser.h python/branches/trunk-math/Parser/spark.py python/branches/trunk-math/Python/Python-ast.c python/branches/trunk-math/Python/ast.c python/branches/trunk-math/Python/bltinmodule.c python/branches/trunk-math/Python/compile.c python/branches/trunk-math/Python/getargs.c python/branches/trunk-math/Python/graminit.c python/branches/trunk-math/Python/import.c python/branches/trunk-math/Python/mystrtoul.c python/branches/trunk-math/Python/peephole.c python/branches/trunk-math/Python/pystrtod.c python/branches/trunk-math/Python/pythonrun.c python/branches/trunk-math/Python/symtable.c python/branches/trunk-math/Tools/compiler/ast.txt python/branches/trunk-math/Tools/compiler/astgen.py python/branches/trunk-math/Tools/compiler/dumppyc.py python/branches/trunk-math/Tools/faqwiz/faqw.py python/branches/trunk-math/Tools/modulator/Tkextra.py python/branches/trunk-math/Tools/pybench/systimes.py python/branches/trunk-math/Tools/pynche/ChipViewer.py python/branches/trunk-math/Tools/pynche/TypeinViewer.py python/branches/trunk-math/Tools/scripts/logmerge.py python/branches/trunk-math/Tools/scripts/nm2def.py python/branches/trunk-math/Tools/scripts/pindent.py python/branches/trunk-math/Tools/scripts/pysource.py python/branches/trunk-math/Tools/scripts/reindent.py python/branches/trunk-math/Tools/scripts/xxci.py python/branches/trunk-math/Tools/ssl/get-remote-certificate.py python/branches/trunk-math/Tools/unicode/gencodec.py python/branches/trunk-math/Tools/webchecker/wcgui.py python/branches/trunk-math/Tools/webchecker/wsgui.py python/branches/trunk-math/setup.py Log: Merged revisions 60854-61105 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r60855 | georg.brandl | 2008-02-16 10:37:32 +0100 (Sat, 16 Feb 2008) | 2 lines #2120: broken links in advocacy document. ........ r60860 | amaury.forgeotdarc | 2008-02-16 15:34:57 +0100 (Sat, 16 Feb 2008) | 23 lines Crashers of the day: Py_CLEAR must be used when there is a chance that the function can be called recursively. This was discussed in issue1020188. In python codebase, all occurrences of Py_[X]DECREF(xxx->yyy) are suspect, except when they appear in tp_new or tp_dealloc functions, or when the member cannot be of a user-defined class. Note that tp_init is not safe. I do have a (crashing) example for every changed line. Is it worth adding them to the test suite? Example: class SpecialStr(str): def __del__(self): s.close() import cStringIO s = cStringIO.StringIO(SpecialStr("text")) s.close() # Segfault ........ r60871 | amaury.forgeotdarc | 2008-02-16 21:55:24 +0100 (Sat, 16 Feb 2008) | 3 lines Prevent a crash with nested scopes, again caused by calling Py_DECREF when the pointer is still present in the containing structure. ........ r60872 | brett.cannon | 2008-02-17 02:59:18 +0100 (Sun, 17 Feb 2008) | 4 lines Move test_logging over to doctest. Thanks to Christopher White from GHOP. ........ r60873 | georg.brandl | 2008-02-17 12:33:38 +0100 (Sun, 17 Feb 2008) | 2 lines #2131: note that codecs.open() always opens files in binary mode. ........ r60876 | georg.brandl | 2008-02-17 16:14:10 +0100 (Sun, 17 Feb 2008) | 2 lines Fix function name. ........ r60877 | facundo.batista | 2008-02-17 17:21:13 +0100 (Sun, 17 Feb 2008) | 4 lines Now we handle different the backup copy, because of security issues regarding user/group and permissions. Fixes 1050828. ........ r60878 | facundo.batista | 2008-02-17 19:59:29 +0100 (Sun, 17 Feb 2008) | 4 lines Issue 2112. mmap does not raises EnvironmentError no more, but a subclass of it. Thanks John Lenton. ........ r60879 | eric.smith | 2008-02-17 20:46:49 +0100 (Sun, 17 Feb 2008) | 16 lines Backport of PEP 3101, Advanced String Formatting, from py3k. Highlights: - Adding PyObject_Format. - Adding string.Format class. - Adding __format__ for str, unicode, int, long, float, datetime. - Adding builtin format. - Adding ''.format and u''.format. - str/unicode fixups for formatters. The files in Objects/stringlib that implement PEP 3101 (stringdefs.h, unicodedefs.h, formatter.h, string_format.h) are identical in trunk and py3k. Any changes from here on should be made to trunk, and changes will propogate to py3k). ........ r60882 | amaury.forgeotdarc | 2008-02-17 21:56:31 +0100 (Sun, 17 Feb 2008) | 5 lines Compilation was broken on Windows since the introduction of Advanced String Formatting. Only PCBuild (vs9) was really tested. Changes for older compilers were done manually. ........ r60883 | georg.brandl | 2008-02-17 22:18:55 +0100 (Sun, 17 Feb 2008) | 2 lines #2133: fix HTML color spec. ........ r60884 | facundo.batista | 2008-02-18 04:43:43 +0100 (Mon, 18 Feb 2008) | 5 lines Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. Thanks Javi Mansilla for patch review and corrections. ........ r60885 | facundo.batista | 2008-02-18 13:48:43 +0100 (Mon, 18 Feb 2008) | 4 lines Issue 1224. Now we support again the double slash in the URL. Thanks Anthony Lenton. ........ r60887 | eric.smith | 2008-02-18 15:25:02 +0100 (Mon, 18 Feb 2008) | 1 line Temporarily removed float tests. See issue 1600. ........ r60891 | kristjan.jonsson | 2008-02-18 18:40:47 +0100 (Mon, 18 Feb 2008) | 1 line Perform correct handling of stack overflow for windows: Catch the correct exception code and reset the overflow condition when handled. ........ r60893 | eric.smith | 2008-02-18 19:02:34 +0100 (Mon, 18 Feb 2008) | 1 line Added code to correct combining str and unicode in ''.format(). Added test case. ........ r60899 | eric.smith | 2008-02-19 13:27:59 +0100 (Tue, 19 Feb 2008) | 1 line Added dependencies for stringobject.o. This should fix failing tests in test_unicode.py. ........ r60901 | eric.smith | 2008-02-19 14:21:56 +0100 (Tue, 19 Feb 2008) | 1 line Added PEP 3101. ........ r60907 | georg.brandl | 2008-02-20 20:12:36 +0100 (Wed, 20 Feb 2008) | 2 lines Fixes contributed by Ori Avtalion. ........ r60909 | eric.smith | 2008-02-21 00:34:22 +0100 (Thu, 21 Feb 2008) | 1 line Trim leading zeros from a floating point exponent, per C99. See issue 1600. As far as I know, this only affects Windows. Add float type 'n' to PyOS_ascii_formatd (see PEP 3101 for 'n' description). ........ r60910 | eric.smith | 2008-02-21 00:39:28 +0100 (Thu, 21 Feb 2008) | 1 line Now that PyOS_ascii_formatd supports the 'n' format, simplify the float formatting code to just call it. ........ r60918 | andrew.kuchling | 2008-02-21 15:23:38 +0100 (Thu, 21 Feb 2008) | 2 lines Close manifest file. This change doesn't make any difference to CPython, but is a necessary fix for Jython. ........ r60921 | guido.van.rossum | 2008-02-21 18:46:16 +0100 (Thu, 21 Feb 2008) | 2 lines Remove news about float repr() -- issue 1580 is still in limbo. ........ r60923 | guido.van.rossum | 2008-02-21 19:18:37 +0100 (Thu, 21 Feb 2008) | 5 lines Removed uses of dict.has_key() from distutils, and uses of callable() from copy_reg.py, so the interpreter now starts up without warnings when '-3' is given. More work like this needs to be done in the rest of the stdlib. ........ r60924 | thomas.heller | 2008-02-21 19:28:48 +0100 (Thu, 21 Feb 2008) | 4 lines configure.ac: Remove the configure check for _Bool, it is already done in the top-level Python configure script. configure, fficonfig.h.in: regenerated. ........ r60925 | thomas.heller | 2008-02-21 19:52:20 +0100 (Thu, 21 Feb 2008) | 3 lines Replace 'has_key()' with 'in'. Replace 'raise Error, stuff' with 'raise Error(stuff)'. ........ r60927 | raymond.hettinger | 2008-02-21 20:24:53 +0100 (Thu, 21 Feb 2008) | 1 line Update more instances of has_key(). ........ r60928 | guido.van.rossum | 2008-02-21 20:46:35 +0100 (Thu, 21 Feb 2008) | 3 lines Fix a few typos and layout glitches (more work is needed). Move 2.5 news to Misc/HISTORY. ........ r60932 | eric.smith | 2008-02-21 21:17:08 +0100 (Thu, 21 Feb 2008) | 1 line Moved test_format into the correct TestCase. ........ r60936 | georg.brandl | 2008-02-21 21:33:38 +0100 (Thu, 21 Feb 2008) | 2 lines #2079: typo in userdict docs. ........ r60938 | georg.brandl | 2008-02-21 21:38:13 +0100 (Thu, 21 Feb 2008) | 2 lines Part of #2154: minimal syntax fixes in doc example snippets. ........ r60942 | raymond.hettinger | 2008-02-22 04:16:42 +0100 (Fri, 22 Feb 2008) | 1 line First draft for itertools.product(). Docs and other updates forthcoming. ........ r60955 | nick.coghlan | 2008-02-22 11:54:06 +0100 (Fri, 22 Feb 2008) | 1 line Try to make command line error messages from runpy easier to understand (and suppress traceback cruft from the implicitly invoked runpy machinery) ........ r60956 | georg.brandl | 2008-02-22 13:31:45 +0100 (Fri, 22 Feb 2008) | 2 lines A lot more typo fixes by Ori Avtalion. ........ r60957 | georg.brandl | 2008-02-22 13:56:34 +0100 (Fri, 22 Feb 2008) | 2 lines Don't reference pyshell. ........ r60958 | georg.brandl | 2008-02-22 13:57:05 +0100 (Fri, 22 Feb 2008) | 2 lines Another fix. ........ r60962 | eric.smith | 2008-02-22 17:30:22 +0100 (Fri, 22 Feb 2008) | 1 line Added bin() builtin. I'm going to check in the tests in a seperate checkin, because the builtin doesn't need to be ported to py3k, but the tests are missing in py3k and need to be merged there. ........ r60965 | eric.smith | 2008-02-22 18:43:17 +0100 (Fri, 22 Feb 2008) | 1 line Tests for bin() builtin. These need to get merged into py3k, which has no tests for bin. ........ r60968 | raymond.hettinger | 2008-02-22 20:50:06 +0100 (Fri, 22 Feb 2008) | 1 line Document itertools.product(). ........ r60969 | raymond.hettinger | 2008-02-23 03:20:41 +0100 (Sat, 23 Feb 2008) | 9 lines Improve the implementation of itertools.product() * Fix-up issues pointed-out by Neal Norwitz. * Add extensive comments. * The lz->result variable is now a tuple instead of a list. * Use fast macro getitem/setitem calls so most code is in-line. * Re-use the result tuple if available (modify in-place instead of copy). ........ r60970 | eric.smith | 2008-02-23 04:09:44 +0100 (Sat, 23 Feb 2008) | 1 line Added future_builtins, which contains PEP 3127 compatible versions of hex() and oct(). ........ r60972 | raymond.hettinger | 2008-02-23 05:03:50 +0100 (Sat, 23 Feb 2008) | 1 line Add more comments ........ r60973 | raymond.hettinger | 2008-02-23 11:04:15 +0100 (Sat, 23 Feb 2008) | 1 line Add recipe using itertools.product(). ........ r60974 | facundo.batista | 2008-02-23 13:01:13 +0100 (Sat, 23 Feb 2008) | 6 lines Issue 1881. Increased the stack limit from 500 to 1500. Also added a test for this (and because of this test you'll see in stderr a message that parser.c sends before raising MemoryError). Thanks Ralf Schmitt. ........ r60975 | facundo.batista | 2008-02-23 13:27:17 +0100 (Sat, 23 Feb 2008) | 4 lines Issue 1776581. Minor corrections to smtplib, and two small tests. Thanks Alan McIntyre. ........ r60976 | facundo.batista | 2008-02-23 13:46:10 +0100 (Sat, 23 Feb 2008) | 5 lines Issue 1781. Now ConfigParser.add_section does not let you add a DEFAULT section any more, because it duplicated sections with the rest of the machinery. Thanks Tim Lesher and Manuel Kaufmann. ........ r60978 | christian.heimes | 2008-02-23 16:01:05 +0100 (Sat, 23 Feb 2008) | 2 lines Patch #1759: Backport of PEP 3129 class decorators with some help from Georg ........ r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines #1492: allow overriding BaseHTTPServer's content type for error messages. ........ r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines #2165: fix test_logging failure on some machines. ........ r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines Issue 1089358. Adds the siginterrupt() function, that is just a wrapper around the system call with the same name. Also added test cases, doc changes and NEWS entry. Thanks Jason and Ralf Schmitt. ........ r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines #2067: file.__exit__() now calls subclasses' close() method. ........ r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines More difflib examples. Written for GHOP by Josip Dzolonga. ........ r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line #2072: correct documentation for .rpc_paths ........ r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines #2161: Fix opcode name. ........ r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines #1119331: ncurses will just call exit() if the terminal name isn't found. Call setupterm() first so that we get a Python exception instead of just existing. ........ r60990 | eric.smith | 2008-02-23 17:05:26 +0100 (Sat, 23 Feb 2008) | 1 line Removed duplicate Py_CHARMASK define. It's already defined in Python.h. ........ r60991 | andrew.kuchling | 2008-02-23 17:23:05 +0100 (Sat, 23 Feb 2008) | 4 lines #1330538: Improve comparison of xmlrpclib.DateTime and datetime instances. Remove automatic handling of datetime.date and datetime.time. This breaks backward compatibility, but python-dev discussion was strongly against this automatic conversion; see the bug for a link. ........ r60994 | andrew.kuchling | 2008-02-23 17:39:43 +0100 (Sat, 23 Feb 2008) | 1 line #835521: Add index entries for various pickle-protocol methods and attributes ........ r60995 | andrew.kuchling | 2008-02-23 18:10:46 +0100 (Sat, 23 Feb 2008) | 2 lines #1433694: minidom's .normalize() failed to set .nextSibling for last element. Fix by Malte Helmert ........ r61000 | christian.heimes | 2008-02-23 18:40:11 +0100 (Sat, 23 Feb 2008) | 1 line Patch #2167 from calvin: Remove unused imports ........ r61001 | christian.heimes | 2008-02-23 18:42:31 +0100 (Sat, 23 Feb 2008) | 1 line Patch #1957: syslogmodule: Release GIL when calling syslog(3) ........ r61002 | christian.heimes | 2008-02-23 18:52:07 +0100 (Sat, 23 Feb 2008) | 2 lines Issue #2051 and patch from Alexander Belopolsky: Permission for pyc and pyo files are inherited from the py file. ........ r61004 | georg.brandl | 2008-02-23 19:47:04 +0100 (Sat, 23 Feb 2008) | 2 lines Documentation coverage builder, part 1. ........ r61006 | andrew.kuchling | 2008-02-23 20:02:33 +0100 (Sat, 23 Feb 2008) | 1 line #1389051: IMAP module tries to read entire message in one chunk. Patch by Fredrik Lundh. ........ r61008 | andrew.kuchling | 2008-02-23 20:28:58 +0100 (Sat, 23 Feb 2008) | 1 line #1389051, #1092502: fix excessively large allocations when using read() on a socket ........ r61011 | jeffrey.yasskin | 2008-02-23 20:40:54 +0100 (Sat, 23 Feb 2008) | 13 lines Prevent classes like: class RunSelfFunction(object): def __init__(self): self.thread = threading.Thread(target=self._run) self.thread.start() def _run(self): pass from creating a permanent cycle between the object and the thread by having the Thread delete its references to the object when it completes. As an example of the effect of this bug, paramiko.Transport inherits from Thread to avoid it. ........ r61013 | jeffrey.yasskin | 2008-02-23 21:40:35 +0100 (Sat, 23 Feb 2008) | 3 lines Followup to r61011: Also avoid the reference cycle when the Thread's target raises an exception. ........ r61017 | georg.brandl | 2008-02-23 22:59:11 +0100 (Sat, 23 Feb 2008) | 2 lines #2101: fix removeAttribute docs. ........ r61018 | georg.brandl | 2008-02-23 23:05:38 +0100 (Sat, 23 Feb 2008) | 2 lines Add examples to modulefinder docs. Written for GHOP by Josip Dzolonga. ........ r61019 | georg.brandl | 2008-02-23 23:09:24 +0100 (Sat, 23 Feb 2008) | 2 lines Use os.closerange() in popen2. ........ r61020 | georg.brandl | 2008-02-23 23:14:02 +0100 (Sat, 23 Feb 2008) | 2 lines Use os.closerange(). ........ r61021 | georg.brandl | 2008-02-23 23:35:33 +0100 (Sat, 23 Feb 2008) | 3 lines In test_heapq and test_bisect, test both the Python and the C implementation. Originally written for GHOP by Josip Dzolonga, heavily patched by me. ........ r61024 | facundo.batista | 2008-02-23 23:54:12 +0100 (Sat, 23 Feb 2008) | 3 lines Added simple test case. Thanks Benjamin Peterson. ........ r61025 | georg.brandl | 2008-02-23 23:55:18 +0100 (Sat, 23 Feb 2008) | 2 lines #1825: correctly document msilib.add_data. ........ r61027 | georg.brandl | 2008-02-24 00:02:23 +0100 (Sun, 24 Feb 2008) | 2 lines #1826: allow dotted attribute paths in operator.attrgetter. ........ r61028 | georg.brandl | 2008-02-24 00:04:35 +0100 (Sun, 24 Feb 2008) | 2 lines #1506171: added operator.methodcaller(). ........ r61029 | georg.brandl | 2008-02-24 00:25:26 +0100 (Sun, 24 Feb 2008) | 2 lines Document import ./. threading issues. #1720705. ........ r61032 | georg.brandl | 2008-02-24 00:43:01 +0100 (Sun, 24 Feb 2008) | 2 lines Specify what kind of warning -3 emits. ........ r61033 | christian.heimes | 2008-02-24 00:59:45 +0100 (Sun, 24 Feb 2008) | 1 line MS Windows doesn't have mode_t but stat.st_mode is defined as unsigned short. ........ r61034 | georg.brandl | 2008-02-24 01:03:22 +0100 (Sun, 24 Feb 2008) | 4 lines #900744: If an invalid chunked-encoding header is sent by a server, httplib will now raise IncompleteRead and close the connection instead of raising ValueError. ........ r61035 | georg.brandl | 2008-02-24 01:14:24 +0100 (Sun, 24 Feb 2008) | 2 lines #1627: httplib now ignores negative Content-Length headers. ........ r61037 | neal.norwitz | 2008-02-24 03:20:25 +0100 (Sun, 24 Feb 2008) | 2 lines map(None, ...) is not supported in 3.0. ........ r61039 | andrew.kuchling | 2008-02-24 03:39:15 +0100 (Sun, 24 Feb 2008) | 1 line Remove stray word ........ r61040 | neal.norwitz | 2008-02-24 03:40:58 +0100 (Sun, 24 Feb 2008) | 3 lines Add a little info to the 3k deprecation warnings about what to use instead. Suggested by Raymond Hettinger. ........ r61041 | facundo.batista | 2008-02-24 04:17:21 +0100 (Sun, 24 Feb 2008) | 4 lines Issue 1742669. Now %d accepts very big float numbers. Thanks Gabriel Genellina. ........ r61046 | neal.norwitz | 2008-02-24 08:21:56 +0100 (Sun, 24 Feb 2008) | 5 lines Get ctypes working on the Alpha (Tru64). The problem was that there were two module_methods and the one used depended on the order the modules were loaded. By making the test module_methods static, it is not exported and the correct version is picked up. ........ r61048 | neal.norwitz | 2008-02-24 09:27:49 +0100 (Sun, 24 Feb 2008) | 1 line Fix typo of hexidecimal ........ r61049 | christian.heimes | 2008-02-24 13:26:16 +0100 (Sun, 24 Feb 2008) | 1 line Use PY_FORMAT_SIZE_T instead of z for string formatting. Thanks Neal. ........ r61051 | mark.dickinson | 2008-02-24 19:12:36 +0100 (Sun, 24 Feb 2008) | 2 lines Remove duplicate 'import re' in decimal.py ........ r61052 | neal.norwitz | 2008-02-24 19:47:03 +0100 (Sun, 24 Feb 2008) | 11 lines Create a db_home directory with a unique name so multiple users can run the test simultaneously. The simplest thing I found that worked on both Windows and Unix was to use the PID. It's unique so should be sufficient. This should prevent many of the spurious failures of the automated tests since they run as different users. Also cleanup the directory consistenly in the tearDown methods. It would be nice if someone ensured that the directories are always created with a consistent name. ........ r61054 | eric.smith | 2008-02-24 22:41:49 +0100 (Sun, 24 Feb 2008) | 1 line Corrected assert to check for correct type in py3k. ........ r61057 | christian.heimes | 2008-02-24 23:48:05 +0100 (Sun, 24 Feb 2008) | 2 lines Added dependency rules for Objects/stringlib/*.h stringobject, unicodeobject and the two formatters are rebuild whenever a header files changes ........ r61058 | neal.norwitz | 2008-02-25 02:45:37 +0100 (Mon, 25 Feb 2008) | 1 line Fix indentation ........ r61059 | brett.cannon | 2008-02-25 06:33:07 +0100 (Mon, 25 Feb 2008) | 2 lines Add minor markup for a string. ........ r61060 | brett.cannon | 2008-02-25 06:33:33 +0100 (Mon, 25 Feb 2008) | 2 lines Fix a minor typo in a docstring. ........ r61063 | andrew.kuchling | 2008-02-25 17:29:19 +0100 (Mon, 25 Feb 2008) | 1 line Move .setupterm() output so that we don't try to call endwin() if it fails ........ r61064 | andrew.kuchling | 2008-02-25 17:29:58 +0100 (Mon, 25 Feb 2008) | 1 line Use file descriptor for real stdout ........ r61065 | christian.heimes | 2008-02-25 18:32:07 +0100 (Mon, 25 Feb 2008) | 1 line Thomas Herve explained to me that PyCrypto depends on the constants. I'm adding the aliases because C code for Python 2.x should compile under 2.6 as well. The aliases aren't available in Python 3.x though. ........ r61067 | facundo.batista | 2008-02-25 19:06:00 +0100 (Mon, 25 Feb 2008) | 4 lines Issue 2117. Update compiler module to handle class decorators. Thanks Thomas Herve ........ r61069 | georg.brandl | 2008-02-25 21:17:56 +0100 (Mon, 25 Feb 2008) | 2 lines Rename sphinx.addons to sphinx.ext. ........ r61071 | georg.brandl | 2008-02-25 21:20:45 +0100 (Mon, 25 Feb 2008) | 2 lines Revert r61029. ........ r61072 | facundo.batista | 2008-02-25 23:33:55 +0100 (Mon, 25 Feb 2008) | 4 lines Issue 2168. gdbm and dbm needs to be iterable; this fixes a failure in the shelve module. Thanks Thomas Herve. ........ r61073 | raymond.hettinger | 2008-02-25 23:42:32 +0100 (Mon, 25 Feb 2008) | 1 line Make sure the itertools filter functions give the same performance for func=bool as func=None. ........ r61074 | raymond.hettinger | 2008-02-26 00:17:41 +0100 (Tue, 26 Feb 2008) | 1 line Revert part of r60927 which made invalid assumptions about the API offered by db modules. ........ r61075 | facundo.batista | 2008-02-26 00:46:02 +0100 (Tue, 26 Feb 2008) | 3 lines Coerced PyBool_Type to be able to compare it. ........ r61076 | raymond.hettinger | 2008-02-26 03:46:54 +0100 (Tue, 26 Feb 2008) | 1 line Docs for itertools.combinations(). Implementation in forthcoming checkin. ........ r61077 | neal.norwitz | 2008-02-26 05:50:37 +0100 (Tue, 26 Feb 2008) | 3 lines Don't use a hard coded port. This test could hang/fail if the port is in use. Speed this test up by avoiding a sleep and using the event. ........ r61078 | neal.norwitz | 2008-02-26 06:12:50 +0100 (Tue, 26 Feb 2008) | 1 line Whitespace normalization ........ r61079 | neal.norwitz | 2008-02-26 06:23:51 +0100 (Tue, 26 Feb 2008) | 1 line Whitespace normalization ........ r61080 | georg.brandl | 2008-02-26 07:40:10 +0100 (Tue, 26 Feb 2008) | 2 lines Banish tab. ........ r61081 | neal.norwitz | 2008-02-26 09:04:59 +0100 (Tue, 26 Feb 2008) | 7 lines Speed up this test by about 99%. Remove sleeps and replace with events. (This may fail on some slow platforms, but we can fix those cases which should be relatively isolated and easier to find now.) Move two test cases that didn't require a server to be started to a separate TestCase. These tests were taking 3 seconds which is what the timeout was set to. ........ r61082 | christian.heimes | 2008-02-26 09:18:11 +0100 (Tue, 26 Feb 2008) | 1 line The contains function raised a gcc warning. The new code is copied straight from py3k. ........ r61084 | neal.norwitz | 2008-02-26 09:21:28 +0100 (Tue, 26 Feb 2008) | 3 lines Add a timing flag to Trace so you can see where slowness occurs like waiting for socket timeouts in test_smtplib :-). ........ r61086 | christian.heimes | 2008-02-26 18:23:51 +0100 (Tue, 26 Feb 2008) | 3 lines Patch #1691070 from Roger Upole: Speed up PyArg_ParseTupleAndKeywords() and improve error msg My tests don't show the promised speed up of 10%. The code is as fast as the old code for simple cases and slightly faster for complex cases with several of args and kwargs. But the patch simplifies the code, too. ........ r61087 | georg.brandl | 2008-02-26 20:13:45 +0100 (Tue, 26 Feb 2008) | 2 lines #2194: fix some typos. ........ r61088 | raymond.hettinger | 2008-02-27 00:40:50 +0100 (Wed, 27 Feb 2008) | 1 line Add itertools.combinations(). ........ r61089 | raymond.hettinger | 2008-02-27 02:08:04 +0100 (Wed, 27 Feb 2008) | 1 line One too many decrefs. ........ r61090 | raymond.hettinger | 2008-02-27 02:08:30 +0100 (Wed, 27 Feb 2008) | 1 line Larger test range ........ r61091 | raymond.hettinger | 2008-02-27 02:44:34 +0100 (Wed, 27 Feb 2008) | 1 line Simply the sample code for combinations(). ........ r61098 | jeffrey.yasskin | 2008-02-28 05:45:36 +0100 (Thu, 28 Feb 2008) | 7 lines Move abc._Abstract into object by adding a new flag Py_TPFLAGS_IS_ABSTRACT, which forbids constructing types that have it set. The effect is to speed ./python.exe -m timeit -s 'import abc' -s 'class Foo(object): __metaclass__ = abc.ABCMeta' 'Foo()' up from 2.5us to 0.201us. This fixes issue 1762. ........ r61099 | jeffrey.yasskin | 2008-02-28 06:53:18 +0100 (Thu, 28 Feb 2008) | 3 lines Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make sure all tests run even if some fail. ........ r61100 | jeffrey.yasskin | 2008-02-28 07:09:19 +0100 (Thu, 28 Feb 2008) | 21 lines Thread.start() used sleep(0.000001) to make sure it didn't return before the new thread had started. At least on my MacBook Pro, that wound up sleeping for a full 10ms (probably 1 jiffy). By using an Event instead, we can be absolutely certain that the thread has started, and return more quickly (217us). Before: $ ./python.exe -m timeit -s 'from threading import Thread' 't = Thread(); t.start(); t.join()' 100 loops, best of 3: 10.3 msec per loop $ ./python.exe -m timeit -s 'from threading import Thread; t = Thread()' 't.isAlive()' 1000000 loops, best of 3: 0.47 usec per loop After: $ ./python.exe -m timeit -s 'from threading import Thread' 't = Thread(); t.start(); t.join()' 1000 loops, best of 3: 217 usec per loop $ ./python.exe -m timeit -s 'from threading import Thread; t = Thread()' 't.isAlive()' 1000000 loops, best of 3: 0.86 usec per loop To be fair, the 10ms isn't CPU time, and other threads including the spawned one get to run during it. There are also some slightly more complicated ways to get back the .4us in isAlive() if we want. ........ r61101 | raymond.hettinger | 2008-02-28 10:23:48 +0100 (Thu, 28 Feb 2008) | 1 line Add repeat keyword argument to itertools.product(). ........ r61102 | christian.heimes | 2008-02-28 12:18:49 +0100 (Thu, 28 Feb 2008) | 1 line The empty tuple is usually a singleton with a much higher refcnt than 1 ........ r61105 | andrew.kuchling | 2008-02-28 15:03:03 +0100 (Thu, 28 Feb 2008) | 1 line #2169: make generated HTML more valid ........ Modified: python/branches/trunk-math/Demo/tkinter/guido/ShellWindow.py ============================================================================== --- python/branches/trunk-math/Demo/tkinter/guido/ShellWindow.py (original) +++ python/branches/trunk-math/Demo/tkinter/guido/ShellWindow.py Thu Feb 28 21:09:17 2008 @@ -121,11 +121,7 @@ sys.stderr.write('popen2: bad write dup\n') if os.dup(c2pwrite) <> 2: sys.stderr.write('popen2: bad write dup\n') - for i in range(3, MAXFD): - try: - os.close(i) - except: - pass + os.closerange(3, MAXFD) try: os.execvp(prog, args) finally: Modified: python/branches/trunk-math/Doc/Makefile ============================================================================== --- python/branches/trunk-math/Doc/Makefile (original) +++ python/branches/trunk-math/Doc/Makefile Thu Feb 28 21:09:17 2008 @@ -12,7 +12,7 @@ ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_paper_size=$(PAPER) \ $(SPHINXOPTS) . build/$(BUILDER) -.PHONY: help checkout update build html web htmlhelp clean +.PHONY: help checkout update build html web htmlhelp clean coverage help: @echo "Please use \`make ' where is one of" @@ -22,6 +22,7 @@ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview over all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" + @echo " coverage to check documentation coverage for library and C API" checkout: @if [ ! -d tools/sphinx ]; then \ @@ -74,9 +75,13 @@ linkcheck: BUILDER = linkcheck linkcheck: build - @echo "Link check complete; look for any errors in the above output "\ + @echo "Link check complete; look for any errors in the above output " \ "or in build/$(BUILDER)/output.txt" +coverage: BUILDER = coverage +coverage: build + @echo "Coverage finished; see c.txt and python.txt in build/coverage" + clean: -rm -rf build/* -rm -rf tools/sphinx Modified: python/branches/trunk-math/Doc/README.txt ============================================================================== --- python/branches/trunk-math/Doc/README.txt (original) +++ python/branches/trunk-math/Doc/README.txt Thu Feb 28 21:09:17 2008 @@ -59,6 +59,9 @@ deprecated items in the current version. This is meant as a help for the writer of the "What's New" document. + * "coverage", which builds a coverage overview for standard library modules + and C API. + A "make update" updates the Subversion checkouts in `tools/`. Modified: python/branches/trunk-math/Doc/c-api/long.rst ============================================================================== --- python/branches/trunk-math/Doc/c-api/long.rst (original) +++ python/branches/trunk-math/Doc/c-api/long.rst Thu Feb 28 21:09:17 2008 @@ -174,6 +174,6 @@ .. versionadded:: 1.5.2 .. versionchanged:: 2.5 - For values outside 0..LONG_MAX, both signed and unsigned integers are acccepted. + For values outside 0..LONG_MAX, both signed and unsigned integers are accepted. Modified: python/branches/trunk-math/Doc/c-api/objbuffer.rst ============================================================================== --- python/branches/trunk-math/Doc/c-api/objbuffer.rst (original) +++ python/branches/trunk-math/Doc/c-api/objbuffer.rst Thu Feb 28 21:09:17 2008 @@ -8,7 +8,7 @@ .. cfunction:: int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len) - Returns a pointer to a read-only memory location useable as character- based + Returns a pointer to a read-only memory location usable as character-based input. The *obj* argument must support the single-segment character buffer interface. On success, returns ``0``, sets *buffer* to the memory location and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:`TypeError` Modified: python/branches/trunk-math/Doc/c-api/tuple.rst ============================================================================== --- python/branches/trunk-math/Doc/c-api/tuple.rst (original) +++ python/branches/trunk-math/Doc/c-api/tuple.rst Thu Feb 28 21:09:17 2008 @@ -117,7 +117,7 @@ Removed unused third parameter, *last_is_sticky*. -.. cfunction:: int PyMethod_ClearFreeList(void) +.. cfunction:: int PyTuple_ClearFreeList(void) Clear the free list. Return the total number of freed items. Modified: python/branches/trunk-math/Doc/c-api/typeobj.rst ============================================================================== --- python/branches/trunk-math/Doc/c-api/typeobj.rst (original) +++ python/branches/trunk-math/Doc/c-api/typeobj.rst Thu Feb 28 21:09:17 2008 @@ -573,7 +573,7 @@ The :attr:`tp_traverse` pointer is used by the garbage collector to detect reference cycles. A typical implementation of a :attr:`tp_traverse` function simply calls :cfunc:`Py_VISIT` on each of the instance's members that are Python - objects. For exampe, this is function :cfunc:`local_traverse` from the + objects. For example, this is function :cfunc:`local_traverse` from the :mod:`thread` extension module:: static int @@ -1160,7 +1160,7 @@ binaryfunc nb_and; binaryfunc nb_xor; binaryfunc nb_or; - coercion nb_coerce; /* Used by the coerce() funtion */ + coercion nb_coerce; /* Used by the coerce() function */ unaryfunc nb_int; unaryfunc nb_long; unaryfunc nb_float; Modified: python/branches/trunk-math/Doc/conf.py ============================================================================== --- python/branches/trunk-math/Doc/conf.py (original) +++ python/branches/trunk-math/Doc/conf.py Thu Feb 28 21:09:17 2008 @@ -13,7 +13,7 @@ # General configuration # --------------------- -extensions = ['sphinx.addons.refcounting'] +extensions = ['sphinx.ext.refcounting', 'sphinx.ext.coverage'] # General substitutions. project = 'Python' @@ -139,3 +139,39 @@ # Documents to append as an appendix to all manuals. latex_appendices = ['glossary', 'about', 'license', 'copyright'] + +# Options for the coverage checker +# -------------------------------- + +# The coverage checker will ignore all modules/functions/classes whose names +# match any of the following regexes (using re.match). +coverage_ignore_modules = [ + r'[T|t][k|K]', + r'Tix', + r'distutils.*', +] + +coverage_ignore_functions = [ + 'test($|_)', +] + +coverage_ignore_classes = [ +] + +# Glob patterns for C source files for C API coverage, relative to this directory. +coverage_c_path = [ + '../Include/*.h', +] + +# Regexes to find C items in the source files. +coverage_c_regexes = { + 'cfunction': (r'^PyAPI_FUNC\(.*\)\s+([^_][\w_]+)'), + 'data': (r'^PyAPI_DATA\(.*\)\s+([^_][\w_]+)'), + 'macro': (r'^#define ([^_][\w_]+)\(.*\)[\s|\\]'), +} + +# The coverage checker will ignore all C items whose names match these regexes +# (using re.match) -- the keys must be the same as in coverage_c_regexes. +coverage_ignore_c_items = { +# 'cfunction': [...] +} Modified: python/branches/trunk-math/Doc/distutils/builtdist.rst ============================================================================== --- python/branches/trunk-math/Doc/distutils/builtdist.rst (original) +++ python/branches/trunk-math/Doc/distutils/builtdist.rst Thu Feb 28 21:09:17 2008 @@ -195,7 +195,7 @@ | | or --- & :option:`maintainer` and | | | :option:`maintainer_email` | +------------------------------------------+----------------------------------------------+ -| Copyright | :option:`licence` | +| Copyright | :option:`license` | +------------------------------------------+----------------------------------------------+ | Url | :option:`url` | +------------------------------------------+----------------------------------------------+ Modified: python/branches/trunk-math/Doc/distutils/packageindex.rst ============================================================================== --- python/branches/trunk-math/Doc/distutils/packageindex.rst (original) +++ python/branches/trunk-math/Doc/distutils/packageindex.rst Thu Feb 28 21:09:17 2008 @@ -53,13 +53,13 @@ The .pypirc file ================ -The format of the :file:`.pypirc` file is formated as follows:: +The format of the :file:`.pypirc` file is as follows:: [server-login] repository: username: password: -*repository* can be ommitted and defaults to ``http://www.python.org/pypi``. +*repository* can be omitted and defaults to ``http://www.python.org/pypi``. Modified: python/branches/trunk-math/Doc/distutils/setupscript.rst ============================================================================== --- python/branches/trunk-math/Doc/distutils/setupscript.rst (original) +++ python/branches/trunk-math/Doc/distutils/setupscript.rst Thu Feb 28 21:09:17 2008 @@ -185,7 +185,7 @@ same base package), use the :option:`ext_package` keyword argument to :func:`setup`. For example, :: - setup(... + setup(..., ext_package='pkg', ext_modules=[Extension('foo', ['foo.c']), Extension('subpkg.bar', ['bar.c'])], @@ -214,7 +214,7 @@ This warning notwithstanding, options to SWIG can be currently passed like this:: - setup(... + setup(..., ext_modules=[Extension('_foo', ['foo.i'], swig_opts=['-modern', '-I../include'])], py_modules=['foo'], @@ -443,7 +443,7 @@ The :option:`scripts` option simply is a list of files to be handled in this way. From the PyXML setup script:: - setup(... + setup(..., scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val'] ) @@ -501,7 +501,7 @@ :option:`data_files` specifies a sequence of (*directory*, *files*) pairs in the following way:: - setup(... + setup(..., data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']), ('config', ['cfg/data.cfg']), ('/etc/init.d', ['init-script'])] @@ -613,7 +613,7 @@ :option:`classifiers` are specified in a python list:: - setup(... + setup(..., classifiers=[ 'Development Status :: 4 - Beta', 'Environment :: Console', Modified: python/branches/trunk-math/Doc/howto/advocacy.rst ============================================================================== --- python/branches/trunk-math/Doc/howto/advocacy.rst (original) +++ python/branches/trunk-math/Doc/howto/advocacy.rst Thu Feb 28 21:09:17 2008 @@ -160,7 +160,7 @@ don't merge cleanly into the overall design scheme (thus, some fans of Classic C maintain that ANSI C is no longer compact). - (From http://www.catb.org/ esr/jargon/html/C/compact.html) + (From http://www.catb.org/~esr/jargon/html/C/compact.html) In this sense of the word, Python is quite compact, because the language has just a few ideas, which are used in lots of places. Take namespaces, for @@ -174,14 +174,14 @@ This simplicity arises from Python's development history. The language syntax derives from different sources; ABC, a relatively obscure teaching language, is one primary influence, and Modula-3 is another. (For more information about ABC -and Modula-3, consult their respective Web sites at http://www.cwi.nl/ -steven/abc/ and http://www.m3.org.) Other features have come from C, Icon, +and Modula-3, consult their respective Web sites at http://www.cwi.nl/~steven/abc/ +and http://www.m3.org.) Other features have come from C, Icon, Algol-68, and even Perl. Python hasn't really innovated very much, but instead has tried to keep the language small and easy to learn, building on ideas that have been tried in other languages and found useful. Simplicity is a virtue that should not be underestimated. It lets you learn the -language more quickly, and then rapidly write code, code that often works the +language more quickly, and then rapidly write code -- code that often works the first time you run it. @@ -266,7 +266,7 @@ They're practically nonexistent. Consult the :file:`Misc/COPYRIGHT` file in the source distribution, or the section :ref:`history-and-license` for the full -language, but it boils down to three conditions. +language, but it boils down to three conditions: * You have to leave the copyright notice on the software; if you don't include the source code in a product, you have to put the copyright notice in the @@ -276,7 +276,7 @@ product in any way. * If something goes wrong, you can't sue for damages. Practically all software - licences contain this condition. + licenses contain this condition. Notice that you don't have to provide source code for anything that contains Python or is built with it. Also, the Python interpreter and accompanying Modified: python/branches/trunk-math/Doc/howto/doanddont.rst ============================================================================== --- python/branches/trunk-math/Doc/howto/doanddont.rst (original) +++ python/branches/trunk-math/Doc/howto/doanddont.rst Thu Feb 28 21:09:17 2008 @@ -114,7 +114,7 @@ This is a "don't" which is much weaker then the previous "don't"s but is still something you should not do if you don't have good reasons to do that. The reason it is usually bad idea is because you suddenly have an object which lives -in two seperate namespaces. When the binding in one namespace changes, the +in two separate namespaces. When the binding in one namespace changes, the binding in the other will not, so there will be a discrepancy between them. This happens when, for example, one module is reloaded, or changes the definition of a function at runtime. Modified: python/branches/trunk-math/Doc/howto/functional.rst ============================================================================== --- python/branches/trunk-math/Doc/howto/functional.rst (original) +++ python/branches/trunk-math/Doc/howto/functional.rst Thu Feb 28 21:09:17 2008 @@ -905,7 +905,7 @@ itertools.izip(['a', 'b', 'c'], (1, 2, 3)) => ('a', 1), ('b', 2), ('c', 3) -It's similiar to the built-in :func:`zip` function, but doesn't construct an +It's similar to the built-in :func:`zip` function, but doesn't construct an in-memory list and exhaust all the input iterators before returning; instead tuples are constructed and returned only if they're requested. (The technical term for this behaviour is `lazy evaluation Modified: python/branches/trunk-math/Doc/howto/regex.rst ============================================================================== --- python/branches/trunk-math/Doc/howto/regex.rst (original) +++ python/branches/trunk-math/Doc/howto/regex.rst Thu Feb 28 21:09:17 2008 @@ -203,7 +203,7 @@ | | | ``bc``. | +------+-----------+---------------------------------+ | 6 | ``abcb`` | Try ``b`` again. This time | -| | | but the character at the | +| | | the character at the | | | | current position is ``'b'``, so | | | | it succeeds. | +------+-----------+---------------------------------+ Modified: python/branches/trunk-math/Doc/howto/sockets.rst ============================================================================== --- python/branches/trunk-math/Doc/howto/sockets.rst (original) +++ python/branches/trunk-math/Doc/howto/sockets.rst Thu Feb 28 21:09:17 2008 @@ -357,7 +357,7 @@ reason to do otherwise. In return, you will get three lists. They have the sockets that are actually -readable, writable and in error. Each of these lists is a subset (possbily +readable, writable and in error. Each of these lists is a subset (possibly empty) of the corresponding list you passed in. And if you put a socket in more than one input list, it will only be (at most) in one output list. @@ -371,7 +371,7 @@ If you have a "server" socket, put it in the potential_readers list. If it comes out in the readable list, your ``accept`` will (almost certainly) work. If you have created a new socket to ``connect`` to someone else, put it in the -ptoential_writers list. If it shows up in the writable list, you have a decent +potential_writers list. If it shows up in the writable list, you have a decent chance that it has connected. One very nasty problem with ``select``: if somewhere in those input lists of Modified: python/branches/trunk-math/Doc/library/basehttpserver.rst ============================================================================== --- python/branches/trunk-math/Doc/library/basehttpserver.rst (original) +++ python/branches/trunk-math/Doc/library/basehttpserver.rst Thu Feb 28 21:09:17 2008 @@ -122,6 +122,15 @@ class variable. +.. attribute:: BaseHTTPRequestHandler.error_content_type + + Specifies the Content-Type HTTP header of error responses sent to the client. + The default value is ``'text/html'``. + + .. versionadded:: 2.6 + Previously, the content type was always ``'text/html'``. + + .. attribute:: BaseHTTPRequestHandler.protocol_version This specifies the HTTP protocol version used in responses. If set to Modified: python/branches/trunk-math/Doc/library/codecs.rst ============================================================================== --- python/branches/trunk-math/Doc/library/codecs.rst (original) +++ python/branches/trunk-math/Doc/library/codecs.rst Thu Feb 28 21:09:17 2008 @@ -206,7 +206,8 @@ .. function:: open(filename, mode[, encoding[, errors[, buffering]]]) Open an encoded file using the given *mode* and return a wrapped version - providing transparent encoding/decoding. + providing transparent encoding/decoding. The default file mode is ``'r'`` + meaning to open the file in read mode. .. note:: @@ -214,6 +215,13 @@ i.e. Unicode objects for most built-in codecs. Output is also codec-dependent and will usually be Unicode as well. + .. note:: + + Files are always opened in binary mode, even if no binary mode was + specified. This is done to avoid data loss due to encodings using 8-bit + values. This means that no automatic conversion of ``'\n'`` is done + on reading and writing. + *encoding* specifies the encoding which is to be used for the file. *errors* may be given to define the error handling. It defaults to ``'strict'`` @@ -993,7 +1001,7 @@ +-----------------+--------------------------------+--------------------------------+ | iso8859_3 | iso-8859-3, latin3, L3 | Esperanto, Maltese | +-----------------+--------------------------------+--------------------------------+ -| iso8859_4 | iso-8859-4, latin4, L4 | Baltic languagues | +| iso8859_4 | iso-8859-4, latin4, L4 | Baltic languages | +-----------------+--------------------------------+--------------------------------+ | iso8859_5 | iso-8859-5, cyrillic | Bulgarian, Byelorussian, | | | | Macedonian, Russian, Serbian | Modified: python/branches/trunk-math/Doc/library/collections.rst ============================================================================== --- python/branches/trunk-math/Doc/library/collections.rst (original) +++ python/branches/trunk-math/Doc/library/collections.rst Thu Feb 28 21:09:17 2008 @@ -470,7 +470,7 @@ .. function:: namedtuple(typename, fieldnames, [verbose]) Returns a new tuple subclass named *typename*. The new subclass is used to - create tuple-like objects that have fields accessable by attribute lookup as + create tuple-like objects that have fields accessible by attribute lookup as well as being indexable and iterable. Instances of the subclass also have a helpful docstring (with typename and fieldnames) and a helpful :meth:`__repr__` method which lists the tuple contents in a ``name=value`` format. @@ -536,7 +536,7 @@ >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) - >>> p.x + p.y # fields also accessable by name + >>> p.x + p.y # fields also accessible by name 33 >>> p # readable __repr__ with a name=value style Point(x=11, y=22) Modified: python/branches/trunk-math/Doc/library/configparser.rst ============================================================================== --- python/branches/trunk-math/Doc/library/configparser.rst (original) +++ python/branches/trunk-math/Doc/library/configparser.rst Thu Feb 28 21:09:17 2008 @@ -187,8 +187,9 @@ .. method:: RawConfigParser.add_section(section) Add a section named *section* to the instance. If a section by the given name - already exists, :exc:`DuplicateSectionError` is raised. - + already exists, :exc:`DuplicateSectionError` is raised. If the name + ``DEFAULT`` (or any of it's case-insensitive variants) is passed, + :exc:`ValueError` is raised. .. method:: RawConfigParser.has_section(section) Modified: python/branches/trunk-math/Doc/library/decimal.rst ============================================================================== --- python/branches/trunk-math/Doc/library/decimal.rst (original) +++ python/branches/trunk-math/Doc/library/decimal.rst Thu Feb 28 21:09:17 2008 @@ -1609,7 +1609,7 @@ original's two-place significance. If an application does not care about tracking significance, it is easy to -remove the exponent and trailing zeroes, losing signficance, but keeping the +remove the exponent and trailing zeroes, losing significance, but keeping the value unchanged:: >>> def remove_exponent(d): Modified: python/branches/trunk-math/Doc/library/difflib.rst ============================================================================== --- python/branches/trunk-math/Doc/library/difflib.rst (original) +++ python/branches/trunk-math/Doc/library/difflib.rst Thu Feb 28 21:09:17 2008 @@ -148,7 +148,27 @@ expressed in the format returned by :func:`time.ctime`. If not specified, the strings default to blanks. - :file:`Tools/scripts/diff.py` is a command-line front-end for this function. + :: + + >>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] + >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] + >>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'): + ... sys.stdout.write(line) + *** before.py + --- after.py + *************** + *** 1,4 **** + ! bacon + ! eggs + ! ham + guido + --- 1,4 ---- + ! python + ! eggy + ! hamster + guido + + See :ref:`difflib-interface` for a more detailed example. .. versionadded:: 2.3 @@ -265,7 +285,25 @@ expressed in the format returned by :func:`time.ctime`. If not specified, the strings default to blanks. - :file:`Tools/scripts/diff.py` is a command-line front-end for this function. + :: + + + >>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] + >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] + >>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'): + ... sys.stdout.write(line) + --- before.py + +++ after.py + @@ -1,4 +1,4 @@ + -bacon + -eggs + -ham + +python + +eggy + +hamster + guido + + See :ref:`difflib-interface` for a more detailed example. .. versionadded:: 2.3 @@ -649,3 +687,75 @@ ? ++++ ^ ^ + 5. Flat is better than nested. + +.. _difflib-interface: + +A command-line interface to difflib +----------------------------------- + +This example shows how to use difflib to create a ``diff``-like utility. +It is also contained in the Python source distribution, as +:file:`Tools/scripts/diff.py`. + +:: + + """ Command line interface to difflib.py providing diffs in four formats: + + * ndiff: lists every line and highlights interline changes. + * context: highlights clusters of changes in a before/after format. + * unified: highlights clusters of changes in an inline format. + * html: generates side by side comparison with change highlights. + + """ + + import sys, os, time, difflib, optparse + + def main(): + # Configure the option parser + usage = "usage: %prog [options] fromfile tofile" + parser = optparse.OptionParser(usage) + parser.add_option("-c", action="store_true", default=False, + help='Produce a context format diff (default)') + parser.add_option("-u", action="store_true", default=False, + help='Produce a unified format diff') + hlp = 'Produce HTML side by side diff (can use -c and -l in conjunction)' + parser.add_option("-m", action="store_true", default=False, help=hlp) + parser.add_option("-n", action="store_true", default=False, + help='Produce a ndiff format diff') + parser.add_option("-l", "--lines", type="int", default=3, + help='Set number of context lines (default 3)') + (options, args) = parser.parse_args() + + if len(args) == 0: + parser.print_help() + sys.exit(1) + if len(args) != 2: + parser.error("need to specify both a fromfile and tofile") + + n = options.lines + fromfile, tofile = args # as specified in the usage string + + # we're passing these as arguments to the diff function + fromdate = time.ctime(os.stat(fromfile).st_mtime) + todate = time.ctime(os.stat(tofile).st_mtime) + fromlines = open(fromfile, 'U').readlines() + tolines = open(tofile, 'U').readlines() + + if options.u: + diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, + fromdate, todate, n=n) + elif options.n: + diff = difflib.ndiff(fromlines, tolines) + elif options.m: + diff = difflib.HtmlDiff().make_file(fromlines, tolines, fromfile, + tofile, context=options.c, + numlines=n) + else: + diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, + fromdate, todate, n=n) + + # we're using writelines because diff is a generator + sys.stdout.writelines(diff) + + if __name__ == '__main__': + main() Modified: python/branches/trunk-math/Doc/library/dis.rst ============================================================================== --- python/branches/trunk-math/Doc/library/dis.rst (original) +++ python/branches/trunk-math/Doc/library/dis.rst Thu Feb 28 21:09:17 2008 @@ -544,7 +544,7 @@ .. opcode:: STORE_NAME (namei) Implements ``name = TOS``. *namei* is the index of *name* in the attribute - :attr:`co_names` of the code object. The compiler tries to use ``STORE_LOCAL`` + :attr:`co_names` of the code object. The compiler tries to use ``STORE_FAST`` or ``STORE_GLOBAL`` if possible. Modified: python/branches/trunk-math/Doc/library/inspect.rst ============================================================================== --- python/branches/trunk-math/Doc/library/inspect.rst (original) +++ python/branches/trunk-math/Doc/library/inspect.rst Thu Feb 28 21:09:17 2008 @@ -28,7 +28,7 @@ ----------------- The :func:`getmembers` function retrieves the members of an object such as a -class or module. The eleven functions whose names begin with "is" are mainly +class or module. The fifteen functions whose names begin with "is" are mainly provided as convenient choices for the second argument to :func:`getmembers`. They also help you determine when you can expect to find the following special attributes: @@ -81,6 +81,35 @@ +-----------+-----------------+---------------------------+-------+ | | func_name | (same as __name__) | | +-----------+-----------------+---------------------------+-------+ +| generator | __iter__ | defined to support | | +| | | iteration over container | | ++-----------+-----------------+---------------------------+-------+ +| | close | raises new GeneratorExit | | +| | | exception inside the | | +| | | generator to terminate | | +| | | the iteration | | ++-----------+-----------------+---------------------------+-------+ +| | gi_code | code object | | ++-----------+-----------------+---------------------------+-------+ +| | gi_frame | frame object or possibly | | +| | | None once the generator | | +| | | has been exhausted | | ++-----------+-----------------+---------------------------+-------+ +| | gi_running | set to 1 when generator | | +| | | is executing, 0 otherwise | | ++-----------+-----------------+---------------------------+-------+ +| | next | return the next item from | | +| | | the container | | ++-----------+-----------------+---------------------------+-------+ +| | send | resumes the generator and | | +| | | "sends" a value that | | +| | | becomes the result of the | | +| | | current yield-expression | | ++-----------+-----------------+---------------------------+-------+ +| | throw | used to raise an | | +| | | exception inside the | | +| | | generator | | ++-----------+-----------------+---------------------------+-------+ | traceback | tb_frame | frame object at this | | | | | level | | +-----------+-----------------+---------------------------+-------+ @@ -246,6 +275,13 @@ Return true if the object is a Python function or unnamed (:term:`lambda`) function. +.. function:: isgeneratorfunction(object) + + Return true if the object is a Python generator function. + +.. function:: isgenerator(object) + + Return true if the object is a generator. .. function:: istraceback(object) Modified: python/branches/trunk-math/Doc/library/itertools.rst ============================================================================== --- python/branches/trunk-math/Doc/library/itertools.rst (original) +++ python/branches/trunk-math/Doc/library/itertools.rst Thu Feb 28 21:09:17 2008 @@ -76,6 +76,44 @@ yield element +.. function:: combinations(iterable, r) + + Return successive *r* length combinations of elements in the *iterable*. + + Combinations are emitted in a lexicographic sort order. So, if the + input *iterable* is sorted, the combination tuples will be produced + in sorted order. + + Elements are treated as unique based on their position, not on their + value. So if the input elements are unique, there will be no repeat + values within a single combination. + + Each result tuple is ordered to match the input order. So, every + combination is a subsequence of the input *iterable*. + + Example: ``combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)`` + + Equivalent to:: + + def combinations(iterable, r): + pool = tuple(iterable) + n = len(pool) + assert 0 <= r <= n + vec = range(r) + yield tuple(pool[i] for i in vec) + while 1: + for i in reversed(range(r)): + if vec[i] != i + n - r: + break + else: + return + vec[i] += 1 + for j in range(i+1, r): + vec[j] = vec[j-1] + 1 + yield tuple(pool[i] for i in vec) + + .. versionadded:: 2.6 + .. function:: count([n]) Make an iterator that returns consecutive integers starting with *n*. If not @@ -302,6 +340,36 @@ .. versionadded:: 2.6 +.. function:: product(*iterables[, repeat]) + + Cartesian product of input iterables. + + Equivalent to nested for-loops in a generator expression. For example, + ``product(A, B)`` returns the same as ``((x,y) for x in A for y in B)``. + + The leftmost iterators are in the outermost for-loop, so the output tuples + cycle in a manner similar to an odometer (with the rightmost element + changing on every iteration). This results in a lexicographic ordering + so that if the inputs iterables are sorted, the product tuples are emitted + in sorted order. + + To compute the product of an iterable with itself, specify the number of + repetitions with the optional *repeat* keyword argument. For example, + ``product(A, repeat=4)`` means the same as ``product(A, A, A, A)``. + + Equivalent to the following except that the actual implementation does not + build-up intermediate results in memory:: + + def product(*args, **kwds): + pools = map(tuple, args) * kwds.get('repeat', 1) + if pools: + result = [[]] + for pool in pools: + result = [x+[y] for x in result for y in pool] + for prod in result: + yield tuple(prod) + + .. versionadded:: 2.6 .. function:: repeat(object[, times]) @@ -536,3 +604,9 @@ pending -= 1 nexts = cycle(islice(nexts, pending)) + def powerset(iterable): + "powerset('ab') --> set([]), set(['b']), set(['a']), set(['a', 'b'])" + skip = object() + for t in product(*izip(repeat(skip), iterable)): + yield set(e for e in t if e is not skip) + Modified: python/branches/trunk-math/Doc/library/logging.rst ============================================================================== --- python/branches/trunk-math/Doc/library/logging.rst (original) +++ python/branches/trunk-math/Doc/library/logging.rst Thu Feb 28 21:09:17 2008 @@ -43,7 +43,7 @@ It is, of course, possible to log messages with different verbosity levels or to different destinations. Support for writing log messages to files, HTTP GET/POST locations, email via SMTP, generic sockets, or OS-specific logging -mechnisms are all supported by the standard module. You can also create your +mechanisms are all supported by the standard module. You can also create your own log destination class if you have special requirements not met by any of the built-in classes. @@ -245,8 +245,8 @@ little more verbose for logging messages than using the log level convenience methods listed above, but this is how to log at custom log levels. -:func:`getLogger` returns a reference to a logger instance with a name of name -if a name is provided, or root if not. The names are period-separated +:func:`getLogger` returns a reference to a logger instance with the specified +if it it is provided, or ``root`` if not. The names are period-separated hierarchical structures. Multiple calls to :func:`getLogger` with the same name will return a reference to the same logger object. Loggers that are further down in the hierarchical list are children of loggers higher up in the list. @@ -267,7 +267,7 @@ with an :func:`addHandler` method. As an example scenario, an application may want to send all log messages to a log file, all log messages of error or higher to stdout, and all messages of critical to an email address. This scenario -requires three individual handlers where each hander is responsible for sending +requires three individual handlers where each handler is responsible for sending messages of a specific severity to a specific location. The standard library includes quite a few handler types; this tutorial uses only @@ -298,7 +298,7 @@ ^^^^^^^^^^ Formatter objects configure the final order, structure, and contents of the log -message. Unlike the base logging.Handler class, application code may +message. Unlike the base :class:`logging.Handler` class, application code may instantiate formatter classes, although you could likely subclass the formatter if your application needs special behavior. The constructor takes two optional arguments: a message format string and a date format string. If there is no Modified: python/branches/trunk-math/Doc/library/mailbox.rst ============================================================================== --- python/branches/trunk-math/Doc/library/mailbox.rst (original) +++ python/branches/trunk-math/Doc/library/mailbox.rst Thu Feb 28 21:09:17 2008 @@ -433,7 +433,7 @@ original format, which is sometimes referred to as :dfn:`mboxo`. This means that the :mailheader:`Content-Length` header, if present, is ignored and that any occurrences of "From " at the beginning of a line in a message body are -transformed to ">From " when storing the message, although occurences of ">From +transformed to ">From " when storing the message, although occurrences of ">From " are not transformed to "From " when reading the message. Some :class:`Mailbox` methods implemented by :class:`mbox` deserve special @@ -581,7 +581,7 @@ .. method:: MH.close() - :class:`MH` instances do not keep any open files, so this method is equivelant + :class:`MH` instances do not keep any open files, so this method is equivalent to :meth:`unlock`. Modified: python/branches/trunk-math/Doc/library/modulefinder.rst ============================================================================== --- python/branches/trunk-math/Doc/library/modulefinder.rst (original) +++ python/branches/trunk-math/Doc/library/modulefinder.rst Thu Feb 28 21:09:17 2008 @@ -50,3 +50,65 @@ Analyze the contents of the *pathname* file, which must contain Python code. +.. attribute:: ModuleFinder.modules + + A dictionary mapping module names to modules. See :ref:`modulefinder-example` + + +.. _modulefinder-example: + +Example usage of :class:`ModuleFinder` +-------------------------------------- + +The script that is going to get analyzed later on (bacon.py):: + + import re, itertools + + try: + import baconhameggs + except ImportError: + pass + + try: + import guido.python.ham + except ImportError: + pass + + +The script that will output the report of bacon.py:: + + from modulefinder import ModuleFinder + + finder = ModuleFinder() + finder.run_script('bacon.py') + + print 'Loaded modules:' + for name, mod in finder.modules.iteritems(): + print '%s: ' % name, + print ','.join(mod.globalnames.keys()[:3]) + + print '-'*50 + print 'Modules not imported:' + print '\n'.join(finder.badmodules.iterkeys()) + +Sample output (may vary depending on the architecture):: + + Loaded modules: + _types: + copy_reg: _inverted_registry,_slotnames,__all__ + sre_compile: isstring,_sre,_optimize_unicode + _sre: + sre_constants: REPEAT_ONE,makedict,AT_END_LINE + sys: + re: __module__,finditer,_expand + itertools: + __main__: re,itertools,baconhameggs + sre_parse: __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE + array: + types: __module__,IntType,TypeType + --------------------------------------------------- + Modules not imported: + guido.python.ham + baconhameggs + + Modified: python/branches/trunk-math/Doc/library/msilib.rst ============================================================================== --- python/branches/trunk-math/Doc/library/msilib.rst (original) +++ python/branches/trunk-math/Doc/library/msilib.rst Thu Feb 28 21:09:17 2008 @@ -67,7 +67,7 @@ .. function:: init_database(name, schema, ProductName, ProductCode, ProductVersion, Manufacturer) - Create and return a new database *name*, initialize it with *schema*, and set + Create and return a new database *name*, initialize it with *schema*, and set the properties *ProductName*, *ProductCode*, *ProductVersion*, and *Manufacturer*. @@ -79,11 +79,17 @@ function returns. -.. function:: add_data(database, records) +.. function:: add_data(database, table, records) - Add all *records* to *database*. *records* should be a list of tuples, each one - containing all fields of a record according to the schema of the table. For - optional fields, ``None`` can be passed. + Add all *records* to the table named *table* in *database*. + + The *table* argument must be one of the predefined tables in the MSI schema, + e.g. ``'Feature'``, ``'File'``, ``'Component'``, ``'Dialog'``, ``'Control'``, + etc. + + *records* should be a list of tuples, each one containing all fields of a + record according to the schema of the table. For optional fields, + ``None`` can be passed. Field values can be int or long numbers, strings, or instances of the Binary class. Modified: python/branches/trunk-math/Doc/library/operator.rst ============================================================================== --- python/branches/trunk-math/Doc/library/operator.rst (original) +++ python/branches/trunk-math/Doc/library/operator.rst Thu Feb 28 21:09:17 2008 @@ -499,15 +499,21 @@ Return a callable object that fetches *attr* from its operand. If more than one attribute is requested, returns a tuple of attributes. After, - ``f=attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After, - ``f=attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name, + ``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After, + ``f = attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name, b.date)``. + The attribute names can also contain dots; after ``f = attrgetter('date.month')``, + the call ``f(b)`` returns ``b.date.month``. + .. versionadded:: 2.4 .. versionchanged:: 2.5 Added support for multiple attributes. + .. versionchanged:: 2.6 + Added support for dotted attributes. + .. function:: itemgetter(item[, args...]) @@ -532,6 +538,17 @@ [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)] +.. function:: methodcaller(name[, args...]) + + Return a callable object that calls the method *name* on its operand. If + additional arguments and/or keyword arguments are given, they will be given + to the method as well. After ``f = methodcaller('name')``, the call ``f(b)`` + returns ``b.name()``. After ``f = methodcaller('name', 'foo', bar=1)``, the + call ``f(b)`` returns ``b.name('foo', bar=1)``. + + .. versionadded:: 2.6 + + .. _operator-map: Mapping Operators to Functions Modified: python/branches/trunk-math/Doc/library/optparse.rst ============================================================================== --- python/branches/trunk-math/Doc/library/optparse.rst (original) +++ python/branches/trunk-math/Doc/library/optparse.rst Thu Feb 28 21:09:17 2008 @@ -1633,7 +1633,7 @@ value.append(arg) del rargs[0] - setattr(parser.values, option.dest, value) + setattr(parser.values, option.dest, value) [...] parser.add_option("-c", "--callback", Modified: python/branches/trunk-math/Doc/library/pickle.rst ============================================================================== --- python/branches/trunk-math/Doc/library/pickle.rst (original) +++ python/branches/trunk-math/Doc/library/pickle.rst Thu Feb 28 21:09:17 2008 @@ -463,6 +463,11 @@ Pickling and unpickling extension types ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. index:: + single: __reduce__() (pickle protocol) + single: __reduce_ex__() (pickle protocol) + single: __safe_for_unpickling__ (pickle protocol) + When the :class:`Pickler` encounters an object of a type it knows nothing about --- such as an extension type --- it looks in two places for a hint of how to pickle it. One alternative is for the object to implement a :meth:`__reduce__` @@ -541,6 +546,10 @@ Pickling and unpickling external objects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. index:: + single: persistent_id (pickle protocol) + single: persistent_load (pickle protocol) + For the benefit of object persistence, the :mod:`pickle` module supports the notion of a reference to an object outside the pickled data stream. Such objects are referenced by a "persistent id", which is just an arbitrary string @@ -630,6 +639,10 @@ Subclassing Unpicklers ---------------------- +.. index:: + single: load_global() (pickle protocol) + single: find_global() (pickle protocol) + By default, unpickling will import any class that it finds in the pickle data. You can control exactly what gets unpickled and what gets called by customizing your unpickler. Unfortunately, exactly how you do this is different depending Modified: python/branches/trunk-math/Doc/library/platform.rst ============================================================================== --- python/branches/trunk-math/Doc/library/platform.rst (original) +++ python/branches/trunk-math/Doc/library/platform.rst Thu Feb 28 21:09:17 2008 @@ -245,7 +245,7 @@ version)`` which default to the given parameters in case the lookup fails. Note that this function has intimate knowledge of how different libc versions - add symbols to the executable is probably only useable for executables compiled + add symbols to the executable is probably only usable for executables compiled using :program:`gcc`. The file is read and scanned in chunks of *chunksize* bytes. Modified: python/branches/trunk-math/Doc/library/profile.rst ============================================================================== --- python/branches/trunk-math/Doc/library/profile.rst (original) +++ python/branches/trunk-math/Doc/library/profile.rst Thu Feb 28 21:09:17 2008 @@ -531,7 +531,7 @@ non-parenthesized number repeats the cumulative time spent in the function at the right. - * With :mod:`cProfile`, each caller is preceeded by three numbers: the number of + * With :mod:`cProfile`, each caller is preceded by three numbers: the number of times this specific call was made, and the total and cumulative times spent in the current function while it was invoked by this specific caller. Modified: python/branches/trunk-math/Doc/library/random.rst ============================================================================== --- python/branches/trunk-math/Doc/library/random.rst (original) +++ python/branches/trunk-math/Doc/library/random.rst Thu Feb 28 21:09:17 2008 @@ -98,7 +98,7 @@ Change the internal state to one different from and likely far away from the current state. *n* is a non-negative integer which is used to scramble the current state vector. This is most useful in multi-threaded programs, in - conjuction with multiple instances of the :class:`Random` class: + conjunction with multiple instances of the :class:`Random` class: :meth:`setstate` or :meth:`seed` can be used to force all instances into the same internal state, and then :meth:`jumpahead` can be used to force the instances' states far apart. Modified: python/branches/trunk-math/Doc/library/re.rst ============================================================================== --- python/branches/trunk-math/Doc/library/re.rst (original) +++ python/branches/trunk-math/Doc/library/re.rst Thu Feb 28 21:09:17 2008 @@ -1102,7 +1102,7 @@ 'Heather Albrecht 548.326.4584 919 Park Place'] Finally, split each entry into a list with first name, last name, telephone -number, and address. We use the ``maxsplit`` paramater of :func:`split` +number, and address. We use the ``maxsplit`` parameter of :func:`split` because the address has spaces, our splitting pattern, in it:: >>> [re.split(":? ", entry, 3) for entry in entries] @@ -1112,7 +1112,7 @@ ['Heather', 'Albrecht', '548.326.4584', '919 Park Place']] The ``:?`` pattern matches the colon after the last name, so that it does not -occur in the result list. With a ``maxsplit`` of ``4``, we could seperate the +occur in the result list. With a ``maxsplit`` of ``4``, we could separate the house number from the street name:: >>> [re.split(":? ", entry, 4) for entry in entries] @@ -1144,7 +1144,7 @@ Finding all Adverbs ^^^^^^^^^^^^^^^^^^^ -:func:`findall` matches *all* occurences of a pattern, not just the first +:func:`findall` matches *all* occurrences of a pattern, not just the first one as :func:`search` does. For example, if one was a writer and wanted to find all of the adverbs in some text, he or she might use :func:`findall` in the following manner:: Modified: python/branches/trunk-math/Doc/library/signal.rst ============================================================================== --- python/branches/trunk-math/Doc/library/signal.rst (original) +++ python/branches/trunk-math/Doc/library/signal.rst Thu Feb 28 21:09:17 2008 @@ -124,6 +124,21 @@ exception to be raised. + +.. function:: siginterrupt(signalnum, flag) + + Change system call restart behaviour: if *flag* is :const:`False`, system calls + will be restarted when interrupted by signal *signalnum*, else system calls will + be interrupted. Returns nothing. Availability: Unix, Mac (see the man page + :manpage:`siginterrupt(3)` for further information). + + Note that installing a signal handler with :func:`signal` will reset the restart + behaviour to interruptible by implicitly calling siginterrupt with a true *flag* + value for the given signal. + + .. versionadded:: 2.6 + + .. function:: signal(signalnum, handler) Set the handler for signal *signalnum* to the function *handler*. *handler* can Modified: python/branches/trunk-math/Doc/library/simplexmlrpcserver.rst ============================================================================== --- python/branches/trunk-math/Doc/library/simplexmlrpcserver.rst (original) +++ python/branches/trunk-math/Doc/library/simplexmlrpcserver.rst Thu Feb 28 21:09:17 2008 @@ -120,7 +120,7 @@ Registers the XML-RPC multicall function system.multicall. -.. attribute:: SimpleXMLRPCServer.rpc_paths +.. attribute:: SimpleXMLRPCRequestHandler.rpc_paths An attribute value that must be a tuple listing valid path portions of the URL for receiving XML-RPC requests. Requests posted to other paths will result in a @@ -136,9 +136,15 @@ Server code:: from SimpleXMLRPCServer import SimpleXMLRPCServer + from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler + + # Restrict to a particular path. + class RequestHandler(SimpleXMLRPCRequestHandler): + rpc_paths = ('/RPC2',) # Create server - server = SimpleXMLRPCServer(("localhost", 8000)) + server = SimpleXMLRPCServer(("localhost", 8000), + requestHandler=RequestHandler) server.register_introspection_functions() # Register pow() function; this will use the value of Modified: python/branches/trunk-math/Doc/library/socket.rst ============================================================================== --- python/branches/trunk-math/Doc/library/socket.rst (original) +++ python/branches/trunk-math/Doc/library/socket.rst Thu Feb 28 21:09:17 2008 @@ -929,5 +929,5 @@ # receive a package print s.recvfrom(65565) - # disabled promiscous mode + # disabled promiscuous mode s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) Modified: python/branches/trunk-math/Doc/library/tokenize.rst ============================================================================== --- python/branches/trunk-math/Doc/library/tokenize.rst (original) +++ python/branches/trunk-math/Doc/library/tokenize.rst Thu Feb 28 21:09:17 2008 @@ -18,7 +18,7 @@ .. function:: generate_tokens(readline) - The :func:`generate_tokens` generator requires one argment, *readline*, which + The :func:`generate_tokens` generator requires one argument, *readline*, which must be a callable object which provides the same interface as the :meth:`readline` method of built-in file objects (see section :ref:`bltin-file-objects`). Each call to the function should return one line of Modified: python/branches/trunk-math/Doc/library/trace.rst ============================================================================== --- python/branches/trunk-math/Doc/library/trace.rst (original) +++ python/branches/trunk-math/Doc/library/trace.rst Thu Feb 28 21:09:17 2008 @@ -80,7 +80,7 @@ --------------------- -.. class:: Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None]]]]]]]]) +.. class:: Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None[, timing=False]]]]]]]]]) Create an object to trace execution of a single statement or expression. All parameters are optional. *count* enables counting of line numbers. *trace* @@ -89,7 +89,8 @@ *ignoremods* is a list of modules or packages to ignore. *ignoredirs* is a list of directories whose modules or packages should be ignored. *infile* is the file from which to read stored count information. *outfile* is a file in which - to write updated count information. + to write updated count information. *timing* enables a timestamp relative + to when tracing was started to be displayed. .. method:: Trace.run(cmd) Modified: python/branches/trunk-math/Doc/library/userdict.rst ============================================================================== --- python/branches/trunk-math/Doc/library/userdict.rst (original) +++ python/branches/trunk-math/Doc/library/userdict.rst Thu Feb 28 21:09:17 2008 @@ -11,7 +11,7 @@ simplifies writing classes that need to be substitutable for dictionaries (such as the shelve module). -This also module defines a class, :class:`UserDict`, that acts as a wrapper +This module also defines a class, :class:`UserDict`, that acts as a wrapper around dictionary objects. The need for this class has been largely supplanted by the ability to subclass directly from :class:`dict` (a feature that became available starting with Python version 2.2). Prior to the introduction of Modified: python/branches/trunk-math/Doc/library/weakref.rst ============================================================================== --- python/branches/trunk-math/Doc/library/weakref.rst (original) +++ python/branches/trunk-math/Doc/library/weakref.rst Thu Feb 28 21:09:17 2008 @@ -63,7 +63,7 @@ class Dict(dict): pass - obj = Dict(red=1, green=2, blue=3) # this object is weak referencable + obj = Dict(red=1, green=2, blue=3) # this object is weak referenceable Extension types can easily be made to support weak references; see :ref:`weakref-support`. Modified: python/branches/trunk-math/Doc/library/xml.dom.rst ============================================================================== --- python/branches/trunk-math/Doc/library/xml.dom.rst (original) +++ python/branches/trunk-math/Doc/library/xml.dom.rst Thu Feb 28 21:09:17 2008 @@ -652,8 +652,8 @@ .. method:: Element.removeAttribute(name) - Remove an attribute by name. No exception is raised if there is no matching - attribute. + Remove an attribute by name. If there is no matching attribute, a + :exc:`NotFoundErr` is raised. .. method:: Element.removeAttributeNode(oldAttr) Modified: python/branches/trunk-math/Doc/library/xml.etree.elementtree.rst ============================================================================== --- python/branches/trunk-math/Doc/library/xml.etree.elementtree.rst (original) +++ python/branches/trunk-math/Doc/library/xml.etree.elementtree.rst Thu Feb 28 21:09:17 2008 @@ -421,7 +421,7 @@ .. method:: TreeBuilder.close() - Flushes the parser buffers, and returns the toplevel documen element. Returns an + Flushes the parser buffers, and returns the toplevel document element. Returns an Element instance. Modified: python/branches/trunk-math/Doc/library/xmlrpclib.rst ============================================================================== --- python/branches/trunk-math/Doc/library/xmlrpclib.rst (original) +++ python/branches/trunk-math/Doc/library/xmlrpclib.rst Thu Feb 28 21:09:17 2008 @@ -34,10 +34,7 @@ all clients and servers; see http://ontosys.com/xml-rpc/extensions.php for a description. The *use_datetime* flag can be used to cause date/time values to be presented as :class:`datetime.datetime` objects; this is false by default. - :class:`datetime.datetime`, :class:`datetime.date` and :class:`datetime.time` - objects may be passed to calls. :class:`datetime.date` objects are converted - with a time of "00:00:00". :class:`datetime.time` objects are converted using - today's date. + :class:`datetime.datetime` objects may be passed to calls. Both the HTTP and HTTPS transports support the URL syntax extension for HTTP Basic Authentication: ``http://user:pass at host:port/path``. The ``user:pass`` @@ -81,9 +78,7 @@ +---------------------------------+---------------------------------------------+ | :const:`dates` | in seconds since the epoch (pass in an | | | instance of the :class:`DateTime` class) or | - | | a :class:`datetime.datetime`, | - | | :class:`datetime.date` or | - | | :class:`datetime.time` instance | + | | a :class:`datetime.datetime` instance. | +---------------------------------+---------------------------------------------+ | :const:`binary data` | pass in an instance of the :class:`Binary` | | | wrapper class | @@ -221,10 +216,10 @@ DateTime Objects ---------------- -This class may be initialized with seconds since the epoch, a time tuple, an ISO -8601 time/date string, or a :class:`datetime.datetime`, :class:`datetime.date` -or :class:`datetime.time` instance. It has the following methods, supported -mainly for internal use by the marshalling/unmarshalling code: +This class may be initialized with seconds since the epoch, a time +tuple, an ISO 8601 time/date string, or a :class:`datetime.datetime` +instance. It has the following methods, supported mainly for internal +use by the marshalling/unmarshalling code: .. method:: DateTime.decode(string) @@ -507,10 +502,7 @@ ``None`` if no method name is present in the packet. If the XML-RPC packet represents a fault condition, this function will raise a :exc:`Fault` exception. The *use_datetime* flag can be used to cause date/time values to be presented as - :class:`datetime.datetime` objects; this is false by default. Note that even if - you call an XML-RPC method with :class:`datetime.date` or :class:`datetime.time` - objects, they are converted to :class:`DateTime` objects internally, so only - :class:`datetime.datetime` objects will be returned. + :class:`datetime.datetime` objects; this is false by default. .. versionchanged:: 2.5 The *use_datetime* flag was added. Modified: python/branches/trunk-math/Doc/reference/compound_stmts.rst ============================================================================== --- python/branches/trunk-math/Doc/reference/compound_stmts.rst (original) +++ python/branches/trunk-math/Doc/reference/compound_stmts.rst Thu Feb 28 21:09:17 2008 @@ -531,7 +531,7 @@ .. rubric:: Footnotes -.. [#] The exception is propogated to the invocation stack only if there is no +.. [#] The exception is propagated to the invocation stack only if there is no :keyword:`finally` clause that negates the exception. .. [#] Currently, control "flows off the end" except in the case of an exception or the Modified: python/branches/trunk-math/Doc/reference/expressions.rst ============================================================================== --- python/branches/trunk-math/Doc/reference/expressions.rst (original) +++ python/branches/trunk-math/Doc/reference/expressions.rst Thu Feb 28 21:09:17 2008 @@ -395,7 +395,7 @@ generator, or raises :exc:`StopIteration` if the generator exits without yielding another value. When :meth:`send` is called to start the generator, it must be called with :const:`None` as the argument, because there is no - :keyword:`yield` expression that could receieve the value. + :keyword:`yield` expression that could receive the value. .. method:: generator.throw(type[, value[, traceback]]) @@ -677,7 +677,7 @@ If the syntax ``*expression`` appears in the function call, ``expression`` must evaluate to a sequence. Elements from this sequence are treated as if they were -additional positional arguments; if there are postional arguments *x1*,...,*xN* +additional positional arguments; if there are positional arguments *x1*,...,*xN* , and ``expression`` evaluates to a sequence *y1*,...,*yM*, this is equivalent to a call with M+N positional arguments *x1*,...,*xN*,*y1*,...,*yM*. Modified: python/branches/trunk-math/Doc/reference/index.rst ============================================================================== --- python/branches/trunk-math/Doc/reference/index.rst (original) +++ python/branches/trunk-math/Doc/reference/index.rst Thu Feb 28 21:09:17 2008 @@ -17,7 +17,7 @@ interfaces available to C/C++ programmers in detail. .. toctree:: - :maxdepth: 3 + :maxdepth: 2 introduction.rst lexical_analysis.rst Modified: python/branches/trunk-math/Doc/tutorial/interpreter.rst ============================================================================== --- python/branches/trunk-math/Doc/tutorial/interpreter.rst (original) +++ python/branches/trunk-math/Doc/tutorial/interpreter.rst Thu Feb 28 21:09:17 2008 @@ -22,7 +22,7 @@ alternative location.) On Windows machines, the Python installation is usually placed in -:file:`C:\Python26`, though you can change this when you're running the +:file:`C:\\Python26`, though you can change this when you're running the installer. To add this directory to your path, you can type the following command into the command prompt in a DOS box:: Modified: python/branches/trunk-math/Doc/tutorial/stdlib2.rst ============================================================================== --- python/branches/trunk-math/Doc/tutorial/stdlib2.rst (original) +++ python/branches/trunk-math/Doc/tutorial/stdlib2.rst Thu Feb 28 21:09:17 2008 @@ -269,7 +269,7 @@ 0 >>> d['primary'] # entry was automatically removed Traceback (most recent call last): - File "", line 1, in -toplevel- + File "", line 1, in d['primary'] # entry was automatically removed File "C:/python26/lib/weakref.py", line 46, in __getitem__ o = self.data[key]() Modified: python/branches/trunk-math/Doc/using/cmdline.rst ============================================================================== --- python/branches/trunk-math/Doc/using/cmdline.rst (original) +++ python/branches/trunk-math/Doc/using/cmdline.rst Thu Feb 28 21:09:17 2008 @@ -326,6 +326,8 @@ * :func:`reduce` * :func:`reload` + Using these will emit a :exc:`DeprecationWarning`. + .. versionadded:: 2.6 Modified: python/branches/trunk-math/Doc/using/unix.rst ============================================================================== --- python/branches/trunk-math/Doc/using/unix.rst (original) +++ python/branches/trunk-math/Doc/using/unix.rst Thu Feb 28 21:09:17 2008 @@ -20,7 +20,7 @@ that are not available on your distro's package. You can easily compile the latest version of Python from source. -In the event Python doesn't come preinstalled and isn't in the repositories as +In the event that Python doesn't come preinstalled and isn't in the repositories as well, you can easily make packages for your own distro. Have a look at the following links: Modified: python/branches/trunk-math/Doc/using/windows.rst ============================================================================== --- python/branches/trunk-math/Doc/using/windows.rst (original) +++ python/branches/trunk-math/Doc/using/windows.rst Thu Feb 28 21:09:17 2008 @@ -21,7 +21,7 @@ `_ for many years. With ongoing development of Python, some platforms that used to be supported -earlier are not longer supported (due to the lack of users or developers). +earlier are no longer supported (due to the lack of users or developers). Check :pep:`11` for details on all unsupported platforms. * DOS and Windows 3.x are deprecated since Python 2.0 and code specific to these Modified: python/branches/trunk-math/Doc/whatsnew/2.6.rst ============================================================================== --- python/branches/trunk-math/Doc/whatsnew/2.6.rst (original) +++ python/branches/trunk-math/Doc/whatsnew/2.6.rst Thu Feb 28 21:09:17 2008 @@ -560,7 +560,7 @@ Numbers are further divided into :class:`Exact` and :class:`Inexact`. Exact numbers can represent values precisely and operations never round off the results or introduce tiny errors that may break the -communtativity and associativity properties; inexact numbers may +commutativity and associativity properties; inexact numbers may perform such rounding or introduce small errors. Integers, long integers, and rational numbers are exact, while floating-point and complex numbers are inexact. @@ -707,8 +707,10 @@ Other functions in the :mod:`math` module, :func:`isinf` and :func:`isnan`, return true if their floating-point argument is - infinite or Not A Number. + infinite or Not A Number. + .. Patch 1640 + The ``math.copysign(x, y)`` function copies the sign bit of an IEEE 754 number, returning the absolute value of *x* combined with the sign bit of *y*. For example, @@ -1078,7 +1080,7 @@ * Integrating signal handling with GUI handling event loops like those used by Tkinter or GTk+ has long been a problem; most - software ends up polling, waking up every fraction of a second. Thi + software ends up polling, waking up every fraction of a second. The :mod:`signal` module can now make this more efficient. Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor to be used; when a signal is received, a byte is written to that @@ -1293,7 +1295,8 @@ z.extractall() (Contributed by Alan McIntyre.) - .. % Patch 467924 + + .. Patch 467924 .. ====================================================================== .. whole new modules get described in subsections here @@ -1392,7 +1395,7 @@ .. Issue 1534 * Python's C API now includes two functions for case-insensitive string - comparisions, ``PyOS_stricmp(char*, char*)`` + comparisons, ``PyOS_stricmp(char*, char*)`` and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``. (Contributed by Christian Heimes.) @@ -1508,6 +1511,15 @@ .. Issue 1706815 +* The :mod:`xmlrpclib` module no longer automatically converts + :class:`datetime.date` and :class:`datetime.time` to the + :class:`xmlrpclib.DateTime` type; the conversion semantics were + not necessarily correct for all applications. Code using + :mod:`xmlrpclib` should convert :class:`date` and :class:`time` + instances. + + .. Issue 1330538 + .. ====================================================================== Modified: python/branches/trunk-math/Grammar/Grammar ============================================================================== --- python/branches/trunk-math/Grammar/Grammar (original) +++ python/branches/trunk-math/Grammar/Grammar Thu Feb 28 21:09:17 2008 @@ -33,7 +33,8 @@ decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ -funcdef: [decorators] 'def' NAME parameters ':' suite +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite parameters: '(' [varargslist] ')' varargslist: ((fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME) | @@ -73,7 +74,7 @@ exec_stmt: 'exec' expr ['in' test [',' test]] assert_stmt: 'assert' test [',' test] -compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] Modified: python/branches/trunk-math/Include/Python-ast.h ============================================================================== --- python/branches/trunk-math/Include/Python-ast.h (original) +++ python/branches/trunk-math/Include/Python-ast.h Thu Feb 28 21:09:17 2008 @@ -73,13 +73,14 @@ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorators; + asdl_seq *decorator_list; } FunctionDef; struct { identifier name; asdl_seq *bases; asdl_seq *body; + asdl_seq *decorator_list; } ClassDef; struct { @@ -359,11 +360,12 @@ mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); #define FunctionDef(a0, a1, a2, a3, a4, a5, a6) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6) stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, - asdl_seq * decorators, int lineno, int col_offset, + asdl_seq * decorator_list, int lineno, int col_offset, PyArena *arena); -#define ClassDef(a0, a1, a2, a3, a4, a5) _Py_ClassDef(a0, a1, a2, a3, a4, a5) -stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int - lineno, int col_offset, PyArena *arena); +#define ClassDef(a0, a1, a2, a3, a4, a5, a6) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, + asdl_seq * decorator_list, int lineno, int col_offset, + PyArena *arena); #define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3) stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena); #define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3) Modified: python/branches/trunk-math/Include/abstract.h ============================================================================== --- python/branches/trunk-math/Include/abstract.h (original) +++ python/branches/trunk-math/Include/abstract.h Thu Feb 28 21:09:17 2008 @@ -529,6 +529,13 @@ */ + PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj, + PyObject *format_spec); + /* + Takes an arbitrary object and returns the result of + calling obj.__format__(format_spec). + */ + /* Iterators */ PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); Modified: python/branches/trunk-math/Include/graminit.h ============================================================================== --- python/branches/trunk-math/Include/graminit.h (original) +++ python/branches/trunk-math/Include/graminit.h Thu Feb 28 21:09:17 2008 @@ -3,82 +3,83 @@ #define eval_input 258 #define decorator 259 #define decorators 260 -#define funcdef 261 -#define parameters 262 -#define varargslist 263 -#define fpdef 264 -#define fplist 265 -#define stmt 266 -#define simple_stmt 267 -#define small_stmt 268 -#define expr_stmt 269 -#define augassign 270 -#define print_stmt 271 -#define del_stmt 272 -#define pass_stmt 273 -#define flow_stmt 274 -#define break_stmt 275 -#define continue_stmt 276 -#define return_stmt 277 -#define yield_stmt 278 -#define raise_stmt 279 -#define import_stmt 280 -#define import_name 281 -#define import_from 282 -#define import_as_name 283 -#define dotted_as_name 284 -#define import_as_names 285 -#define dotted_as_names 286 -#define dotted_name 287 -#define global_stmt 288 -#define exec_stmt 289 -#define assert_stmt 290 -#define compound_stmt 291 -#define if_stmt 292 -#define while_stmt 293 -#define for_stmt 294 -#define try_stmt 295 -#define with_stmt 296 -#define with_var 297 -#define except_clause 298 -#define suite 299 -#define testlist_safe 300 -#define old_test 301 -#define old_lambdef 302 -#define test 303 -#define or_test 304 -#define and_test 305 -#define not_test 306 -#define comparison 307 -#define comp_op 308 -#define expr 309 -#define xor_expr 310 -#define and_expr 311 -#define shift_expr 312 -#define arith_expr 313 -#define term 314 -#define factor 315 -#define power 316 -#define atom 317 -#define listmaker 318 -#define testlist_gexp 319 -#define lambdef 320 -#define trailer 321 -#define subscriptlist 322 -#define subscript 323 -#define sliceop 324 -#define exprlist 325 -#define testlist 326 -#define dictmaker 327 -#define classdef 328 -#define arglist 329 -#define argument 330 -#define list_iter 331 -#define list_for 332 -#define list_if 333 -#define gen_iter 334 -#define gen_for 335 -#define gen_if 336 -#define testlist1 337 -#define encoding_decl 338 -#define yield_expr 339 +#define decorated 261 +#define funcdef 262 +#define parameters 263 +#define varargslist 264 +#define fpdef 265 +#define fplist 266 +#define stmt 267 +#define simple_stmt 268 +#define small_stmt 269 +#define expr_stmt 270 +#define augassign 271 +#define print_stmt 272 +#define del_stmt 273 +#define pass_stmt 274 +#define flow_stmt 275 +#define break_stmt 276 +#define continue_stmt 277 +#define return_stmt 278 +#define yield_stmt 279 +#define raise_stmt 280 +#define import_stmt 281 +#define import_name 282 +#define import_from 283 +#define import_as_name 284 +#define dotted_as_name 285 +#define import_as_names 286 +#define dotted_as_names 287 +#define dotted_name 288 +#define global_stmt 289 +#define exec_stmt 290 +#define assert_stmt 291 +#define compound_stmt 292 +#define if_stmt 293 +#define while_stmt 294 +#define for_stmt 295 +#define try_stmt 296 +#define with_stmt 297 +#define with_var 298 +#define except_clause 299 +#define suite 300 +#define testlist_safe 301 +#define old_test 302 +#define old_lambdef 303 +#define test 304 +#define or_test 305 +#define and_test 306 +#define not_test 307 +#define comparison 308 +#define comp_op 309 +#define expr 310 +#define xor_expr 311 +#define and_expr 312 +#define shift_expr 313 +#define arith_expr 314 +#define term 315 +#define factor 316 +#define power 317 +#define atom 318 +#define listmaker 319 +#define testlist_gexp 320 +#define lambdef 321 +#define trailer 322 +#define subscriptlist 323 +#define subscript 324 +#define sliceop 325 +#define exprlist 326 +#define testlist 327 +#define dictmaker 328 +#define classdef 329 +#define arglist 330 +#define argument 331 +#define list_iter 332 +#define list_for 333 +#define list_if 334 +#define gen_iter 335 +#define gen_for 336 +#define gen_if 337 +#define testlist1 338 +#define encoding_decl 339 +#define yield_expr 340 Modified: python/branches/trunk-math/Include/longintrepr.h ============================================================================== --- python/branches/trunk-math/Include/longintrepr.h (original) +++ python/branches/trunk-math/Include/longintrepr.h Thu Feb 28 21:09:17 2008 @@ -28,8 +28,13 @@ #define PyLong_BASE ((digit)1 << PyLong_SHIFT) #define PyLong_MASK ((int)(PyLong_BASE - 1)) +/* b/w compatibility with Python 2.5 */ +#define SHIFT PyLong_SHIFT +#define BASE PyLong_BASE +#define MASK PyLong_MASK + #if PyLong_SHIFT % 5 != 0 -#error "longobject.c requires that SHIFT be divisible by 5" +#error "longobject.c requires that PyLong_SHIFT be divisible by 5" #endif /* Long integer representation. Modified: python/branches/trunk-math/Include/object.h ============================================================================== --- python/branches/trunk-math/Include/object.h (original) +++ python/branches/trunk-math/Include/object.h Thu Feb 28 21:09:17 2008 @@ -537,6 +537,9 @@ #define Py_TPFLAGS_HAVE_VERSION_TAG (1L<<18) #define Py_TPFLAGS_VALID_VERSION_TAG (1L<<19) +/* Type is abstract and cannot be instantiated */ +#define Py_TPFLAGS_IS_ABSTRACT (1L<<20) + /* These flags are used to determine if a type is a subclass. */ #define Py_TPFLAGS_INT_SUBCLASS (1L<<23) #define Py_TPFLAGS_LONG_SUBCLASS (1L<<24) Modified: python/branches/trunk-math/Lib/BaseHTTPServer.py ============================================================================== --- python/branches/trunk-math/Lib/BaseHTTPServer.py (original) +++ python/branches/trunk-math/Lib/BaseHTTPServer.py Thu Feb 28 21:09:17 2008 @@ -76,7 +76,7 @@ import mimetools import SocketServer -# Default error message +# Default error message template DEFAULT_ERROR_MESSAGE = """\ Error response @@ -89,6 +89,8 @@ """ +DEFAULT_ERROR_CONTENT_TYPE = "text/html" + def _quote_html(html): return html.replace("&", "&").replace("<", "<").replace(">", ">") @@ -342,13 +344,14 @@ content = (self.error_message_format % {'code': code, 'message': _quote_html(message), 'explain': explain}) self.send_response(code, message) - self.send_header("Content-Type", "text/html") + self.send_header("Content-Type", self.error_content_type) self.send_header('Connection', 'close') self.end_headers() if self.command != 'HEAD' and code >= 200 and code not in (204, 304): self.wfile.write(content) error_message_format = DEFAULT_ERROR_MESSAGE + error_content_type = DEFAULT_ERROR_CONTENT_TYPE def send_response(self, code, message=None): """Send the response header and log the response code. Modified: python/branches/trunk-math/Lib/ConfigParser.py ============================================================================== --- python/branches/trunk-math/Lib/ConfigParser.py (original) +++ python/branches/trunk-math/Lib/ConfigParser.py Thu Feb 28 21:09:17 2008 @@ -235,8 +235,12 @@ """Create a new section in the configuration. Raise DuplicateSectionError if a section by the specified name - already exists. + already exists. Raise ValueError if name is DEFAULT or any of it's + case-insensitive variants. """ + if section.lower() == "default": + raise ValueError, 'Invalid section name: %s' % section + if section in self._sections: raise DuplicateSectionError(section) self._sections[section] = self._dict() Modified: python/branches/trunk-math/Lib/SimpleHTTPServer.py ============================================================================== --- python/branches/trunk-math/Lib/SimpleHTTPServer.py (original) +++ python/branches/trunk-math/Lib/SimpleHTTPServer.py Thu Feb 28 21:09:17 2008 @@ -14,7 +14,6 @@ import posixpath import BaseHTTPServer import urllib -import urlparse import cgi import shutil import mimetypes @@ -113,8 +112,9 @@ list.sort(key=lambda a: a.lower()) f = StringIO() displaypath = cgi.escape(urllib.unquote(self.path)) - f.write("Directory listing for %s\n" % displaypath) - f.write("

    Directory listing for %s

    \n" % displaypath) + f.write('') + f.write("\nDirectory listing for %s\n" % displaypath) + f.write("\n

    Directory listing for %s

    \n" % displaypath) f.write("
    \n
      \n") for name in list: fullname = os.path.join(path, name) @@ -128,7 +128,7 @@ # Note: a link to a directory displays with @ and links with / f.write('
    • %s\n' % (urllib.quote(linkname), cgi.escape(displayname))) - f.write("
    \n
    \n") + f.write("\n
    \n\n\n") length = f.tell() f.seek(0) self.send_response(200) @@ -146,7 +146,8 @@ """ # abandon query parameters - path = urlparse.urlparse(path)[2] + path = path.split('?',1)[0] + path = path.split('#',1)[0] path = posixpath.normpath(urllib.unquote(path)) words = path.split('/') words = filter(None, words) Modified: python/branches/trunk-math/Lib/UserDict.py ============================================================================== --- python/branches/trunk-math/Lib/UserDict.py (original) +++ python/branches/trunk-math/Lib/UserDict.py Thu Feb 28 21:09:17 2008 @@ -41,7 +41,7 @@ def iterkeys(self): return self.data.iterkeys() def itervalues(self): return self.data.itervalues() def values(self): return self.data.values() - def has_key(self, key): return self.data.has_key(key) + def has_key(self, key): return key in self.data def update(self, dict=None, **kwargs): if dict is None: pass @@ -55,11 +55,11 @@ if len(kwargs): self.data.update(kwargs) def get(self, key, failobj=None): - if not self.has_key(key): + if key not in self: return failobj return self[key] def setdefault(self, key, failobj=None): - if not self.has_key(key): + if key not in self: self[key] = failobj return self[key] def pop(self, key, *args): Modified: python/branches/trunk-math/Lib/abc.py ============================================================================== --- python/branches/trunk-math/Lib/abc.py (original) +++ python/branches/trunk-math/Lib/abc.py Thu Feb 28 21:09:17 2008 @@ -51,52 +51,6 @@ __isabstractmethod__ = True -class _Abstract(object): - - """Helper class inserted into the bases by ABCMeta (using _fix_bases()). - - You should never need to explicitly subclass this class. - - There should never be a base class between _Abstract and object. - """ - - def __new__(cls, *args, **kwds): - am = cls.__dict__.get("__abstractmethods__") - if am: - raise TypeError("Can't instantiate abstract class %s " - "with abstract methods %s" % - (cls.__name__, ", ".join(sorted(am)))) - if (args or kwds) and cls.__init__ is object.__init__: - raise TypeError("Can't pass arguments to __new__ " - "without overriding __init__") - return super(_Abstract, cls).__new__(cls) - - @classmethod - def __subclasshook__(cls, subclass): - """Abstract classes can override this to customize issubclass(). - - This is invoked early on by __subclasscheck__() below. It - should return True, False or NotImplemented. If it returns - NotImplemented, the normal algorithm is used. Otherwise, it - overrides the normal algorithm (and the outcome is cached). - """ - return NotImplemented - - -def _fix_bases(bases): - """Helper method that inserts _Abstract in the bases if needed.""" - for base in bases: - if issubclass(base, _Abstract): - # _Abstract is already a base (maybe indirectly) - return bases - if object in bases: - # Replace object with _Abstract - return tuple([_Abstract if base is object else base - for base in bases]) - # Append _Abstract to the end - return bases + (_Abstract,) - - class ABCMeta(type): """Metaclass for defining Abstract Base Classes (ABCs). @@ -119,7 +73,6 @@ _abc_invalidation_counter = 0 def __new__(mcls, name, bases, namespace): - bases = _fix_bases(bases) cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace) # Compute set of abstract method names abstracts = set(name @@ -130,7 +83,7 @@ value = getattr(cls, name, None) if getattr(value, "__isabstractmethod__", False): abstracts.add(name) - cls.__abstractmethods__ = abstracts + cls.__abstractmethods__ = frozenset(abstracts) # Set up inheritance registry cls._abc_registry = set() cls._abc_cache = set() Modified: python/branches/trunk-math/Lib/bsddb/test/test_associate.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_associate.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_associate.py Thu Feb 28 21:09:17 2008 @@ -91,7 +91,7 @@ class AssociateErrorTestCase(unittest.TestCase): def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -106,11 +106,8 @@ def tearDown(self): self.env.close() self.env = None - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - + from test import test_support + test_support.rmtree(self.homeDir) def test00_associateDBError(self): if verbose: @@ -151,7 +148,7 @@ def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) Modified: python/branches/trunk-math/Lib/bsddb/test/test_basics.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_basics.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_basics.py Thu Feb 28 21:09:17 2008 @@ -4,12 +4,11 @@ """ import os -import sys import errno -import shutil import string import tempfile from pprint import pprint +from test import test_support import unittest import time @@ -54,13 +53,9 @@ def setUp(self): if self.useEnv: - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir - try: - shutil.rmtree(homeDir) - except OSError, e: - # unix returns ENOENT, windows returns ESRCH - if e.errno not in (errno.ENOENT, errno.ESRCH): raise + test_support.rmtree(homeDir) os.mkdir(homeDir) try: self.env = db.DBEnv() @@ -74,7 +69,7 @@ tempfile.tempdir = None # Yes, a bare except is intended, since we're re-raising the exc. except: - shutil.rmtree(homeDir) + test_support.rmtree(homeDir) raise else: self.env = None @@ -98,8 +93,8 @@ def tearDown(self): self.d.close() if self.env is not None: + test_support.rmtree(self.homeDir) self.env.close() - shutil.rmtree(self.homeDir) ## Make a new DBEnv to remove the env files from the home dir. ## (It can't be done while the env is open, nor after it has been ## closed, so we make a new one to do it.) Modified: python/branches/trunk-math/Lib/bsddb/test/test_compare.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_compare.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_compare.py Thu Feb 28 21:09:17 2008 @@ -52,7 +52,7 @@ def setUp (self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join (tempfile.gettempdir(), 'db_home') + homeDir = os.path.join (tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir (homeDir) @@ -70,8 +70,8 @@ if self.env is not None: self.env.close () self.env = None - import glob - map (os.remove, glob.glob (os.path.join (self.homeDir, '*'))) + from test import test_support + test_support.rmtree(self.homeDir) def addDataToDB (self, data): i = 0 Modified: python/branches/trunk-math/Lib/bsddb/test/test_compat.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_compat.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_compat.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,7 @@ regression test suite. """ -import sys, os, string +import os, string import unittest import tempfile Modified: python/branches/trunk-math/Lib/bsddb/test/test_cursor_pget_bug.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_cursor_pget_bug.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_cursor_pget_bug.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,6 @@ import unittest import tempfile -import sys, os, glob +import os, glob try: # For Pythons w/distutils pybsddb @@ -17,7 +17,7 @@ db_name = 'test-cursor_pget.db' def setUp(self): - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: @@ -42,9 +42,8 @@ del self.secondary_db del self.primary_db del self.env - for file in glob.glob(os.path.join(self.homeDir, '*')): - os.remove(file) - os.removedirs(self.homeDir) + from test import test_support + test_support.rmtree(self.homeDir) def test_pget(self): cursor = self.secondary_db.cursor() Modified: python/branches/trunk-math/Lib/bsddb/test/test_dbobj.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_dbobj.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_dbobj.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ -import sys, os, string +import os, string import unittest -import glob import tempfile try: @@ -20,7 +19,7 @@ db_name = 'test-dbobj.db' def setUp(self): - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -30,9 +29,8 @@ del self.db if hasattr(self, 'env'): del self.env - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test01_both(self): class TestDBEnv(dbobj.DBEnv): pass Modified: python/branches/trunk-math/Lib/bsddb/test/test_dbshelve.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_dbshelve.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_dbshelve.py Thu Feb 28 21:09:17 2008 @@ -2,9 +2,8 @@ TestCases for checking dbShelve objects. """ -import sys, os, string +import os, string import tempfile, random -from pprint import pprint from types import * import unittest @@ -246,7 +245,7 @@ class BasicEnvShelveTestCase(DBShelveTestCase): def do_open(self): self.homeDir = homeDir = os.path.join( - tempfile.gettempdir(), 'db_home') + tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(homeDir) except os.error: pass self.env = db.DBEnv() @@ -263,12 +262,9 @@ def tearDown(self): + from test import test_support + test_support.rmtree(self.homeDir) self.do_close() - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - class EnvBTreeShelveTestCase(BasicEnvShelveTestCase): Modified: python/branches/trunk-math/Lib/bsddb/test/test_dbtables.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_dbtables.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_dbtables.py Thu Feb 28 21:09:17 2008 @@ -20,9 +20,8 @@ # # $Id$ -import sys, os, re +import os, re import tempfile -import shutil try: import cPickle pickle = cPickle @@ -58,7 +57,8 @@ def tearDown(self): self.tdb.close() - shutil.rmtree(self.testHomeDir) + from test import test_support + test_support.rmtree(self.testHomeDir) def test01(self): tabname = "test01" Modified: python/branches/trunk-math/Lib/bsddb/test/test_env_close.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_env_close.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_env_close.py Thu Feb 28 21:09:17 2008 @@ -3,9 +3,7 @@ """ import os -import sys import tempfile -import glob import unittest try: @@ -33,7 +31,7 @@ class DBEnvClosedEarlyCrash(unittest.TestCase): def setUp(self): - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: pass tempfile.tempdir = self.homeDir @@ -41,10 +39,8 @@ tempfile.tempdir = None def tearDown(self): - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) - + from test import test_support + test_support.rmtree(self.homeDir) def test01_close_dbenv_before_db(self): dbenv = db.DBEnv() Modified: python/branches/trunk-math/Lib/bsddb/test/test_get_none.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_get_none.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_get_none.py Thu Feb 28 21:09:17 2008 @@ -2,9 +2,8 @@ TestCases for checking set_get_returns_none. """ -import sys, os, string +import os, string import tempfile -from pprint import pprint import unittest try: Modified: python/branches/trunk-math/Lib/bsddb/test/test_join.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_join.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_join.py Thu Feb 28 21:09:17 2008 @@ -1,10 +1,8 @@ """TestCases for using the DB.join and DBCursor.join_item methods. """ -import sys, os, string +import os import tempfile -import time -from pprint import pprint try: from threading import Thread, currentThread @@ -49,7 +47,7 @@ def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -58,10 +56,8 @@ def tearDown(self): self.env.close() - import glob - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test01_join(self): if verbose: Modified: python/branches/trunk-math/Lib/bsddb/test/test_lock.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_lock.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_lock.py Thu Feb 28 21:09:17 2008 @@ -2,10 +2,6 @@ TestCases for testing the locking sub-system. """ -import os -from pprint import pprint -import shutil -import sys import tempfile import time @@ -40,7 +36,8 @@ def tearDown(self): self.env.close() - shutil.rmtree(self.homeDir) + from test import test_support + test_support.rmtree(self.homeDir) def test01_simple(self): Modified: python/branches/trunk-math/Lib/bsddb/test/test_misc.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_misc.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_misc.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ """ import os -import sys import unittest import tempfile @@ -18,7 +17,7 @@ class MiscTestCase(unittest.TestCase): def setUp(self): self.filename = self.__class__.__name__ + '.db' - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -26,12 +25,9 @@ pass def tearDown(self): - try: - os.remove(self.filename) - except OSError: - pass - import shutil - shutil.rmtree(self.homeDir) + from test import test_support + test_support.unlink(self.filename) + test_support.rmtree(self.homeDir) def test01_badpointer(self): dbs = dbshelve.open(self.filename) Modified: python/branches/trunk-math/Lib/bsddb/test/test_pickle.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_pickle.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_pickle.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,5 @@ -import sys, os, string +import os import pickle try: import cPickle @@ -7,7 +7,6 @@ cPickle = None import unittest import tempfile -import glob try: # For Pythons w/distutils pybsddb @@ -25,7 +24,7 @@ db_name = 'test-dbobj.db' def setUp(self): - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) except os.error: pass @@ -35,9 +34,8 @@ del self.db if hasattr(self, 'env'): del self.env - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def _base_test_pickle_DBError(self, pickle): self.env = db.DBEnv() Modified: python/branches/trunk-math/Lib/bsddb/test/test_queue.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_queue.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_queue.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,7 @@ TestCases for exercising a Queue DB. """ -import sys, os, string +import os, string import tempfile from pprint import pprint import unittest Modified: python/branches/trunk-math/Lib/bsddb/test/test_recno.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_recno.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_recno.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ """ import os -import sys import errno import tempfile from pprint import pprint @@ -25,12 +24,13 @@ class SimpleRecnoTestCase(unittest.TestCase): def setUp(self): self.filename = tempfile.mktemp() + self.homeDir = None def tearDown(self): - try: - os.remove(self.filename) - except OSError, e: - if e.errno <> errno.EEXIST: raise + from test import test_support + test_support.unlink(self.filename) + if self.homeDir: + test_support.rmtree(self.homeDir) def test01_basic(self): d = db.DB() @@ -203,7 +203,8 @@ just a line in the file, but you can set a different record delimiter if needed. """ - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) + self.homeDir = homeDir source = os.path.join(homeDir, 'test_recno.txt') if not os.path.isdir(homeDir): os.mkdir(homeDir) Modified: python/branches/trunk-math/Lib/bsddb/test/test_sequence.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_sequence.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_sequence.py Thu Feb 28 21:09:17 2008 @@ -1,8 +1,6 @@ import unittest import os -import sys import tempfile -import glob try: # For Pythons w/distutils pybsddb @@ -10,13 +8,11 @@ except ImportError: from bsddb import db -from test_all import verbose - class DBSequenceTest(unittest.TestCase): def setUp(self): self.int_32_max = 0x100000000 - self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + self.homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) try: os.mkdir(self.homeDir) except os.error: @@ -41,9 +37,8 @@ self.dbenv.close() del self.dbenv - files = glob.glob(os.path.join(self.homeDir, '*')) - for file in files: - os.remove(file) + from test import test_support + test_support.rmtree(self.homeDir) def test_get(self): self.seq = db.DBSequence(self.d, flags=0) Modified: python/branches/trunk-math/Lib/bsddb/test/test_thread.py ============================================================================== --- python/branches/trunk-math/Lib/bsddb/test/test_thread.py (original) +++ python/branches/trunk-math/Lib/bsddb/test/test_thread.py Thu Feb 28 21:09:17 2008 @@ -5,9 +5,7 @@ import sys import time import errno -import shutil import tempfile -from pprint import pprint from random import random try: @@ -53,7 +51,7 @@ if verbose: dbutils._deadlock_VerboseFile = sys.stdout - homeDir = os.path.join(tempfile.gettempdir(), 'db_home') + homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid()) self.homeDir = homeDir try: os.mkdir(homeDir) @@ -70,12 +68,10 @@ self.d.open(self.filename, self.dbtype, self.dbopenflags|db.DB_CREATE) def tearDown(self): + from test import test_support + test_support.rmtree(self.homeDir) self.d.close() self.env.close() - try: - shutil.rmtree(self.homeDir) - except OSError, e: - if e.errno != errno.EEXIST: raise def setEnvOpts(self): pass Modified: python/branches/trunk-math/Lib/compiler/ast.py ============================================================================== --- python/branches/trunk-math/Lib/compiler/ast.py (original) +++ python/branches/trunk-math/Lib/compiler/ast.py Thu Feb 28 21:09:17 2008 @@ -308,11 +308,12 @@ return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args)) class Class(Node): - def __init__(self, name, bases, doc, code, lineno=None): + def __init__(self, name, bases, doc, code, decorators = None, lineno=None): self.name = name self.bases = bases self.doc = doc self.code = code + self.decorators = decorators self.lineno = lineno def getChildren(self): @@ -321,16 +322,19 @@ children.extend(flatten(self.bases)) children.append(self.doc) children.append(self.code) + children.append(self.decorators) return tuple(children) def getChildNodes(self): nodelist = [] nodelist.extend(flatten_nodes(self.bases)) nodelist.append(self.code) + if self.decorators is not None: + nodelist.append(self.decorators) return tuple(nodelist) def __repr__(self): - return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code)) + return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators)) class Compare(Node): def __init__(self, expr, ops, lineno=None): Modified: python/branches/trunk-math/Lib/compiler/transformer.py ============================================================================== --- python/branches/trunk-math/Lib/compiler/transformer.py (original) +++ python/branches/trunk-math/Lib/compiler/transformer.py Thu Feb 28 21:09:17 2008 @@ -29,7 +29,6 @@ import parser import symbol import token -import sys class WalkerError(StandardError): pass @@ -233,6 +232,18 @@ items.append(self.decorator(dec_nodelist[1:])) return Decorators(items) + def decorated(self, nodelist): + assert nodelist[0][0] == symbol.decorators + if nodelist[1][0] == symbol.funcdef: + n = [nodelist[0]] + list(nodelist[1][1:]) + return self.funcdef(n) + elif nodelist[1][0] == symbol.classdef: + decorators = self.decorators(nodelist[0][1:]) + cls = self.classdef(nodelist[1][1:]) + cls.decorators = decorators + return cls + raise WalkerError() + def funcdef(self, nodelist): # -6 -5 -4 -3 -2 -1 # funcdef: [decorators] 'def' NAME parameters ':' suite Modified: python/branches/trunk-math/Lib/copy_reg.py ============================================================================== --- python/branches/trunk-math/Lib/copy_reg.py (original) +++ python/branches/trunk-math/Lib/copy_reg.py Thu Feb 28 21:09:17 2008 @@ -15,7 +15,7 @@ if type(ob_type) is _ClassType: raise TypeError("copy_reg is not intended for use with classes") - if not callable(pickle_function): + if not hasattr(pickle_function, '__call__'): raise TypeError("reduction functions must be callable") dispatch_table[ob_type] = pickle_function @@ -25,7 +25,7 @@ constructor(constructor_ob) def constructor(object): - if not callable(object): + if not hasattr(object, '__call__'): raise TypeError("constructors must be callable") # Example: provide pickling support for complex numbers. Modified: python/branches/trunk-math/Lib/ctypes/__init__.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/__init__.py (original) +++ python/branches/trunk-math/Lib/ctypes/__init__.py Thu Feb 28 21:09:17 2008 @@ -17,7 +17,7 @@ from struct import calcsize as _calcsize if __version__ != _ctypes_version: - raise Exception, ("Version number mismatch", __version__, _ctypes_version) + raise Exception("Version number mismatch", __version__, _ctypes_version) if _os.name in ("nt", "ce"): from _ctypes import FormatError @@ -63,7 +63,7 @@ buftype = c_char * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) def c_buffer(init, size=None): ## "deprecated, use create_string_buffer instead" @@ -298,18 +298,16 @@ buftype = c_wchar * init buf = buftype() return buf - raise TypeError, init + raise TypeError(init) POINTER(c_char).from_param = c_char_p.from_param #_SimpleCData.c_char_p_from_param # XXX Deprecated def SetPointerType(pointer, cls): if _pointer_type_cache.get(cls, None) is not None: - raise RuntimeError, \ - "This type already exists in the cache" - if not _pointer_type_cache.has_key(id(pointer)): - raise RuntimeError, \ - "What's this???" + raise RuntimeError("This type already exists in the cache") + if id(pointer) not in _pointer_type_cache: + raise RuntimeError("What's this???") pointer.set_type(cls) _pointer_type_cache[cls] = pointer del _pointer_type_cache[id(pointer)] @@ -358,7 +356,7 @@ def __getattr__(self, name): if name.startswith('__') and name.endswith('__'): - raise AttributeError, name + raise AttributeError(name) func = self.__getitem__(name) setattr(self, name, func) return func Modified: python/branches/trunk-math/Lib/ctypes/macholib/dyld.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/macholib/dyld.py (original) +++ python/branches/trunk-math/Lib/ctypes/macholib/dyld.py Thu Feb 28 21:09:17 2008 @@ -135,7 +135,7 @@ ), env): if os.path.isfile(path): return path - raise ValueError, "dylib %s could not be found" % (name,) + raise ValueError("dylib %s could not be found" % (name,)) def framework_find(fn, executable_path=None, env=None): """ Modified: python/branches/trunk-math/Lib/ctypes/test/__init__.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/__init__.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/__init__.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,4 @@ -import glob, os, sys, unittest, getopt, time +import os, sys, unittest, getopt, time use_resources = [] Modified: python/branches/trunk-math/Lib/ctypes/test/test_cfuncs.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_cfuncs.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_cfuncs.py Thu Feb 28 21:09:17 2008 @@ -198,7 +198,7 @@ class stdcall_dll(WinDLL): def __getattr__(self, name): if name[:2] == '__' and name[-2:] == '__': - raise AttributeError, name + raise AttributeError(name) func = self._FuncPtr(("s_" + name, self)) setattr(self, name, func) return func Modified: python/branches/trunk-math/Lib/ctypes/test/test_checkretval.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_checkretval.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_checkretval.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ import unittest -import sys from ctypes import * Modified: python/branches/trunk-math/Lib/ctypes/test/test_find.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_find.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_find.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,5 @@ import unittest -import os, sys +import sys from ctypes import * from ctypes.util import find_library from ctypes.test import is_resource_enabled Modified: python/branches/trunk-math/Lib/ctypes/test/test_libc.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_libc.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_libc.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,3 @@ -import sys, os import unittest from ctypes import * Modified: python/branches/trunk-math/Lib/ctypes/test/test_loading.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_loading.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_loading.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,6 @@ from ctypes import * import sys, unittest -import os, StringIO +import os from ctypes.util import find_library from ctypes.test import is_resource_enabled Modified: python/branches/trunk-math/Lib/ctypes/test/test_macholib.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_macholib.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_macholib.py Thu Feb 28 21:09:17 2008 @@ -42,7 +42,7 @@ return os.path.realpath(dyld_find(dylib)) except ValueError: pass - raise ValueError, "%s not found" % (name,) + raise ValueError("%s not found" % (name,)) class MachOTest(unittest.TestCase): if sys.platform == "darwin": Modified: python/branches/trunk-math/Lib/ctypes/test/test_numbers.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_numbers.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_numbers.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,6 @@ from ctypes import * import unittest -import sys, struct +import struct def valid_ranges(*types): # given a sequence of numeric types, collect their _type_ Modified: python/branches/trunk-math/Lib/ctypes/test/test_random_things.py ============================================================================== --- python/branches/trunk-math/Lib/ctypes/test/test_random_things.py (original) +++ python/branches/trunk-math/Lib/ctypes/test/test_random_things.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,7 @@ def callback_func(arg): 42 / arg - raise ValueError, arg + raise ValueError(arg) if sys.platform == "win32": Modified: python/branches/trunk-math/Lib/curses/__init__.py ============================================================================== --- python/branches/trunk-math/Lib/curses/__init__.py (original) +++ python/branches/trunk-math/Lib/curses/__init__.py Thu Feb 28 21:09:17 2008 @@ -14,6 +14,8 @@ from _curses import * from curses.wrapper import wrapper +import os as _os +import sys as _sys # Some constants, most notably the ACS_* ones, are only added to the C # _curses module's dictionary after initscr() is called. (Some @@ -25,6 +27,10 @@ def initscr(): import _curses, curses + # we call setupterm() here because it raises an error + # instead of calling exit() in error cases. + setupterm(term=_os.environ.get("TERM", "unknown"), + fd=_sys.__stdout__.fileno()) stdscr = _curses.initscr() for key, value in _curses.__dict__.items(): if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'): Modified: python/branches/trunk-math/Lib/curses/wrapper.py ============================================================================== --- python/branches/trunk-math/Lib/curses/wrapper.py (original) +++ python/branches/trunk-math/Lib/curses/wrapper.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ """ -import sys, curses +import curses def wrapper(func, *args, **kwds): """Wrapper function that initializes curses and calls another function, Modified: python/branches/trunk-math/Lib/decimal.py ============================================================================== --- python/branches/trunk-math/Lib/decimal.py (original) +++ python/branches/trunk-math/Lib/decimal.py Thu Feb 28 21:09:17 2008 @@ -5212,8 +5212,7 @@ ##### crud for parsing strings ############################################# -import re - +# # Regular expression used for parsing numeric strings. Additional # comments: # Modified: python/branches/trunk-math/Lib/distutils/archive_util.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/archive_util.py (original) +++ python/branches/trunk-math/Lib/distutils/archive_util.py Thu Feb 28 21:09:17 2008 @@ -124,7 +124,7 @@ def check_archive_formats (formats): for format in formats: - if not ARCHIVE_FORMATS.has_key(format): + if format not in ARCHIVE_FORMATS: return format else: return None Modified: python/branches/trunk-math/Lib/distutils/bcppcompiler.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/bcppcompiler.py (original) +++ python/branches/trunk-math/Lib/distutils/bcppcompiler.py Thu Feb 28 21:09:17 2008 @@ -16,7 +16,7 @@ __revision__ = "$Id$" -import sys, os +import os from distutils.errors import \ DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError, UnknownFileError Modified: python/branches/trunk-math/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/ccompiler.py (original) +++ python/branches/trunk-math/Lib/distutils/ccompiler.py Thu Feb 28 21:09:17 2008 @@ -159,7 +159,7 @@ # basically the same things with Unix C compilers. for key in args.keys(): - if not self.executables.has_key(key): + if key not in self.executables: raise ValueError, \ "unknown executable '%s' for class %s" % \ (key, self.__class__.__name__) Modified: python/branches/trunk-math/Lib/distutils/command/bdist.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/bdist.py (original) +++ python/branches/trunk-math/Lib/distutils/command/bdist.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ __revision__ = "$Id$" -import os, string +import os from types import * from distutils.core import Command from distutils.errors import * Modified: python/branches/trunk-math/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/bdist_dumb.py (original) +++ python/branches/trunk-math/Lib/distutils/command/bdist_dumb.py Thu Feb 28 21:09:17 2008 @@ -11,7 +11,7 @@ import os from distutils.core import Command from distutils.util import get_platform -from distutils.dir_util import create_tree, remove_tree, ensure_relative +from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import * from distutils.sysconfig import get_python_version from distutils import log Modified: python/branches/trunk-math/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/bdist_msi.py (original) +++ python/branches/trunk-math/Lib/distutils/command/bdist_msi.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ Implements the bdist_msi command. """ -import sys, os, string +import sys, os from distutils.core import Command from distutils.util import get_platform from distutils.dir_util import remove_tree Modified: python/branches/trunk-math/Lib/distutils/command/bdist_rpm.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/bdist_rpm.py (original) +++ python/branches/trunk-math/Lib/distutils/command/bdist_rpm.py Thu Feb 28 21:09:17 2008 @@ -8,7 +8,6 @@ __revision__ = "$Id$" import sys, os, string -import glob from types import * from distutils.core import Command from distutils.debug import DEBUG Modified: python/branches/trunk-math/Lib/distutils/command/build_ext.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/build_ext.py (original) +++ python/branches/trunk-math/Lib/distutils/command/build_ext.py Thu Feb 28 21:09:17 2008 @@ -362,7 +362,7 @@ # Medium-easy stuff: same syntax/semantics, different names. ext.runtime_library_dirs = build_info.get('rpath') - if build_info.has_key('def_file'): + if 'def_file' in build_info: log.warn("'def_file' element of build info dict " "no longer supported") Modified: python/branches/trunk-math/Lib/distutils/command/build_py.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/build_py.py (original) +++ python/branches/trunk-math/Lib/distutils/command/build_py.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, string, os +import string, os from types import * from glob import glob Modified: python/branches/trunk-math/Lib/distutils/command/build_scripts.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/build_scripts.py (original) +++ python/branches/trunk-math/Lib/distutils/command/build_scripts.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, os, re +import os, re from stat import ST_MODE from distutils import sysconfig from distutils.core import Command Modified: python/branches/trunk-math/Lib/distutils/command/install.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/install.py (original) +++ python/branches/trunk-math/Lib/distutils/command/install.py Thu Feb 28 21:09:17 2008 @@ -17,7 +17,6 @@ from distutils.file_util import write_file from distutils.util import convert_path, subst_vars, change_root from distutils.errors import DistutilsOptionError -from glob import glob if sys.version < "2.2": WINDOWS_SCHEME = { @@ -352,7 +351,7 @@ opt_name = opt[0] if opt_name[-1] == "=": opt_name = opt_name[0:-1] - if self.negative_opt.has_key(opt_name): + if opt_name in self.negative_opt: opt_name = string.translate(self.negative_opt[opt_name], longopt_xlate) val = not getattr(self, opt_name) Modified: python/branches/trunk-math/Lib/distutils/command/install_headers.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/install_headers.py (original) +++ python/branches/trunk-math/Lib/distutils/command/install_headers.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,6 @@ __revision__ = "$Id$" -import os from distutils.core import Command Modified: python/branches/trunk-math/Lib/distutils/command/install_lib.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/install_lib.py (original) +++ python/branches/trunk-math/Lib/distutils/command/install_lib.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,7 @@ __revision__ = "$Id$" -import sys, os, string +import os from types import IntType from distutils.core import Command from distutils.errors import DistutilsOptionError Modified: python/branches/trunk-math/Lib/distutils/command/register.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/register.py (original) +++ python/branches/trunk-math/Lib/distutils/command/register.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ __revision__ = "$Id$" -import sys, os, string, urllib2, getpass, urlparse +import os, string, urllib2, getpass, urlparse import StringIO, ConfigParser from distutils.core import Command @@ -120,7 +120,7 @@ # see if we can short-cut and get the username/password from the # config config = None - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): print 'Using PyPI login from %s'%rc @@ -163,7 +163,7 @@ print 'Server response (%s): %s'%(code, result) # possibly save the login - if os.environ.has_key('HOME') and config is None and code == 200: + if 'HOME' in os.environ and config is None and code == 200: rc = os.path.join(os.environ['HOME'], '.pypirc') print 'I can store your PyPI login so future submissions will be faster.' print '(the login will be stored in %s)'%rc Modified: python/branches/trunk-math/Lib/distutils/command/sdist.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/sdist.py (original) +++ python/branches/trunk-math/Lib/distutils/command/sdist.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ __revision__ = "$Id$" -import sys, os, string +import os, string from types import * from glob import glob from distutils.core import Command @@ -383,6 +383,7 @@ if line[-1] == '\n': line = line[0:-1] self.filelist.append(line) + manifest.close() # read_manifest () Modified: python/branches/trunk-math/Lib/distutils/command/upload.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/command/upload.py (original) +++ python/branches/trunk-math/Lib/distutils/command/upload.py Thu Feb 28 21:09:17 2008 @@ -46,7 +46,7 @@ raise DistutilsOptionError( "Must use --sign for --identity to have meaning" ) - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): self.announce('Using PyPI login from %s' % rc) Modified: python/branches/trunk-math/Lib/distutils/core.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/core.py (original) +++ python/branches/trunk-math/Lib/distutils/core.py Thu Feb 28 21:09:17 2008 @@ -101,9 +101,9 @@ else: klass = Distribution - if not attrs.has_key('script_name'): + if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) - if not attrs.has_key('script_args'): + if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments @@ -111,7 +111,7 @@ try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError, msg: - if attrs.has_key('name'): + if 'name' in attrs: raise SystemExit, "error in %s setup command: %s" % \ (attrs['name'], msg) else: Modified: python/branches/trunk-math/Lib/distutils/dir_util.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/dir_util.py (original) +++ python/branches/trunk-math/Lib/distutils/dir_util.py Thu Feb 28 21:09:17 2008 @@ -207,7 +207,7 @@ apply(cmd[0], (cmd[1],)) # remove dir from cache if it's already there abspath = os.path.abspath(cmd[1]) - if _path_created.has_key(abspath): + if abspath in _path_created: del _path_created[abspath] except (IOError, OSError), exc: log.warn(grok_environment_error( Modified: python/branches/trunk-math/Lib/distutils/dist.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/dist.py (original) +++ python/branches/trunk-math/Lib/distutils/dist.py Thu Feb 28 21:09:17 2008 @@ -239,7 +239,7 @@ for (opt, val) in cmd_options.items(): opt_dict[opt] = ("setup script", val) - if attrs.has_key('licence'): + if 'licence' in attrs: attrs['license'] = attrs['licence'] del attrs['licence'] msg = "'licence' distribution option is deprecated; use 'license'" @@ -343,7 +343,7 @@ user_filename = "pydistutils.cfg" # And look for the user config file - if os.environ.has_key('HOME'): + if 'HOME' in os.environ: user_file = os.path.join(os.environ.get('HOME'), user_filename) if os.path.isfile(user_file): files.append(user_file) @@ -388,7 +388,7 @@ # If there was a "global" section in the config file, use it # to set Distribution options. - if self.command_options.has_key('global'): + if 'global' in self.command_options: for (opt, (src, val)) in self.command_options['global'].items(): alias = self.negative_opt.get(opt) try: @@ -907,7 +907,7 @@ try: is_string = type(value) is StringType - if neg_opt.has_key(option) and is_string: + if option in neg_opt and is_string: setattr(command_obj, neg_opt[option], not strtobool(value)) elif option in bool_opts and is_string: setattr(command_obj, option, strtobool(value)) Modified: python/branches/trunk-math/Lib/distutils/fancy_getopt.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/fancy_getopt.py (original) +++ python/branches/trunk-math/Lib/distutils/fancy_getopt.py Thu Feb 28 21:09:17 2008 @@ -97,7 +97,7 @@ self._build_index() def add_option (self, long_option, short_option=None, help_string=None): - if self.option_index.has_key(long_option): + if long_option in self.option_index: raise DistutilsGetoptError, \ "option conflict: already an option '%s'" % long_option else: @@ -109,7 +109,7 @@ def has_option (self, long_option): """Return true if the option table for this parser has an option with long name 'long_option'.""" - return self.option_index.has_key(long_option) + return long_option in self.option_index def get_attr_name (self, long_option): """Translate long option name 'long_option' to the form it @@ -121,11 +121,11 @@ def _check_alias_dict (self, aliases, what): assert type(aliases) is DictionaryType for (alias, opt) in aliases.items(): - if not self.option_index.has_key(alias): + if alias not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "option '%s' not defined") % (what, alias, alias) - if not self.option_index.has_key(opt): + if opt not in self.option_index: raise DistutilsGetoptError, \ ("invalid %s '%s': " "aliased option '%s' not defined") % (what, alias, opt) Modified: python/branches/trunk-math/Lib/distutils/filelist.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/filelist.py (original) +++ python/branches/trunk-math/Lib/distutils/filelist.py Thu Feb 28 21:09:17 2008 @@ -11,7 +11,6 @@ import os, string, re import fnmatch from types import * -from glob import glob from distutils.util import convert_path from distutils.errors import DistutilsTemplateError, DistutilsInternalError from distutils import log Modified: python/branches/trunk-math/Lib/distutils/msvccompiler.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/msvccompiler.py (original) +++ python/branches/trunk-math/Lib/distutils/msvccompiler.py Thu Feb 28 21:09:17 2008 @@ -252,7 +252,7 @@ def initialize(self): self.__paths = [] - if os.environ.has_key("DISTUTILS_USE_SDK") and os.environ.has_key("MSSdk") and self.find_exe("cl.exe"): + if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" Modified: python/branches/trunk-math/Lib/distutils/sysconfig.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/sysconfig.py (original) +++ python/branches/trunk-math/Lib/distutils/sysconfig.py Thu Feb 28 21:09:17 2008 @@ -161,22 +161,22 @@ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO') - if os.environ.has_key('CC'): + if 'CC' in os.environ: cc = os.environ['CC'] - if os.environ.has_key('CXX'): + if 'CXX' in os.environ: cxx = os.environ['CXX'] - if os.environ.has_key('LDSHARED'): + if 'LDSHARED' in os.environ: ldshared = os.environ['LDSHARED'] - if os.environ.has_key('CPP'): + if 'CPP' in os.environ: cpp = os.environ['CPP'] else: cpp = cc + " -E" # not always - if os.environ.has_key('LDFLAGS'): + if 'LDFLAGS' in os.environ: ldshared = ldshared + ' ' + os.environ['LDFLAGS'] - if os.environ.has_key('CFLAGS'): + if 'CFLAGS' in os.environ: cflags = opt + ' ' + os.environ['CFLAGS'] ldshared = ldshared + ' ' + os.environ['CFLAGS'] - if os.environ.has_key('CPPFLAGS'): + if 'CPPFLAGS' in os.environ: cpp = cpp + ' ' + os.environ['CPPFLAGS'] cflags = cflags + ' ' + os.environ['CPPFLAGS'] ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] @@ -291,12 +291,12 @@ if m: n = m.group(1) found = True - if done.has_key(n): + if n in done: item = str(done[n]) - elif notdone.has_key(n): + elif n in notdone: # get it on a subsequent round found = False - elif os.environ.has_key(n): + elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] else: @@ -380,7 +380,7 @@ # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so # it needs to be compatible. # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and g.has_key('MACOSX_DEPLOYMENT_TARGET'): + if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g: cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') if cur_target == '': Modified: python/branches/trunk-math/Lib/distutils/tests/test_dist.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/tests/test_dist.py (original) +++ python/branches/trunk-math/Lib/distutils/tests/test_dist.py Thu Feb 28 21:09:17 2008 @@ -3,10 +3,8 @@ import distutils.cmd import distutils.dist import os -import shutil import StringIO import sys -import tempfile import unittest from test.test_support import TESTFN Modified: python/branches/trunk-math/Lib/distutils/tests/test_sysconfig.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/tests/test_sysconfig.py (original) +++ python/branches/trunk-math/Lib/distutils/tests/test_sysconfig.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ from distutils import sysconfig import os -import sys import unittest from test.test_support import TESTFN Modified: python/branches/trunk-math/Lib/distutils/text_file.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/text_file.py (original) +++ python/branches/trunk-math/Lib/distutils/text_file.py Thu Feb 28 21:09:17 2008 @@ -89,7 +89,7 @@ # set values for all options -- either from client option hash # or fallback to default_options for opt in self.default_options.keys(): - if options.has_key (opt): + if opt in options: setattr (self, opt, options[opt]) else: @@ -97,7 +97,7 @@ # sanity check client option hash for opt in options.keys(): - if not self.default_options.has_key (opt): + if opt not in self.default_options: raise KeyError, "invalid TextFile option '%s'" % opt if file is None: Modified: python/branches/trunk-math/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/unixccompiler.py (original) +++ python/branches/trunk-math/Lib/distutils/unixccompiler.py Thu Feb 28 21:09:17 2008 @@ -17,7 +17,6 @@ import os, sys from types import StringType, NoneType -from copy import copy from distutils import sysconfig from distutils.dep_util import newer Modified: python/branches/trunk-math/Lib/distutils/util.py ============================================================================== --- python/branches/trunk-math/Lib/distutils/util.py (original) +++ python/branches/trunk-math/Lib/distutils/util.py Thu Feb 28 21:09:17 2008 @@ -219,11 +219,11 @@ if _environ_checked: return - if os.name == 'posix' and not os.environ.has_key('HOME'): + if os.name == 'posix' and 'HOME' not in os.environ: import pwd os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] - if not os.environ.has_key('PLAT'): + if 'PLAT' not in os.environ: os.environ['PLAT'] = get_platform() _environ_checked = 1 @@ -241,7 +241,7 @@ check_environ() def _subst (match, local_vars=local_vars): var_name = match.group(1) - if local_vars.has_key(var_name): + if var_name in local_vars: return str(local_vars[var_name]) else: return os.environ[var_name] Modified: python/branches/trunk-math/Lib/email/base64mime.py ============================================================================== --- python/branches/trunk-math/Lib/email/base64mime.py (original) +++ python/branches/trunk-math/Lib/email/base64mime.py Thu Feb 28 21:09:17 2008 @@ -35,7 +35,6 @@ 'header_encode', ] -import re from binascii import b2a_base64, a2b_base64 from email.utils import fix_eols Modified: python/branches/trunk-math/Lib/email/utils.py ============================================================================== --- python/branches/trunk-math/Lib/email/utils.py (original) +++ python/branches/trunk-math/Lib/email/utils.py Thu Feb 28 21:09:17 2008 @@ -27,7 +27,6 @@ import socket import urllib import warnings -from cStringIO import StringIO from email._parseaddr import quote from email._parseaddr import AddressList as _AddressList Modified: python/branches/trunk-math/Lib/hotshot/log.py ============================================================================== --- python/branches/trunk-math/Lib/hotshot/log.py (original) +++ python/branches/trunk-math/Lib/hotshot/log.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ import os.path import parser import symbol -import sys from _hotshot import \ WHAT_ENTER, \ Modified: python/branches/trunk-math/Lib/hotshot/stones.py ============================================================================== --- python/branches/trunk-math/Lib/hotshot/stones.py (original) +++ python/branches/trunk-math/Lib/hotshot/stones.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ import errno import hotshot import hotshot.stats -import os import sys import test.pystone Modified: python/branches/trunk-math/Lib/httplib.py ============================================================================== --- python/branches/trunk-math/Lib/httplib.py (original) +++ python/branches/trunk-math/Lib/httplib.py Thu Feb 28 21:09:17 2008 @@ -66,7 +66,6 @@ Req-sent-unread-response _CS_REQ_SENT """ -import errno import mimetools import socket from urlparse import urlsplit @@ -439,6 +438,9 @@ self.length = int(length) except ValueError: self.length = None + else: + if self.length < 0: # ignore nonsensical negative lengths + self.length = None else: self.length = None @@ -547,7 +549,13 @@ i = line.find(';') if i >= 0: line = line[:i] # strip chunk-extensions - chunk_left = int(line, 16) + try: + chunk_left = int(line, 16) + except ValueError: + # close the connection as protocol synchronisation is + # probably lost + self.close() + raise IncompleteRead(value) if chunk_left == 0: break if amt is None: Modified: python/branches/trunk-math/Lib/idlelib/MultiCall.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/MultiCall.py (original) +++ python/branches/trunk-math/Lib/idlelib/MultiCall.py Thu Feb 28 21:09:17 2008 @@ -30,7 +30,6 @@ """ import sys -import os import string import re import Tkinter Modified: python/branches/trunk-math/Lib/idlelib/RemoteDebugger.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/RemoteDebugger.py (original) +++ python/branches/trunk-math/Lib/idlelib/RemoteDebugger.py Thu Feb 28 21:09:17 2008 @@ -20,7 +20,6 @@ """ -import sys import types import rpc import Debugger Modified: python/branches/trunk-math/Lib/idlelib/TreeWidget.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/TreeWidget.py (original) +++ python/branches/trunk-math/Lib/idlelib/TreeWidget.py Thu Feb 28 21:09:17 2008 @@ -15,7 +15,6 @@ # - optimize tree redraw after expand of subnode import os -import sys from Tkinter import * import imp Modified: python/branches/trunk-math/Lib/idlelib/UndoDelegator.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/UndoDelegator.py (original) +++ python/branches/trunk-math/Lib/idlelib/UndoDelegator.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,3 @@ -import sys import string from Tkinter import * from Delegator import Delegator Modified: python/branches/trunk-math/Lib/idlelib/configDialog.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/configDialog.py (original) +++ python/branches/trunk-math/Lib/idlelib/configDialog.py Thu Feb 28 21:09:17 2008 @@ -11,7 +11,7 @@ """ from Tkinter import * import tkMessageBox, tkColorChooser, tkFont -import string, copy +import string from configHandler import idleConf from dynOptionMenuWidget import DynOptionMenu Modified: python/branches/trunk-math/Lib/idlelib/keybindingDialog.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/keybindingDialog.py (original) +++ python/branches/trunk-math/Lib/idlelib/keybindingDialog.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,7 @@ """ from Tkinter import * import tkMessageBox -import string, os +import string class GetKeysDialog(Toplevel): def __init__(self,parent,title,action,currentKeySequences): Modified: python/branches/trunk-math/Lib/idlelib/run.py ============================================================================== --- python/branches/trunk-math/Lib/idlelib/run.py (original) +++ python/branches/trunk-math/Lib/idlelib/run.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ import sys -import os import linecache import time import socket Modified: python/branches/trunk-math/Lib/imaplib.py ============================================================================== --- python/branches/trunk-math/Lib/imaplib.py (original) +++ python/branches/trunk-math/Lib/imaplib.py Thu Feb 28 21:09:17 2008 @@ -1156,7 +1156,7 @@ chunks = [] read = 0 while read < size: - data = self.sslobj.read(size-read) + data = self.sslobj.read(min(size-read, 16384)) read += len(data) chunks.append(data) Modified: python/branches/trunk-math/Lib/inspect.py ============================================================================== --- python/branches/trunk-math/Lib/inspect.py (original) +++ python/branches/trunk-math/Lib/inspect.py Thu Feb 28 21:09:17 2008 @@ -7,8 +7,9 @@ Here are some of the useful functions provided by this module: - ismodule(), isclass(), ismethod(), isfunction(), istraceback(), - isframe(), iscode(), isbuiltin(), isroutine() - check object types + ismodule(), isclass(), ismethod(), isfunction(), isgeneratorfunction(), + isgenerator(), istraceback(), isframe(), iscode(), isbuiltin(), + isroutine() - check object types getmembers() - get members of an object that satisfy a given condition getfile(), getsourcefile(), getsource() - find an object's source code @@ -28,9 +29,19 @@ __author__ = 'Ka-Ping Yee ' __date__ = '1 Jan 2001' -import sys, os, types, string, re, dis, imp, tokenize, linecache +import sys +import os +import types +import string +import re +import dis +import imp +import tokenize +import linecache from operator import attrgetter from collections import namedtuple +from compiler.consts import (CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, + CO_VARKEYWORDS, CO_GENERATOR) # ----------------------------------------------------------- type-checking def ismodule(object): @@ -137,6 +148,33 @@ func_name (same as __name__)""" return isinstance(object, types.FunctionType) +def isgeneratorfunction(object): + """Return true if the object is a user-defined generator function. + + Generator function objects provides same attributes as functions. + + See isfunction.__doc__ for attributes listing.""" + if (isfunction(object) or ismethod(object)) and \ + object.func_code.co_flags & CO_GENERATOR: + return True + +def isgenerator(object): + """Return true if the object is a generator. + + Generator objects provide these attributes: + __iter__ defined to support interation over container + close raises a new GeneratorExit exception inside the + generator to terminate the iteration + gi_code code object + gi_frame frame object or possibly None once the generator has + been exhausted + gi_running set to 1 when generator is executing, 0 otherwise + next return the next item from the container + send resumes the generator and "sends" a value that becomes + the result of the current yield-expression + throw used to raise an exception inside the generator""" + return isinstance(object, types.GeneratorType) + def istraceback(object): """Return true if the object is a traceback. @@ -199,6 +237,10 @@ or ismethod(object) or ismethoddescriptor(object)) +def isgenerator(object): + """Return true if the object is a generator object.""" + return isinstance(object, types.GeneratorType) + def getmembers(object, predicate=None): """Return all members of an object as (name, value) pairs sorted by name. Optionally, only return members that satisfy a given predicate.""" @@ -671,9 +713,6 @@ return walktree(roots, children, None) # ------------------------------------------------ argument list extraction -# These constants are from Python's compile.h. -CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS = 1, 2, 4, 8 - Arguments = namedtuple('Arguments', 'args varargs keywords') def getargs(co): Modified: python/branches/trunk-math/Lib/lib-tk/tkSimpleDialog.py ============================================================================== --- python/branches/trunk-math/Lib/lib-tk/tkSimpleDialog.py (original) +++ python/branches/trunk-math/Lib/lib-tk/tkSimpleDialog.py Thu Feb 28 21:09:17 2008 @@ -26,7 +26,6 @@ ''' from Tkinter import * -import os class Dialog(Toplevel): Modified: python/branches/trunk-math/Lib/logging/handlers.py ============================================================================== --- python/branches/trunk-math/Lib/logging/handlers.py (original) +++ python/branches/trunk-math/Lib/logging/handlers.py Thu Feb 28 21:09:17 2008 @@ -27,7 +27,7 @@ To use, simply 'import logging' and log away! """ -import sys, logging, socket, types, os, string, cPickle, struct, time, glob +import logging, socket, types, os, string, cPickle, struct, time, glob from stat import ST_DEV, ST_INO try: Modified: python/branches/trunk-math/Lib/ntpath.py ============================================================================== --- python/branches/trunk-math/Lib/ntpath.py (original) +++ python/branches/trunk-math/Lib/ntpath.py Thu Feb 28 21:09:17 2008 @@ -6,8 +6,8 @@ """ import os -import stat import sys +import stat import genericpath from genericpath import * Modified: python/branches/trunk-math/Lib/plat-mac/MiniAEFrame.py ============================================================================== --- python/branches/trunk-math/Lib/plat-mac/MiniAEFrame.py (original) +++ python/branches/trunk-math/Lib/plat-mac/MiniAEFrame.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,6 @@ only suitable for the simplest of AppleEvent servers. """ -import sys import traceback import MacOS from Carbon import AE Modified: python/branches/trunk-math/Lib/plat-mac/aepack.py ============================================================================== --- python/branches/trunk-math/Lib/plat-mac/aepack.py (original) +++ python/branches/trunk-math/Lib/plat-mac/aepack.py Thu Feb 28 21:09:17 2008 @@ -13,18 +13,14 @@ # import struct -import string import types -from string import strip from types import * from Carbon import AE from Carbon.AppleEvents import * import MacOS import Carbon.File -import StringIO import aetypes from aetypes import mkenum, ObjectSpecifier -import os # These ones seem to be missing from AppleEvents # (they're in AERegistry.h) Modified: python/branches/trunk-math/Lib/plat-mac/bgenlocations.py ============================================================================== --- python/branches/trunk-math/Lib/plat-mac/bgenlocations.py (original) +++ python/branches/trunk-math/Lib/plat-mac/bgenlocations.py Thu Feb 28 21:09:17 2008 @@ -5,7 +5,7 @@ # but mac-style for MacPython, whether running on OS9 or OSX. # -import sys, os +import os Error = "bgenlocations.Error" # Modified: python/branches/trunk-math/Lib/plat-mac/macostools.py ============================================================================== --- python/branches/trunk-math/Lib/plat-mac/macostools.py (original) +++ python/branches/trunk-math/Lib/plat-mac/macostools.py Thu Feb 28 21:09:17 2008 @@ -7,9 +7,7 @@ from Carbon import Res from Carbon import File, Files import os -import sys import MacOS -import time try: openrf = MacOS.openrf except AttributeError: Modified: python/branches/trunk-math/Lib/plat-riscos/rourl2path.py ============================================================================== --- python/branches/trunk-math/Lib/plat-riscos/rourl2path.py (original) +++ python/branches/trunk-math/Lib/plat-riscos/rourl2path.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,6 @@ import string import urllib -import os __all__ = ["url2pathname","pathname2url"] Modified: python/branches/trunk-math/Lib/popen2.py ============================================================================== --- python/branches/trunk-math/Lib/popen2.py (original) +++ python/branches/trunk-math/Lib/popen2.py Thu Feb 28 21:09:17 2008 @@ -82,11 +82,7 @@ def _run_child(self, cmd): if isinstance(cmd, basestring): cmd = ['/bin/sh', '-c', cmd] - for i in xrange(3, MAXFD): - try: - os.close(i) - except OSError: - pass + os.closerange(3, MAXFD) try: os.execvp(cmd[0], cmd) finally: Modified: python/branches/trunk-math/Lib/pydoc.py ============================================================================== --- python/branches/trunk-math/Lib/pydoc.py (original) +++ python/branches/trunk-math/Lib/pydoc.py Thu Feb 28 21:09:17 2008 @@ -664,7 +664,7 @@ contents = self.multicolumn( modules, lambda (key, value), s=self: s.modulelink(value)) result = result + self.bigsection( - 'Modules', '#fffff', '#aa55cc', contents) + 'Modules', '#ffffff', '#aa55cc', contents) if classes: classlist = map(lambda (key, value): value, classes) Modified: python/branches/trunk-math/Lib/runpy.py ============================================================================== --- python/branches/trunk-math/Lib/runpy.py (original) +++ python/branches/trunk-math/Lib/runpy.py Thu Feb 28 21:09:17 2008 @@ -89,6 +89,9 @@ # XXX ncoghlan: Should this be documented and made public? +# (Current thoughts: don't repeat the mistake that lead to its +# creation when run_module() no longer met the needs of +# mainmodule.c, but couldn't be changed because it was public) def _run_module_as_main(mod_name, set_argv0=True): """Runs the designated module in the __main__ namespace @@ -96,7 +99,20 @@ __file__ __loader__ """ - loader, code, fname = _get_module_details(mod_name) + try: + loader, code, fname = _get_module_details(mod_name) + except ImportError as exc: + # Try to provide a good error message + # for directories, zip files and the -m switch + if set_argv0: + # For -m switch, just disply the exception + info = str(exc) + else: + # For directories/zipfiles, let the user + # know what the code was looking for + info = "can't find '__main__.py' in %r" % sys.argv[0] + msg = "%s: %s" % (sys.executable, info) + sys.exit(msg) pkg_name = mod_name.rpartition('.')[0] main_globals = sys.modules["__main__"].__dict__ if set_argv0: Modified: python/branches/trunk-math/Lib/smtplib.py ============================================================================== --- python/branches/trunk-math/Lib/smtplib.py (original) +++ python/branches/trunk-math/Lib/smtplib.py Thu Feb 28 21:09:17 2008 @@ -298,7 +298,7 @@ def send(self, str): """Send `str' to the server.""" if self.debuglevel > 0: print>>stderr, 'send:', repr(str) - if self.sock: + if hasattr(self, 'sock') and self.sock: try: self.sock.sendall(str) except socket.error: @@ -486,7 +486,7 @@ vrfy=verify def expn(self, address): - """SMTP 'verify' command -- checks for address validity.""" + """SMTP 'expn' command -- expands a mailing list.""" self.putcmd("expn", quoteaddr(address)) return self.getreply() Modified: python/branches/trunk-math/Lib/socket.py ============================================================================== --- python/branches/trunk-math/Lib/socket.py (original) +++ python/branches/trunk-math/Lib/socket.py Thu Feb 28 21:09:17 2008 @@ -328,7 +328,7 @@ self._rbuf = "" while True: left = size - buf_len - recv_size = max(self._rbufsize, left) + recv_size = min(self._rbufsize, left) data = self._sock.recv(recv_size) if not data: break Modified: python/branches/trunk-math/Lib/sqlite3/test/hooks.py ============================================================================== --- python/branches/trunk-math/Lib/sqlite3/test/hooks.py (original) +++ python/branches/trunk-math/Lib/sqlite3/test/hooks.py Thu Feb 28 21:09:17 2008 @@ -21,7 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import os, unittest +import unittest import sqlite3 as sqlite class CollationTests(unittest.TestCase): Modified: python/branches/trunk-math/Lib/ssl.py ============================================================================== --- python/branches/trunk-math/Lib/ssl.py (original) +++ python/branches/trunk-math/Lib/ssl.py Thu Feb 28 21:09:17 2008 @@ -55,7 +55,7 @@ PROTOCOL_TLSv1 """ -import os, sys, textwrap +import textwrap import _ssl # if we can't import it, let the error propagate Modified: python/branches/trunk-math/Lib/string.py ============================================================================== --- python/branches/trunk-math/Lib/string.py (original) +++ python/branches/trunk-math/Lib/string.py Thu Feb 28 21:09:17 2008 @@ -527,3 +527,115 @@ letters = lowercase + uppercase except ImportError: pass # Use the original versions + +######################################################################## +# the Formatter class +# see PEP 3101 for details and purpose of this class + +# The hard parts are reused from the C implementation. They're +# exposed here via the sys module. sys was chosen because it's always +# available and doesn't have to be dynamically loaded. + +# The overall parser is implemented in str._formatter_parser. +# The field name parser is implemented in str._formatter_field_name_split + +class Formatter(object): + def format(self, format_string, *args, **kwargs): + return self.vformat(format_string, args, kwargs) + + def vformat(self, format_string, args, kwargs): + used_args = set() + result = self._vformat(format_string, args, kwargs, used_args, 2) + self.check_unused_args(used_args, args, kwargs) + return result + + def _vformat(self, format_string, args, kwargs, used_args, recursion_depth): + if recursion_depth < 0: + raise ValueError('Max string recursion exceeded') + result = [] + for literal_text, field_name, format_spec, conversion in \ + self.parse(format_string): + + # output the literal text + if literal_text: + result.append(literal_text) + + # if there's a field, output it + if field_name is not None: + # this is some markup, find the object and do + # the formatting + + # given the field_name, find the object it references + # and the argument it came from + obj, arg_used = self.get_field(field_name, args, kwargs) + used_args.add(arg_used) + + # do any conversion on the resulting object + obj = self.convert_field(obj, conversion) + + # expand the format spec, if needed + format_spec = self._vformat(format_spec, args, kwargs, + used_args, recursion_depth-1) + + # format the object and append to the result + result.append(self.format_field(obj, format_spec)) + + return ''.join(result) + + + def get_value(self, key, args, kwargs): + if isinstance(key, (int, long)): + return args[key] + else: + return kwargs[key] + + + def check_unused_args(self, used_args, args, kwargs): + pass + + + def format_field(self, value, format_spec): + return format(value, format_spec) + + + def convert_field(self, value, conversion): + # do any conversion on the resulting object + if conversion == 'r': + return repr(value) + elif conversion == 's': + return str(value) + elif conversion is None: + return value + raise ValueError("Unknown converion specifier {0!s}".format(conversion)) + + + # returns an iterable that contains tuples of the form: + # (literal_text, field_name, format_spec, conversion) + # literal_text can be zero length + # field_name can be None, in which case there's no + # object to format and output + # if field_name is not None, it is looked up, formatted + # with format_spec and conversion and then used + def parse(self, format_string): + return format_string._formatter_parser() + + + # given a field_name, find the object it references. + # field_name: the field being looked up, e.g. "0.name" + # or "lookup[3]" + # used_args: a set of which args have been used + # args, kwargs: as passed in to vformat + def get_field(self, field_name, args, kwargs): + first, rest = field_name._formatter_field_name_split() + + obj = self.get_value(first, args, kwargs) + + # loop through the rest of the field_name, doing + # getattr or getitem as needed + for is_attr, i in rest: + if is_attr: + obj = getattr(obj, i) + else: + obj = obj[i] + + return obj, first Modified: python/branches/trunk-math/Lib/symbol.py ============================================================================== --- python/branches/trunk-math/Lib/symbol.py (original) +++ python/branches/trunk-math/Lib/symbol.py Thu Feb 28 21:09:17 2008 @@ -15,85 +15,86 @@ eval_input = 258 decorator = 259 decorators = 260 -funcdef = 261 -parameters = 262 -varargslist = 263 -fpdef = 264 -fplist = 265 -stmt = 266 -simple_stmt = 267 -small_stmt = 268 -expr_stmt = 269 -augassign = 270 -print_stmt = 271 -del_stmt = 272 -pass_stmt = 273 -flow_stmt = 274 -break_stmt = 275 -continue_stmt = 276 -return_stmt = 277 -yield_stmt = 278 -raise_stmt = 279 -import_stmt = 280 -import_name = 281 -import_from = 282 -import_as_name = 283 -dotted_as_name = 284 -import_as_names = 285 -dotted_as_names = 286 -dotted_name = 287 -global_stmt = 288 -exec_stmt = 289 -assert_stmt = 290 -compound_stmt = 291 -if_stmt = 292 -while_stmt = 293 -for_stmt = 294 -try_stmt = 295 -with_stmt = 296 -with_var = 297 -except_clause = 298 -suite = 299 -testlist_safe = 300 -old_test = 301 -old_lambdef = 302 -test = 303 -or_test = 304 -and_test = 305 -not_test = 306 -comparison = 307 -comp_op = 308 -expr = 309 -xor_expr = 310 -and_expr = 311 -shift_expr = 312 -arith_expr = 313 -term = 314 -factor = 315 -power = 316 -atom = 317 -listmaker = 318 -testlist_gexp = 319 -lambdef = 320 -trailer = 321 -subscriptlist = 322 -subscript = 323 -sliceop = 324 -exprlist = 325 -testlist = 326 -dictmaker = 327 -classdef = 328 -arglist = 329 -argument = 330 -list_iter = 331 -list_for = 332 -list_if = 333 -gen_iter = 334 -gen_for = 335 -gen_if = 336 -testlist1 = 337 -encoding_decl = 338 -yield_expr = 339 +decorated = 261 +funcdef = 262 +parameters = 263 +varargslist = 264 +fpdef = 265 +fplist = 266 +stmt = 267 +simple_stmt = 268 +small_stmt = 269 +expr_stmt = 270 +augassign = 271 +print_stmt = 272 +del_stmt = 273 +pass_stmt = 274 +flow_stmt = 275 +break_stmt = 276 +continue_stmt = 277 +return_stmt = 278 +yield_stmt = 279 +raise_stmt = 280 +import_stmt = 281 +import_name = 282 +import_from = 283 +import_as_name = 284 +dotted_as_name = 285 +import_as_names = 286 +dotted_as_names = 287 +dotted_name = 288 +global_stmt = 289 +exec_stmt = 290 +assert_stmt = 291 +compound_stmt = 292 +if_stmt = 293 +while_stmt = 294 +for_stmt = 295 +try_stmt = 296 +with_stmt = 297 +with_var = 298 +except_clause = 299 +suite = 300 +testlist_safe = 301 +old_test = 302 +old_lambdef = 303 +test = 304 +or_test = 305 +and_test = 306 +not_test = 307 +comparison = 308 +comp_op = 309 +expr = 310 +xor_expr = 311 +and_expr = 312 +shift_expr = 313 +arith_expr = 314 +term = 315 +factor = 316 +power = 317 +atom = 318 +listmaker = 319 +testlist_gexp = 320 +lambdef = 321 +trailer = 322 +subscriptlist = 323 +subscript = 324 +sliceop = 325 +exprlist = 326 +testlist = 327 +dictmaker = 328 +classdef = 329 +arglist = 330 +argument = 331 +list_iter = 332 +list_for = 333 +list_if = 334 +gen_iter = 335 +gen_for = 336 +gen_if = 337 +testlist1 = 338 +encoding_decl = 339 +yield_expr = 340 #--end constants-- sym_name = {} Modified: python/branches/trunk-math/Lib/test/fork_wait.py ============================================================================== --- python/branches/trunk-math/Lib/test/fork_wait.py (original) +++ python/branches/trunk-math/Lib/test/fork_wait.py Thu Feb 28 21:09:17 2008 @@ -13,7 +13,6 @@ """ import os, sys, time, thread, unittest -from test.test_support import TestSkipped LONGSLEEP = 2 SHORTSLEEP = 0.5 Modified: python/branches/trunk-math/Lib/test/list_tests.py ============================================================================== --- python/branches/trunk-math/Lib/test/list_tests.py (original) +++ python/branches/trunk-math/Lib/test/list_tests.py Thu Feb 28 21:09:17 2008 @@ -5,7 +5,6 @@ import sys import os -import unittest from test import test_support, seq_tests class CommonTest(seq_tests.CommonTest): Deleted: /python/branches/trunk-math/Lib/test/output/test_logging ============================================================================== --- /python/branches/trunk-math/Lib/test/output/test_logging Thu Feb 28 21:09:17 2008 +++ (empty file) @@ -1,525 +0,0 @@ -test_logging --- log_test0 begin --------------------------------------------------- -CRITICAL:ERR:Message 0 -ERROR:ERR:Message 1 -CRITICAL:INF:Message 2 -ERROR:INF:Message 3 -WARNING:INF:Message 4 -INFO:INF:Message 5 -CRITICAL:INF.UNDEF:Message 6 -ERROR:INF.UNDEF:Message 7 -WARNING:INF.UNDEF:Message 8 -INFO:INF.UNDEF:Message 9 -CRITICAL:INF.ERR:Message 10 -ERROR:INF.ERR:Message 11 -CRITICAL:INF.ERR.UNDEF:Message 12 -ERROR:INF.ERR.UNDEF:Message 13 -CRITICAL:DEB:Message 14 -ERROR:DEB:Message 15 -WARNING:DEB:Message 16 -INFO:DEB:Message 17 -DEBUG:DEB:Message 18 -CRITICAL:UNDEF:Message 19 -ERROR:UNDEF:Message 20 -WARNING:UNDEF:Message 21 -INFO:UNDEF:Message 22 -CRITICAL:INF.BADPARENT.UNDEF:Message 23 -CRITICAL:INF.BADPARENT:Message 24 -INFO:INF:Finish up, it's closing time. Messages should bear numbers 0 through 24. --- log_test0 end --------------------------------------------------- --- log_test1 begin --------------------------------------------------- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering at handler level to SOCIABLE -- --- setting logging level to 'Boring' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering using GARRULOUS filter -- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Sociable:root:This should only be seen at the 'Sociable' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- Filtering using specific filter for SOCIABLE, TACITURN -- --- setting logging level to 'Boring' ----- -Boring:root:This should only be seen at the 'Boring' logging level (or lower) -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Chatterbox' ----- -Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower) -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Garrulous' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Talkative' ----- -Talkative:root:This should only be seen at the 'Talkative' logging level (or lower) -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Verbose' ----- -Verbose:root:This should only be seen at the 'Verbose' logging level (or lower) -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Sociable' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Effusive' ----- -Effusive:root:This should only be seen at the 'Effusive' logging level (or lower) -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Terse' ----- -Terse:root:This should only be seen at the 'Terse' logging level (or lower) -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Taciturn' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- setting logging level to 'Silent' ----- -Silent:root:This should only be seen at the 'Silent' logging level (or lower) --- log_test1 end --------------------------------------------------- --- log_test2 begin --------------------------------------------------- --- logging at DEBUG, nothing should be seen yet -- --- logging at INFO, nothing should be seen yet -- --- logging at WARNING, 3 messages should be seen -- -DEBUG:root:Debug message -INFO:root:Info message -WARNING:root:Warn message --- logging 0 at INFO, messages should be seen every 10 events -- --- logging 1 at INFO, messages should be seen every 10 events -- --- logging 2 at INFO, messages should be seen every 10 events -- --- logging 3 at INFO, messages should be seen every 10 events -- --- logging 4 at INFO, messages should be seen every 10 events -- --- logging 5 at INFO, messages should be seen every 10 events -- --- logging 6 at INFO, messages should be seen every 10 events -- --- logging 7 at INFO, messages should be seen every 10 events -- --- logging 8 at INFO, messages should be seen every 10 events -- --- logging 9 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 0 -INFO:root:Info index = 1 -INFO:root:Info index = 2 -INFO:root:Info index = 3 -INFO:root:Info index = 4 -INFO:root:Info index = 5 -INFO:root:Info index = 6 -INFO:root:Info index = 7 -INFO:root:Info index = 8 -INFO:root:Info index = 9 --- logging 10 at INFO, messages should be seen every 10 events -- --- logging 11 at INFO, messages should be seen every 10 events -- --- logging 12 at INFO, messages should be seen every 10 events -- --- logging 13 at INFO, messages should be seen every 10 events -- --- logging 14 at INFO, messages should be seen every 10 events -- --- logging 15 at INFO, messages should be seen every 10 events -- --- logging 16 at INFO, messages should be seen every 10 events -- --- logging 17 at INFO, messages should be seen every 10 events -- --- logging 18 at INFO, messages should be seen every 10 events -- --- logging 19 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 10 -INFO:root:Info index = 11 -INFO:root:Info index = 12 -INFO:root:Info index = 13 -INFO:root:Info index = 14 -INFO:root:Info index = 15 -INFO:root:Info index = 16 -INFO:root:Info index = 17 -INFO:root:Info index = 18 -INFO:root:Info index = 19 --- logging 20 at INFO, messages should be seen every 10 events -- --- logging 21 at INFO, messages should be seen every 10 events -- --- logging 22 at INFO, messages should be seen every 10 events -- --- logging 23 at INFO, messages should be seen every 10 events -- --- logging 24 at INFO, messages should be seen every 10 events -- --- logging 25 at INFO, messages should be seen every 10 events -- --- logging 26 at INFO, messages should be seen every 10 events -- --- logging 27 at INFO, messages should be seen every 10 events -- --- logging 28 at INFO, messages should be seen every 10 events -- --- logging 29 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 20 -INFO:root:Info index = 21 -INFO:root:Info index = 22 -INFO:root:Info index = 23 -INFO:root:Info index = 24 -INFO:root:Info index = 25 -INFO:root:Info index = 26 -INFO:root:Info index = 27 -INFO:root:Info index = 28 -INFO:root:Info index = 29 --- logging 30 at INFO, messages should be seen every 10 events -- --- logging 31 at INFO, messages should be seen every 10 events -- --- logging 32 at INFO, messages should be seen every 10 events -- --- logging 33 at INFO, messages should be seen every 10 events -- --- logging 34 at INFO, messages should be seen every 10 events -- --- logging 35 at INFO, messages should be seen every 10 events -- --- logging 36 at INFO, messages should be seen every 10 events -- --- logging 37 at INFO, messages should be seen every 10 events -- --- logging 38 at INFO, messages should be seen every 10 events -- --- logging 39 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 30 -INFO:root:Info index = 31 -INFO:root:Info index = 32 -INFO:root:Info index = 33 -INFO:root:Info index = 34 -INFO:root:Info index = 35 -INFO:root:Info index = 36 -INFO:root:Info index = 37 -INFO:root:Info index = 38 -INFO:root:Info index = 39 --- logging 40 at INFO, messages should be seen every 10 events -- --- logging 41 at INFO, messages should be seen every 10 events -- --- logging 42 at INFO, messages should be seen every 10 events -- --- logging 43 at INFO, messages should be seen every 10 events -- --- logging 44 at INFO, messages should be seen every 10 events -- --- logging 45 at INFO, messages should be seen every 10 events -- --- logging 46 at INFO, messages should be seen every 10 events -- --- logging 47 at INFO, messages should be seen every 10 events -- --- logging 48 at INFO, messages should be seen every 10 events -- --- logging 49 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 40 -INFO:root:Info index = 41 -INFO:root:Info index = 42 -INFO:root:Info index = 43 -INFO:root:Info index = 44 -INFO:root:Info index = 45 -INFO:root:Info index = 46 -INFO:root:Info index = 47 -INFO:root:Info index = 48 -INFO:root:Info index = 49 --- logging 50 at INFO, messages should be seen every 10 events -- --- logging 51 at INFO, messages should be seen every 10 events -- --- logging 52 at INFO, messages should be seen every 10 events -- --- logging 53 at INFO, messages should be seen every 10 events -- --- logging 54 at INFO, messages should be seen every 10 events -- --- logging 55 at INFO, messages should be seen every 10 events -- --- logging 56 at INFO, messages should be seen every 10 events -- --- logging 57 at INFO, messages should be seen every 10 events -- --- logging 58 at INFO, messages should be seen every 10 events -- --- logging 59 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 50 -INFO:root:Info index = 51 -INFO:root:Info index = 52 -INFO:root:Info index = 53 -INFO:root:Info index = 54 -INFO:root:Info index = 55 -INFO:root:Info index = 56 -INFO:root:Info index = 57 -INFO:root:Info index = 58 -INFO:root:Info index = 59 --- logging 60 at INFO, messages should be seen every 10 events -- --- logging 61 at INFO, messages should be seen every 10 events -- --- logging 62 at INFO, messages should be seen every 10 events -- --- logging 63 at INFO, messages should be seen every 10 events -- --- logging 64 at INFO, messages should be seen every 10 events -- --- logging 65 at INFO, messages should be seen every 10 events -- --- logging 66 at INFO, messages should be seen every 10 events -- --- logging 67 at INFO, messages should be seen every 10 events -- --- logging 68 at INFO, messages should be seen every 10 events -- --- logging 69 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 60 -INFO:root:Info index = 61 -INFO:root:Info index = 62 -INFO:root:Info index = 63 -INFO:root:Info index = 64 -INFO:root:Info index = 65 -INFO:root:Info index = 66 -INFO:root:Info index = 67 -INFO:root:Info index = 68 -INFO:root:Info index = 69 --- logging 70 at INFO, messages should be seen every 10 events -- --- logging 71 at INFO, messages should be seen every 10 events -- --- logging 72 at INFO, messages should be seen every 10 events -- --- logging 73 at INFO, messages should be seen every 10 events -- --- logging 74 at INFO, messages should be seen every 10 events -- --- logging 75 at INFO, messages should be seen every 10 events -- --- logging 76 at INFO, messages should be seen every 10 events -- --- logging 77 at INFO, messages should be seen every 10 events -- --- logging 78 at INFO, messages should be seen every 10 events -- --- logging 79 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 70 -INFO:root:Info index = 71 -INFO:root:Info index = 72 -INFO:root:Info index = 73 -INFO:root:Info index = 74 -INFO:root:Info index = 75 -INFO:root:Info index = 76 -INFO:root:Info index = 77 -INFO:root:Info index = 78 -INFO:root:Info index = 79 --- logging 80 at INFO, messages should be seen every 10 events -- --- logging 81 at INFO, messages should be seen every 10 events -- --- logging 82 at INFO, messages should be seen every 10 events -- --- logging 83 at INFO, messages should be seen every 10 events -- --- logging 84 at INFO, messages should be seen every 10 events -- --- logging 85 at INFO, messages should be seen every 10 events -- --- logging 86 at INFO, messages should be seen every 10 events -- --- logging 87 at INFO, messages should be seen every 10 events -- --- logging 88 at INFO, messages should be seen every 10 events -- --- logging 89 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 80 -INFO:root:Info index = 81 -INFO:root:Info index = 82 -INFO:root:Info index = 83 -INFO:root:Info index = 84 -INFO:root:Info index = 85 -INFO:root:Info index = 86 -INFO:root:Info index = 87 -INFO:root:Info index = 88 -INFO:root:Info index = 89 --- logging 90 at INFO, messages should be seen every 10 events -- --- logging 91 at INFO, messages should be seen every 10 events -- --- logging 92 at INFO, messages should be seen every 10 events -- --- logging 93 at INFO, messages should be seen every 10 events -- --- logging 94 at INFO, messages should be seen every 10 events -- --- logging 95 at INFO, messages should be seen every 10 events -- --- logging 96 at INFO, messages should be seen every 10 events -- --- logging 97 at INFO, messages should be seen every 10 events -- --- logging 98 at INFO, messages should be seen every 10 events -- --- logging 99 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 90 -INFO:root:Info index = 91 -INFO:root:Info index = 92 -INFO:root:Info index = 93 -INFO:root:Info index = 94 -INFO:root:Info index = 95 -INFO:root:Info index = 96 -INFO:root:Info index = 97 -INFO:root:Info index = 98 -INFO:root:Info index = 99 --- logging 100 at INFO, messages should be seen every 10 events -- --- logging 101 at INFO, messages should be seen every 10 events -- -INFO:root:Info index = 100 -INFO:root:Info index = 101 --- log_test2 end --------------------------------------------------- --- log_test3 begin --------------------------------------------------- -Unfiltered... -INFO:a:Info 1 -INFO:a.b:Info 2 -INFO:a.c:Info 3 -INFO:a.b.c:Info 4 -INFO:a.b.c.d:Info 5 -INFO:a.bb.c:Info 6 -INFO:b:Info 7 -INFO:b.a:Info 8 -INFO:c.a.b:Info 9 -INFO:a.bb:Info 10 -Filtered with 'a.b'... -INFO:a.b:Info 2 -INFO:a.b.c:Info 4 -INFO:a.b.c.d:Info 5 --- log_test3 end --------------------------------------------------- --- log_test4 begin --------------------------------------------------- -config0: ok. -config1: ok. -config2: -config3: --- log_test4 end --------------------------------------------------- --- log_test5 begin --------------------------------------------------- -ERROR:root:just testing -... Don't panic! --- log_test5 end --------------------------------------------------- --- logrecv output begin --------------------------------------------------- -ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR) -ERR -> ERROR: Message 1 (via logrecv.tcp.ERR) -INF -> CRITICAL: Message 2 (via logrecv.tcp.INF) -INF -> ERROR: Message 3 (via logrecv.tcp.INF) -INF -> WARNING: Message 4 (via logrecv.tcp.INF) -INF -> INFO: Message 5 (via logrecv.tcp.INF) -INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF) -INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF) -INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR) -INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR) -INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF) -INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF) -DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB) -DEB -> ERROR: Message 15 (via logrecv.tcp.DEB) -DEB -> WARNING: Message 16 (via logrecv.tcp.DEB) -DEB -> INFO: Message 17 (via logrecv.tcp.DEB) -DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB) -UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF) -UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF) -UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF) -UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF) -INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF) -INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT) -INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF) --- logrecv output end --------------------------------------------------- Modified: python/branches/trunk-math/Lib/test/seq_tests.py ============================================================================== --- python/branches/trunk-math/Lib/test/seq_tests.py (original) +++ python/branches/trunk-math/Lib/test/seq_tests.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,6 @@ """ import unittest -from test import test_support import sys # Various iterables Modified: python/branches/trunk-math/Lib/test/string_tests.py ============================================================================== --- python/branches/trunk-math/Lib/test/string_tests.py (original) +++ python/branches/trunk-math/Lib/test/string_tests.py Thu Feb 28 21:09:17 2008 @@ -1033,7 +1033,14 @@ # unicode raises ValueError, str raises OverflowError self.checkraises((ValueError, OverflowError), '%c', '__mod__', ordinal) + longvalue = sys.maxint + 10L + slongvalue = str(longvalue) + if slongvalue[-1] in ("L","l"): slongvalue = slongvalue[:-1] self.checkequal(' 42', '%3ld', '__mod__', 42) + self.checkequal('42', '%d', '__mod__', 42L) + self.checkequal('42', '%d', '__mod__', 42.0) + self.checkequal(slongvalue, '%d', '__mod__', longvalue) + self.checkcall('%d', '__mod__', float(longvalue)) self.checkequal('0042.00', '%07.2f', '__mod__', 42) self.checkequal('0042.00', '%07.2F', '__mod__', 42) @@ -1043,6 +1050,8 @@ self.checkraises(TypeError, '%c', '__mod__', (None,)) self.checkraises(ValueError, '%(foo', '__mod__', {}) self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42)) + self.checkraises(TypeError, '%d', '__mod__', "42") # not numeric + self.checkraises(TypeError, '%d', '__mod__', (42+0j)) # no int/long conversion provided # argument names with properly nested brackets are supported self.checkequal('bar', '%((foo))s', '__mod__', {'(foo)': 'bar'}) Modified: python/branches/trunk-math/Lib/test/test_MimeWriter.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_MimeWriter.py (original) +++ python/branches/trunk-math/Lib/test/test_MimeWriter.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ """ -import unittest, sys, StringIO +import unittest, StringIO from test.test_support import run_unittest import warnings Modified: python/branches/trunk-math/Lib/test/test___all__.py ============================================================================== --- python/branches/trunk-math/Lib/test/test___all__.py (original) +++ python/branches/trunk-math/Lib/test/test___all__.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,5 @@ import unittest -from test.test_support import verbose, run_unittest +from test.test_support import run_unittest import sys import warnings Modified: python/branches/trunk-math/Lib/test/test_abc.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_abc.py (original) +++ python/branches/trunk-math/Lib/test/test_abc.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,6 @@ """Unit tests for abc.py.""" -import sys import unittest from test import test_support Modified: python/branches/trunk-math/Lib/test/test_applesingle.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_applesingle.py (original) +++ python/branches/trunk-math/Lib/test/test_applesingle.py Thu Feb 28 21:09:17 2008 @@ -5,7 +5,6 @@ import Carbon.File import MacOS import os -import sys from test import test_support import struct import applesingle Modified: python/branches/trunk-math/Lib/test/test_array.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_array.py (original) +++ python/branches/trunk-math/Lib/test/test_array.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ import unittest from test import test_support from weakref import proxy -import array, cStringIO, math +import array, cStringIO from cPickle import loads, dumps class ArraySubclass(array.array): Modified: python/branches/trunk-math/Lib/test/test_ast.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_ast.py (original) +++ python/branches/trunk-math/Lib/test/test_ast.py Thu Feb 28 21:09:17 2008 @@ -156,7 +156,7 @@ #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), Modified: python/branches/trunk-math/Lib/test/test_bisect.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_bisect.py (original) +++ python/branches/trunk-math/Lib/test/test_bisect.py Thu Feb 28 21:09:17 2008 @@ -1,91 +1,113 @@ +import sys import unittest from test import test_support -from bisect import bisect_right, bisect_left, insort_left, insort_right, insort, bisect from UserList import UserList +# We do a bit of trickery here to be able to test both the C implementation +# and the Python implementation of the module. + +# Make it impossible to import the C implementation anymore. +sys.modules['_bisect'] = 0 +# We must also handle the case that bisect was imported before. +if 'bisect' in sys.modules: + del sys.modules['bisect'] + +# Now we can import the module and get the pure Python implementation. +import bisect as py_bisect + +# Restore everything to normal. +del sys.modules['_bisect'] +del sys.modules['bisect'] + +# This is now the module with the C implementation. +import bisect as c_bisect + + class TestBisect(unittest.TestCase): + module = None - precomputedCases = [ - (bisect_right, [], 1, 0), - (bisect_right, [1], 0, 0), - (bisect_right, [1], 1, 1), - (bisect_right, [1], 2, 1), - (bisect_right, [1, 1], 0, 0), - (bisect_right, [1, 1], 1, 2), - (bisect_right, [1, 1], 2, 2), - (bisect_right, [1, 1, 1], 0, 0), - (bisect_right, [1, 1, 1], 1, 3), - (bisect_right, [1, 1, 1], 2, 3), - (bisect_right, [1, 1, 1, 1], 0, 0), - (bisect_right, [1, 1, 1, 1], 1, 4), - (bisect_right, [1, 1, 1, 1], 2, 4), - (bisect_right, [1, 2], 0, 0), - (bisect_right, [1, 2], 1, 1), - (bisect_right, [1, 2], 1.5, 1), - (bisect_right, [1, 2], 2, 2), - (bisect_right, [1, 2], 3, 2), - (bisect_right, [1, 1, 2, 2], 0, 0), - (bisect_right, [1, 1, 2, 2], 1, 2), - (bisect_right, [1, 1, 2, 2], 1.5, 2), - (bisect_right, [1, 1, 2, 2], 2, 4), - (bisect_right, [1, 1, 2, 2], 3, 4), - (bisect_right, [1, 2, 3], 0, 0), - (bisect_right, [1, 2, 3], 1, 1), - (bisect_right, [1, 2, 3], 1.5, 1), - (bisect_right, [1, 2, 3], 2, 2), - (bisect_right, [1, 2, 3], 2.5, 2), - (bisect_right, [1, 2, 3], 3, 3), - (bisect_right, [1, 2, 3], 4, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10), - (bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10), - - (bisect_left, [], 1, 0), - (bisect_left, [1], 0, 0), - (bisect_left, [1], 1, 0), - (bisect_left, [1], 2, 1), - (bisect_left, [1, 1], 0, 0), - (bisect_left, [1, 1], 1, 0), - (bisect_left, [1, 1], 2, 2), - (bisect_left, [1, 1, 1], 0, 0), - (bisect_left, [1, 1, 1], 1, 0), - (bisect_left, [1, 1, 1], 2, 3), - (bisect_left, [1, 1, 1, 1], 0, 0), - (bisect_left, [1, 1, 1, 1], 1, 0), - (bisect_left, [1, 1, 1, 1], 2, 4), - (bisect_left, [1, 2], 0, 0), - (bisect_left, [1, 2], 1, 0), - (bisect_left, [1, 2], 1.5, 1), - (bisect_left, [1, 2], 2, 1), - (bisect_left, [1, 2], 3, 2), - (bisect_left, [1, 1, 2, 2], 0, 0), - (bisect_left, [1, 1, 2, 2], 1, 0), - (bisect_left, [1, 1, 2, 2], 1.5, 2), - (bisect_left, [1, 1, 2, 2], 2, 2), - (bisect_left, [1, 1, 2, 2], 3, 4), - (bisect_left, [1, 2, 3], 0, 0), - (bisect_left, [1, 2, 3], 1, 0), - (bisect_left, [1, 2, 3], 1.5, 1), - (bisect_left, [1, 2, 3], 2, 1), - (bisect_left, [1, 2, 3], 2.5, 2), - (bisect_left, [1, 2, 3], 3, 2), - (bisect_left, [1, 2, 3], 4, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6), - (bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10) - ] + def setUp(self): + self.precomputedCases = [ + (self.module.bisect_right, [], 1, 0), + (self.module.bisect_right, [1], 0, 0), + (self.module.bisect_right, [1], 1, 1), + (self.module.bisect_right, [1], 2, 1), + (self.module.bisect_right, [1, 1], 0, 0), + (self.module.bisect_right, [1, 1], 1, 2), + (self.module.bisect_right, [1, 1], 2, 2), + (self.module.bisect_right, [1, 1, 1], 0, 0), + (self.module.bisect_right, [1, 1, 1], 1, 3), + (self.module.bisect_right, [1, 1, 1], 2, 3), + (self.module.bisect_right, [1, 1, 1, 1], 0, 0), + (self.module.bisect_right, [1, 1, 1, 1], 1, 4), + (self.module.bisect_right, [1, 1, 1, 1], 2, 4), + (self.module.bisect_right, [1, 2], 0, 0), + (self.module.bisect_right, [1, 2], 1, 1), + (self.module.bisect_right, [1, 2], 1.5, 1), + (self.module.bisect_right, [1, 2], 2, 2), + (self.module.bisect_right, [1, 2], 3, 2), + (self.module.bisect_right, [1, 1, 2, 2], 0, 0), + (self.module.bisect_right, [1, 1, 2, 2], 1, 2), + (self.module.bisect_right, [1, 1, 2, 2], 1.5, 2), + (self.module.bisect_right, [1, 1, 2, 2], 2, 4), + (self.module.bisect_right, [1, 1, 2, 2], 3, 4), + (self.module.bisect_right, [1, 2, 3], 0, 0), + (self.module.bisect_right, [1, 2, 3], 1, 1), + (self.module.bisect_right, [1, 2, 3], 1.5, 1), + (self.module.bisect_right, [1, 2, 3], 2, 2), + (self.module.bisect_right, [1, 2, 3], 2.5, 2), + (self.module.bisect_right, [1, 2, 3], 3, 3), + (self.module.bisect_right, [1, 2, 3], 4, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10), + (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10), + + (self.module.bisect_left, [], 1, 0), + (self.module.bisect_left, [1], 0, 0), + (self.module.bisect_left, [1], 1, 0), + (self.module.bisect_left, [1], 2, 1), + (self.module.bisect_left, [1, 1], 0, 0), + (self.module.bisect_left, [1, 1], 1, 0), + (self.module.bisect_left, [1, 1], 2, 2), + (self.module.bisect_left, [1, 1, 1], 0, 0), + (self.module.bisect_left, [1, 1, 1], 1, 0), + (self.module.bisect_left, [1, 1, 1], 2, 3), + (self.module.bisect_left, [1, 1, 1, 1], 0, 0), + (self.module.bisect_left, [1, 1, 1, 1], 1, 0), + (self.module.bisect_left, [1, 1, 1, 1], 2, 4), + (self.module.bisect_left, [1, 2], 0, 0), + (self.module.bisect_left, [1, 2], 1, 0), + (self.module.bisect_left, [1, 2], 1.5, 1), + (self.module.bisect_left, [1, 2], 2, 1), + (self.module.bisect_left, [1, 2], 3, 2), + (self.module.bisect_left, [1, 1, 2, 2], 0, 0), + (self.module.bisect_left, [1, 1, 2, 2], 1, 0), + (self.module.bisect_left, [1, 1, 2, 2], 1.5, 2), + (self.module.bisect_left, [1, 1, 2, 2], 2, 2), + (self.module.bisect_left, [1, 1, 2, 2], 3, 4), + (self.module.bisect_left, [1, 2, 3], 0, 0), + (self.module.bisect_left, [1, 2, 3], 1, 0), + (self.module.bisect_left, [1, 2, 3], 1.5, 1), + (self.module.bisect_left, [1, 2, 3], 2, 1), + (self.module.bisect_left, [1, 2, 3], 2.5, 2), + (self.module.bisect_left, [1, 2, 3], 3, 2), + (self.module.bisect_left, [1, 2, 3], 4, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6), + (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10) + ] def test_precomputed(self): for func, data, elem, expected in self.precomputedCases: @@ -98,12 +120,12 @@ data = [randrange(0, n, 2) for j in xrange(i)] data.sort() elem = randrange(-1, n+1) - ip = bisect_left(data, elem) + ip = self.module.bisect_left(data, elem) if ip < len(data): self.failUnless(elem <= data[ip]) if ip > 0: self.failUnless(data[ip-1] < elem) - ip = bisect_right(data, elem) + ip = self.module.bisect_right(data, elem) if ip < len(data): self.failUnless(elem < data[ip]) if ip > 0: @@ -117,32 +139,39 @@ hi = min(len(data), hi) ip = func(data, elem, lo, hi) self.failUnless(lo <= ip <= hi) - if func is bisect_left and ip < hi: + if func is self.module.bisect_left and ip < hi: self.failUnless(elem <= data[ip]) - if func is bisect_left and ip > lo: + if func is self.module.bisect_left and ip > lo: self.failUnless(data[ip-1] < elem) - if func is bisect_right and ip < hi: + if func is self.module.bisect_right and ip < hi: self.failUnless(elem < data[ip]) - if func is bisect_right and ip > lo: + if func is self.module.bisect_right and ip > lo: self.failUnless(data[ip-1] <= elem) self.assertEqual(ip, max(lo, min(hi, expected))) def test_backcompatibility(self): - self.assertEqual(bisect, bisect_right) + self.assertEqual(self.module.bisect, self.module.bisect_right) def test_keyword_args(self): data = [10, 20, 30, 40, 50] - self.assertEqual(bisect_left(a=data, x=25, lo=1, hi=3), 2) - self.assertEqual(bisect_right(a=data, x=25, lo=1, hi=3), 2) - self.assertEqual(bisect(a=data, x=25, lo=1, hi=3), 2) - insort_left(a=data, x=25, lo=1, hi=3) - insort_right(a=data, x=25, lo=1, hi=3) - insort(a=data, x=25, lo=1, hi=3) + self.assertEqual(self.module.bisect_left(a=data, x=25, lo=1, hi=3), 2) + self.assertEqual(self.module.bisect_right(a=data, x=25, lo=1, hi=3), 2) + self.assertEqual(self.module.bisect(a=data, x=25, lo=1, hi=3), 2) + self.module.insort_left(a=data, x=25, lo=1, hi=3) + self.module.insort_right(a=data, x=25, lo=1, hi=3) + self.module.insort(a=data, x=25, lo=1, hi=3) self.assertEqual(data, [10, 20, 25, 25, 25, 30, 40, 50]) +class TestBisectPython(TestBisect): + module = py_bisect + +class TestBisectC(TestBisect): + module = c_bisect + #============================================================================== class TestInsort(unittest.TestCase): + module = None def test_vsBuiltinSort(self, n=500): from random import choice @@ -150,14 +179,20 @@ for i in xrange(n): digit = choice("0123456789") if digit in "02468": - f = insort_left + f = self.module.insort_left else: - f = insort_right + f = self.module.insort_right f(insorted, digit) self.assertEqual(sorted(insorted), insorted) def test_backcompatibility(self): - self.assertEqual(insort, insort_right) + self.assertEqual(self.module.insort, self.module.insort_right) + +class TestInsortPython(TestInsort): + module = py_bisect + +class TestInsortC(TestInsort): + module = c_bisect #============================================================================== @@ -178,32 +213,44 @@ raise ZeroDivisionError class TestErrorHandling(unittest.TestCase): + module = None def test_non_sequence(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(TypeError, f, 10, 10) def test_len_only(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(AttributeError, f, LenOnly(), 10) def test_get_only(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(AttributeError, f, GetOnly(), 10) def test_cmp_err(self): seq = [CmpErr(), CmpErr(), CmpErr()] - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(ZeroDivisionError, f, seq, 10) def test_arg_parsing(self): - for f in (bisect_left, bisect_right, insort_left, insort_right): + for f in (self.module.bisect_left, self.module.bisect_right, + self.module.insort_left, self.module.insort_right): self.assertRaises(TypeError, f, 10) +class TestErrorHandlingPython(TestErrorHandling): + module = py_bisect + +class TestErrorHandlingC(TestErrorHandling): + module = c_bisect + #============================================================================== libreftest = """ -Example from the Library Reference: Doc/lib/libbisect.tex +Example from the Library Reference: Doc/library/bisect.rst The bisect() function is generally useful for categorizing numeric data. This example uses bisect() to look up a letter grade for an exam total @@ -229,12 +276,10 @@ def test_main(verbose=None): from test import test_bisect - from types import BuiltinFunctionType - import sys - test_classes = [TestBisect, TestInsort] - if isinstance(bisect_left, BuiltinFunctionType): - test_classes.append(TestErrorHandling) + test_classes = [TestBisectPython, TestBisectC, + TestInsortPython, TestInsortC, + TestErrorHandlingPython, TestErrorHandlingC] test_support.run_unittest(*test_classes) test_support.run_doctest(test_bisect, verbose) Modified: python/branches/trunk-math/Lib/test/test_bsddb185.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_bsddb185.py (original) +++ python/branches/trunk-math/Lib/test/test_bsddb185.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,7 @@ testing suite. """ -from test.test_support import verbose, run_unittest, findfile +from test.test_support import run_unittest, findfile import unittest import bsddb185 import anydbm Modified: python/branches/trunk-math/Lib/test/test_bsddb3.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_bsddb3.py (original) +++ python/branches/trunk-math/Lib/test/test_bsddb3.py Thu Feb 28 21:09:17 2008 @@ -2,10 +2,12 @@ """ Run all test cases. """ +import os import sys +import tempfile import time import unittest -from test.test_support import requires, verbose, run_unittest, unlink +from test.test_support import requires, verbose, run_unittest, unlink, rmtree # When running as a script instead of within the regrtest framework, skip the # requires test, since it's obvious we want to run them. @@ -85,6 +87,15 @@ # For invocation through regrtest def test_main(): run_unittest(suite()) + db_home = os.path.join(tempfile.gettempdir(), 'db_home') + # The only reason to remove db_home is in case if there is an old + # one lying around. This might be by a different user, so just + # ignore errors. We should always make a unique name now. + try: + rmtree(db_home) + except: + pass + rmtree('db_home%d' % os.getpid()) # For invocation as a script if __name__ == '__main__': Modified: python/branches/trunk-math/Lib/test/test_builtin.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_builtin.py (original) +++ python/branches/trunk-math/Lib/test/test_builtin.py Thu Feb 28 21:09:17 2008 @@ -1983,6 +1983,110 @@ return i self.assertRaises(ValueError, zip, BadSeq(), BadSeq()) + def test_format(self): + # Test the basic machinery of the format() builtin. Don't test + # the specifics of the various formatters + self.assertEqual(format(3, ''), '3') + + # Returns some classes to use for various tests. There's + # an old-style version, and a new-style version + def classes_new(): + class A(object): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromA(A): + pass + + class Simple(object): pass + class DerivedFromSimple(Simple): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromSimple2(DerivedFromSimple): pass + return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2 + + # In 3.0, classes_classic has the same meaning as classes_new + def classes_classic(): + class A: + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromA(A): + pass + + class Simple: pass + class DerivedFromSimple(Simple): + def __init__(self, x): + self.x = x + def __format__(self, format_spec): + return str(self.x) + format_spec + class DerivedFromSimple2(DerivedFromSimple): pass + return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2 + + def class_test(A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2): + self.assertEqual(format(A(3), 'spec'), '3spec') + self.assertEqual(format(DerivedFromA(4), 'spec'), '4spec') + self.assertEqual(format(DerivedFromSimple(5), 'abc'), '5abc') + self.assertEqual(format(DerivedFromSimple2(10), 'abcdef'), + '10abcdef') + + class_test(*classes_new()) + class_test(*classes_classic()) + + def empty_format_spec(value): + # test that: + # format(x, '') == str(x) + # format(x) == str(x) + self.assertEqual(format(value, ""), str(value)) + self.assertEqual(format(value), str(value)) + + # for builtin types, format(x, "") == str(x) + empty_format_spec(17**13) + empty_format_spec(1.0) + empty_format_spec(3.1415e104) + empty_format_spec(-3.1415e104) + empty_format_spec(3.1415e-104) + empty_format_spec(-3.1415e-104) + empty_format_spec(object) + empty_format_spec(None) + + # TypeError because self.__format__ returns the wrong type + class BadFormatResult: + def __format__(self, format_spec): + return 1.0 + self.assertRaises(TypeError, format, BadFormatResult(), "") + + # TypeError because format_spec is not unicode or str + self.assertRaises(TypeError, format, object(), 4) + self.assertRaises(TypeError, format, object(), object()) + + # tests for object.__format__ really belong elsewhere, but + # there's no good place to put them + x = object().__format__('') + self.assert_(x.startswith(' 10: - heappop(heap) + self.module.heappop(heap) heap.sort() self.assertEqual(heap, sorted(data)[-10:]) + def heapiter(self, heap): + # An iterator returning a heap's elements, smallest-first. + try: + while 1: + yield self.module.heappop(heap) + except IndexError: + pass + def test_nbest(self): # Less-naive "N-best" algorithm, much faster (if len(data) is big # enough ) than sorting all of data. However, if we had a max @@ -78,15 +97,15 @@ # (10 log-time steps). data = [random.randrange(2000) for i in range(1000)] heap = data[:10] - heapify(heap) + self.module.heapify(heap) for item in data[10:]: if item > heap[0]: # this gets rarer the longer we run - heapreplace(heap, item) - self.assertEqual(list(heapiter(heap)), sorted(data)[-10:]) + self.module.heapreplace(heap, item) + self.assertEqual(list(self.heapiter(heap)), sorted(data)[-10:]) - self.assertRaises(TypeError, heapreplace, None) - self.assertRaises(TypeError, heapreplace, None, None) - self.assertRaises(IndexError, heapreplace, [], None) + self.assertRaises(TypeError, self.module.heapreplace, None) + self.assertRaises(TypeError, self.module.heapreplace, None, None) + self.assertRaises(IndexError, self.module.heapreplace, [], None) def test_heapsort(self): # Exercise everything with repeated heapsort checks @@ -95,12 +114,12 @@ data = [random.randrange(25) for i in range(size)] if trial & 1: # Half of the time, use heapify heap = data[:] - heapify(heap) + self.module.heapify(heap) else: # The rest of the time, use heappush heap = [] for item in data: - heappush(heap, item) - heap_sorted = [heappop(heap) for i in range(size)] + self.module.heappush(heap, item) + heap_sorted = [self.module.heappop(heap) for i in range(size)] self.assertEqual(heap_sorted, sorted(data)) def test_merge(self): @@ -108,8 +127,8 @@ for i in xrange(random.randrange(5)): row = sorted(random.randrange(1000) for j in range(random.randrange(10))) inputs.append(row) - self.assertEqual(sorted(chain(*inputs)), list(merge(*inputs))) - self.assertEqual(list(merge()), []) + self.assertEqual(sorted(chain(*inputs)), list(self.module.merge(*inputs))) + self.assertEqual(list(self.module.merge()), []) def test_merge_stability(self): class Int(int): @@ -123,25 +142,32 @@ inputs[stream].append(obj) for stream in inputs: stream.sort() - result = [i.pair for i in merge(*inputs)] + result = [i.pair for i in self.module.merge(*inputs)] self.assertEqual(result, sorted(result)) def test_nsmallest(self): data = [(random.randrange(2000), i) for i in range(1000)] for f in (None, lambda x: x[0] * 547 % 2000): for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100): - self.assertEqual(nsmallest(n, data), sorted(data)[:n]) - self.assertEqual(nsmallest(n, data, key=f), + self.assertEqual(self.module.nsmallest(n, data), sorted(data)[:n]) + self.assertEqual(self.module.nsmallest(n, data, key=f), sorted(data, key=f)[:n]) def test_nlargest(self): data = [(random.randrange(2000), i) for i in range(1000)] for f in (None, lambda x: x[0] * 547 % 2000): for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100): - self.assertEqual(nlargest(n, data), sorted(data, reverse=True)[:n]) - self.assertEqual(nlargest(n, data, key=f), + self.assertEqual(self.module.nlargest(n, data), + sorted(data, reverse=True)[:n]) + self.assertEqual(self.module.nlargest(n, data, key=f), sorted(data, key=f, reverse=True)[:n]) +class TestHeapPython(TestHeap): + module = py_heapq + +class TestHeapC(TestHeap): + module = c_heapq + #============================================================================== @@ -238,44 +264,49 @@ return chain(imap(lambda x:x, R(Ig(G(seqn))))) class TestErrorHandling(unittest.TestCase): + # only for C implementation + module = c_heapq def test_non_sequence(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, 10) - for f in (heappush, heapreplace, nlargest, nsmallest): + for f in (self.module.heappush, self.module.heapreplace, + self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 10, 10) def test_len_only(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, LenOnly()) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(TypeError, f, LenOnly(), 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 2, LenOnly()) def test_get_only(self): - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(TypeError, f, GetOnly()) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(TypeError, f, GetOnly(), 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 2, GetOnly()) def test_get_only(self): seq = [CmpErr(), CmpErr(), CmpErr()] - for f in (heapify, heappop): + for f in (self.module.heapify, self.module.heappop): self.assertRaises(ZeroDivisionError, f, seq) - for f in (heappush, heapreplace): + for f in (self.module.heappush, self.module.heapreplace): self.assertRaises(ZeroDivisionError, f, seq, 10) - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): self.assertRaises(ZeroDivisionError, f, 2, seq) def test_arg_parsing(self): - for f in (heapify, heappop, heappush, heapreplace, nlargest, nsmallest): + for f in (self.module.heapify, self.module.heappop, + self.module.heappush, self.module.heapreplace, + self.module.nlargest, self.module.nsmallest): self.assertRaises(TypeError, f, 10) def test_iterable_args(self): - for f in (nlargest, nsmallest): + for f in (self.module.nlargest, self.module.nsmallest): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, L, R): self.assertEqual(f(2, g(s)), f(2,s)) @@ -284,15 +315,14 @@ self.assertRaises(TypeError, f, 2, N(s)) self.assertRaises(ZeroDivisionError, f, 2, E(s)) + #============================================================================== def test_main(verbose=None): from types import BuiltinFunctionType - test_classes = [TestHeap] - if isinstance(heapify, BuiltinFunctionType): - test_classes.append(TestErrorHandling) + test_classes = [TestHeapPython, TestHeapC, TestErrorHandling] test_support.run_unittest(*test_classes) # verify reference counting Modified: python/branches/trunk-math/Lib/test/test_htmlparser.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_htmlparser.py (original) +++ python/branches/trunk-math/Lib/test/test_htmlparser.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ import HTMLParser import pprint -import sys import unittest from test import test_support Modified: python/branches/trunk-math/Lib/test/test_httplib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_httplib.py (original) +++ python/branches/trunk-math/Lib/test/test_httplib.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ import httplib import StringIO -import sys import socket from unittest import TestCase @@ -157,6 +156,42 @@ conn.request('GET', '/foo', body) self.assertTrue(sock.data.startswith(expected)) + def test_chunked(self): + chunked_start = ( + 'HTTP/1.1 200 OK\r\n' + 'Transfer-Encoding: chunked\r\n\r\n' + 'a\r\n' + 'hello worl\r\n' + '1\r\n' + 'd\r\n' + ) + sock = FakeSocket(chunked_start + '0\r\n') + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + self.assertEquals(resp.read(), 'hello world') + resp.close() + + for x in ('', 'foo\r\n'): + sock = FakeSocket(chunked_start + x) + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + try: + resp.read() + except httplib.IncompleteRead, i: + self.assertEquals(i.partial, 'hello world') + else: + self.fail('IncompleteRead expected') + finally: + resp.close() + + def test_negative_content_length(self): + sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: -1\r\n\r\nHello\r\n') + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + self.assertEquals(resp.read(), 'Hello\r\n') + resp.close() + + class OfflineTest(TestCase): def test_responses(self): self.assertEquals(httplib.responses[httplib.NOT_FOUND], "Not Found") Modified: python/branches/trunk-math/Lib/test/test_imgfile.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_imgfile.py (original) +++ python/branches/trunk-math/Lib/test/test_imgfile.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ from test.test_support import verbose, unlink, findfile -import imgfile, uu, os +import imgfile, uu def main(): Modified: python/branches/trunk-math/Lib/test/test_imp.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_imp.py (original) +++ python/branches/trunk-math/Lib/test/test_imp.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ import imp -import thread import unittest from test import test_support Modified: python/branches/trunk-math/Lib/test/test_index.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_index.py (original) +++ python/branches/trunk-math/Lib/test/test_index.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ import unittest from test import test_support import operator -import sys from sys import maxint maxsize = test_support.MAX_Py_ssize_t minsize = -maxsize-1 Modified: python/branches/trunk-math/Lib/test/test_inspect.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_inspect.py (original) +++ python/branches/trunk-math/Lib/test/test_inspect.py Thu Feb 28 21:09:17 2008 @@ -11,10 +11,10 @@ # Functions tested in this suite: # ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode, -# isbuiltin, isroutine, getmembers, getdoc, getfile, getmodule, -# getsourcefile, getcomments, getsource, getclasstree, getargspec, -# getargvalues, formatargspec, formatargvalues, currentframe, stack, trace -# isdatadescriptor +# isbuiltin, isroutine, isgenerator, isgeneratorfunction, getmembers, +# getdoc, getfile, getmodule, getsourcefile, getcomments, getsource, +# getclasstree, getargspec, getargvalues, formatargspec, formatargvalues, +# currentframe, stack, trace, isdatadescriptor modfile = mod.__file__ if modfile.endswith(('c', 'o')): @@ -32,23 +32,33 @@ class IsTestBase(unittest.TestCase): predicates = set([inspect.isbuiltin, inspect.isclass, inspect.iscode, inspect.isframe, inspect.isfunction, inspect.ismethod, - inspect.ismodule, inspect.istraceback]) + inspect.ismodule, inspect.istraceback, + inspect.isgenerator, inspect.isgeneratorfunction]) def istest(self, predicate, exp): obj = eval(exp) self.failUnless(predicate(obj), '%s(%s)' % (predicate.__name__, exp)) for other in self.predicates - set([predicate]): + if predicate == inspect.isgeneratorfunction and\ + other == inspect.isfunction: + continue self.failIf(other(obj), 'not %s(%s)' % (other.__name__, exp)) +def generator_function_example(self): + for i in xrange(2): + yield i + class TestPredicates(IsTestBase): - def test_thirteen(self): + def test_fifteen(self): count = len(filter(lambda x:x.startswith('is'), dir(inspect))) - # Doc/lib/libinspect.tex claims there are 13 such functions - expected = 13 + # This test is here for remember you to update Doc/library/inspect.rst + # which claims there are 15 such functions + expected = 15 err_msg = "There are %d (not %d) is* functions" % (count, expected) self.assertEqual(count, expected, err_msg) + def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') @@ -62,6 +72,8 @@ self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') + self.istest(inspect.isgenerator, '(x for x in xrange(2))') + self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') Modified: python/branches/trunk-math/Lib/test/test_itertools.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_itertools.py (original) +++ python/branches/trunk-math/Lib/test/test_itertools.py Thu Feb 28 21:09:17 2008 @@ -40,6 +40,10 @@ 'Convenience function for partially consuming a long of infinite iterable' return list(islice(seq, n)) +def fact(n): + 'Factorial' + return reduce(operator.mul, range(1, n+1), 1) + class TestBasicOps(unittest.TestCase): def test_chain(self): self.assertEqual(list(chain('abc', 'def')), list('abcdef')) @@ -48,6 +52,26 @@ self.assertEqual(take(4, chain('abc', 'def')), list('abcd')) self.assertRaises(TypeError, chain, 2, 3) + def test_combinations(self): + self.assertRaises(TypeError, combinations, 'abc') # missing r argument + self.assertRaises(TypeError, combinations, 'abc', 2, 1) # too many arguments + self.assertRaises(ValueError, combinations, 'abc', -2) # r is negative + self.assertRaises(ValueError, combinations, 'abc', 32) # r is too big + self.assertEqual(list(combinations(range(4), 3)), + [(0,1,2), (0,1,3), (0,2,3), (1,2,3)]) + for n in range(8): + values = [5*x-12 for x in range(n)] + for r in range(n+1): + result = list(combinations(values, r)) + self.assertEqual(len(result), fact(n) / fact(r) / fact(n-r)) # right number of combs + self.assertEqual(len(result), len(set(result))) # no repeats + self.assertEqual(result, sorted(result)) # lexicographic order + for c in result: + self.assertEqual(len(c), r) # r-length combinations + self.assertEqual(len(set(c)), r) # no duplicate elements + self.assertEqual(list(c), sorted(c)) # keep original ordering + self.assert_(all(e in values for e in c)) # elements taken from input iterable + def test_count(self): self.assertEqual(zip('abc',count()), [('a', 0), ('b', 1), ('c', 2)]) self.assertEqual(zip('abc',count(3)), [('a', 3), ('b', 4), ('c', 5)]) @@ -171,6 +195,7 @@ def test_ifilter(self): self.assertEqual(list(ifilter(isEven, range(6))), [0,2,4]) self.assertEqual(list(ifilter(None, [0,1,0,2,0])), [1,2]) + self.assertEqual(list(ifilter(bool, [0,1,0,2,0])), [1,2]) self.assertEqual(take(4, ifilter(isEven, count())), [0,2,4,6]) self.assertRaises(TypeError, ifilter) self.assertRaises(TypeError, ifilter, lambda x:x) @@ -181,6 +206,7 @@ def test_ifilterfalse(self): self.assertEqual(list(ifilterfalse(isEven, range(6))), [1,3,5]) self.assertEqual(list(ifilterfalse(None, [0,1,0,2,0])), [0,0,0]) + self.assertEqual(list(ifilterfalse(bool, [0,1,0,2,0])), [0,0,0]) self.assertEqual(take(4, ifilterfalse(isEven, count())), [1,3,5,7]) self.assertRaises(TypeError, ifilterfalse) self.assertRaises(TypeError, ifilterfalse, lambda x:x) @@ -253,6 +279,31 @@ ids = map(id, list(izip_longest('abc', 'def'))) self.assertEqual(len(dict.fromkeys(ids)), len(ids)) + def test_product(self): + for args, result in [ + ([], []), # zero iterables ??? is this correct + (['ab'], [('a',), ('b',)]), # one iterable + ([range(2), range(3)], [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)]), # two iterables + ([range(0), range(2), range(3)], []), # first iterable with zero length + ([range(2), range(0), range(3)], []), # middle iterable with zero length + ([range(2), range(3), range(0)], []), # last iterable with zero length + ]: + self.assertEqual(list(product(*args)), result) + self.assertEqual(len(list(product(*[range(7)]*6))), 7**6) + self.assertRaises(TypeError, product, range(6), None) + argtypes = ['', 'abc', '', xrange(0), xrange(4), dict(a=1, b=2, c=3), + set('abcdefg'), range(11), tuple(range(13))] + for i in range(100): + args = [random.choice(argtypes) for j in range(random.randrange(5))] + n = reduce(operator.mul, map(len, args), 1) if args else 0 + self.assertEqual(len(list(product(*args))), n) + args = map(iter, args) + self.assertEqual(len(list(product(*args))), n) + + # Test implementation detail: tuple re-use + self.assertEqual(len(set(map(id, product('abc', 'def')))), 1) + self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1) + def test_repeat(self): self.assertEqual(zip(xrange(3),repeat('a')), [(0, 'a'), (1, 'a'), (2, 'a')]) @@ -623,6 +674,12 @@ self.assertRaises(TypeError, list, chain(N(s))) self.assertRaises(ZeroDivisionError, list, chain(E(s))) + def test_product(self): + for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + self.assertRaises(TypeError, product, X(s)) + self.assertRaises(TypeError, product, N(s)) + self.assertRaises(ZeroDivisionError, product, E(s)) + def test_cycle(self): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, S, L, R): Modified: python/branches/trunk-math/Lib/test/test_linuxaudiodev.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_linuxaudiodev.py (original) +++ python/branches/trunk-math/Lib/test/test_linuxaudiodev.py Thu Feb 28 21:09:17 2008 @@ -4,13 +4,9 @@ from test.test_support import findfile, TestSkipped, run_unittest import errno -import fcntl import linuxaudiodev -import os import sys -import select import sunaudio -import time import audioop import unittest Modified: python/branches/trunk-math/Lib/test/test_list.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_list.py (original) +++ python/branches/trunk-math/Lib/test/test_list.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,3 @@ -import unittest import sys from test import test_support, list_tests Modified: python/branches/trunk-math/Lib/test/test_logging.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_logging.py (original) +++ python/branches/trunk-math/Lib/test/test_logging.py Thu Feb 28 21:09:17 2008 @@ -1,38 +1,1882 @@ #!/usr/bin/env python -# -# Copyright 2001-2004 by Vinay Sajip. All Rights Reserved. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, -# provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in -# supporting documentation, and that the name of Vinay Sajip -# not be used in advertising or publicity pertaining to distribution -# of the software without specific, written prior permission. -# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL -# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# -# This file is part of the Python logging distribution. See -# http://www.red-dove.com/python_logging.html -# -"""Test harness for the logging module. Run all tests. +""" +Test 0 +====== + +Some preliminaries: +>>> import sys +>>> import logging +>>> def nextmessage(): +... global msgcount +... rv = "Message %d" % msgcount +... msgcount = msgcount + 1 +... return rv + +Set a few variables, then go through the logger autoconfig and set the default threshold. +>>> msgcount = 0 +>>> FINISH_UP = "Finish up, it's closing time. Messages should bear numbers 0 through 24." +>>> logging.basicConfig(stream=sys.stdout) +>>> rootLogger = logging.getLogger("") +>>> rootLogger.setLevel(logging.DEBUG) + +Now, create a bunch of loggers, and set their thresholds. +>>> ERR = logging.getLogger("ERR0") +>>> ERR.setLevel(logging.ERROR) +>>> INF = logging.getLogger("INFO0") +>>> INF.setLevel(logging.INFO) +>>> INF_ERR = logging.getLogger("INFO0.ERR") +>>> INF_ERR.setLevel(logging.ERROR) +>>> DEB = logging.getLogger("DEB0") +>>> DEB.setLevel(logging.DEBUG) +>>> INF_UNDEF = logging.getLogger("INFO0.UNDEF") +>>> INF_ERR_UNDEF = logging.getLogger("INFO0.ERR.UNDEF") +>>> UNDEF = logging.getLogger("UNDEF0") +>>> GRANDCHILD = logging.getLogger("INFO0.BADPARENT.UNDEF") +>>> CHILD = logging.getLogger("INFO0.BADPARENT") + + +And finally, run all the tests. + +>>> ERR.log(logging.FATAL, nextmessage()) +CRITICAL:ERR0:Message 0 + +>>> ERR.error(nextmessage()) +ERROR:ERR0:Message 1 + +>>> INF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0:Message 2 + +>>> INF.error(nextmessage()) +ERROR:INFO0:Message 3 + +>>> INF.warn(nextmessage()) +WARNING:INFO0:Message 4 + +>>> INF.info(nextmessage()) +INFO:INFO0:Message 5 + +>>> INF_UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.UNDEF:Message 6 + +>>> INF_UNDEF.error(nextmessage()) +ERROR:INFO0.UNDEF:Message 7 + +>>> INF_UNDEF.warn (nextmessage()) +WARNING:INFO0.UNDEF:Message 8 + +>>> INF_UNDEF.info (nextmessage()) +INFO:INFO0.UNDEF:Message 9 + +>>> INF_ERR.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.ERR:Message 10 + +>>> INF_ERR.error(nextmessage()) +ERROR:INFO0.ERR:Message 11 + +>>> INF_ERR_UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.ERR.UNDEF:Message 12 + +>>> INF_ERR_UNDEF.error(nextmessage()) +ERROR:INFO0.ERR.UNDEF:Message 13 + +>>> DEB.log(logging.FATAL, nextmessage()) +CRITICAL:DEB0:Message 14 + +>>> DEB.error(nextmessage()) +ERROR:DEB0:Message 15 + +>>> DEB.warn (nextmessage()) +WARNING:DEB0:Message 16 + +>>> DEB.info (nextmessage()) +INFO:DEB0:Message 17 + +>>> DEB.debug(nextmessage()) +DEBUG:DEB0:Message 18 + +>>> UNDEF.log(logging.FATAL, nextmessage()) +CRITICAL:UNDEF0:Message 19 + +>>> UNDEF.error(nextmessage()) +ERROR:UNDEF0:Message 20 + +>>> UNDEF.warn (nextmessage()) +WARNING:UNDEF0:Message 21 + +>>> UNDEF.info (nextmessage()) +INFO:UNDEF0:Message 22 + +>>> GRANDCHILD.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.BADPARENT.UNDEF:Message 23 + +>>> CHILD.log(logging.FATAL, nextmessage()) +CRITICAL:INFO0.BADPARENT:Message 24 + +These should not log: + +>>> ERR.warn(nextmessage()) + +>>> ERR.info(nextmessage()) + +>>> ERR.debug(nextmessage()) + +>>> INF.debug(nextmessage()) + +>>> INF_UNDEF.debug(nextmessage()) + +>>> INF_ERR.warn(nextmessage()) + +>>> INF_ERR.info(nextmessage()) + +>>> INF_ERR.debug(nextmessage()) + +>>> INF_ERR_UNDEF.warn(nextmessage()) + +>>> INF_ERR_UNDEF.info(nextmessage()) + +>>> INF_ERR_UNDEF.debug(nextmessage()) + +>>> INF.info(FINISH_UP) +INFO:INFO0:Finish up, it's closing time. Messages should bear numbers 0 through 24. + +Test 1 +====== + +>>> import sys, logging +>>> logging.basicConfig(stream=sys.stdout) + +First, we define our levels. There can be as many as you want - the only +limitations are that they should be integers, the lowest should be > 0 and +larger values mean less information being logged. If you need specific +level values which do not fit into these limitations, you can use a +mapping dictionary to convert between your application levels and the +logging system. + +>>> SILENT = 10 +>>> TACITURN = 9 +>>> TERSE = 8 +>>> EFFUSIVE = 7 +>>> SOCIABLE = 6 +>>> VERBOSE = 5 +>>> TALKATIVE = 4 +>>> GARRULOUS = 3 +>>> CHATTERBOX = 2 +>>> BORING = 1 +>>> LEVEL_RANGE = range(BORING, SILENT + 1) + + +Next, we define names for our levels. You don't need to do this - in which + case the system will use "Level n" to denote the text for the level. +' + + +>>> my_logging_levels = { +... SILENT : 'SILENT', +... TACITURN : 'TACITURN', +... TERSE : 'TERSE', +... EFFUSIVE : 'EFFUSIVE', +... SOCIABLE : 'SOCIABLE', +... VERBOSE : 'VERBOSE', +... TALKATIVE : 'TALKATIVE', +... GARRULOUS : 'GARRULOUS', +... CHATTERBOX : 'CHATTERBOX', +... BORING : 'BORING', +... } + + +Now, to demonstrate filtering: suppose for some perverse reason we only +want to print out all except GARRULOUS messages. We create a filter for +this purpose... + +>>> class SpecificLevelFilter(logging.Filter): +... def __init__(self, lvl): +... self.level = lvl +... +... def filter(self, record): +... return self.level != record.levelno + +>>> class GarrulousFilter(SpecificLevelFilter): +... def __init__(self): +... SpecificLevelFilter.__init__(self, GARRULOUS) + + +Now, demonstrate filtering at the logger. This time, use a filter +which excludes SOCIABLE and TACITURN messages. Note that GARRULOUS events +are still excluded. + + +>>> class VerySpecificFilter(logging.Filter): +... def filter(self, record): +... return record.levelno not in [SOCIABLE, TACITURN] + +>>> SHOULD1 = "This should only be seen at the '%s' logging level (or lower)" + +Configure the logger, and tell the logging system to associate names with our levels. +>>> logging.basicConfig(stream=sys.stdout) +>>> rootLogger = logging.getLogger("") +>>> rootLogger.setLevel(logging.DEBUG) +>>> for lvl in my_logging_levels.keys(): +... logging.addLevelName(lvl, my_logging_levels[lvl]) +>>> log = logging.getLogger("") +>>> hdlr = log.handlers[0] +>>> from test_logging import message + +Set the logging level to each different value and call the utility +function to log events. In the output, you should see that each time +round the loop, the number of logging events which are actually output +decreases. + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) +GARRULOUS:root:This should only be seen at the '3' logging level (or lower) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> hdlr.setLevel(SOCIABLE) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> + +>>> hdlr.setLevel(0) + +>>> garr = GarrulousFilter() + +>>> hdlr.addFilter(garr) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) +SOCIABLE:root:This should only be seen at the '6' logging level (or lower) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) +TACITURN:root:This should only be seen at the '9' logging level (or lower) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> spec = VerySpecificFilter() + +>>> log.addFilter(spec) + +>>> log.setLevel(1) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) +BORING:root:This should only be seen at the '1' logging level (or lower) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(2) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) +CHATTERBOX:root:This should only be seen at the '2' logging level (or lower) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(3) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(4) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) +TALKATIVE:root:This should only be seen at the '4' logging level (or lower) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(5) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) +VERBOSE:root:This should only be seen at the '5' logging level (or lower) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(6) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) -Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved. -""" +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(7) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) +EFFUSIVE:root:This should only be seen at the '7' logging level (or lower) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(8) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) +TERSE:root:This should only be seen at the '8' logging level (or lower) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(9) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(10) + +>>> log.log(1, "This should only be seen at the '%s' logging level (or lower)", BORING) + +>>> log.log(2, "This should only be seen at the '%s' logging level (or lower)", CHATTERBOX) + +>>> log.log(3, "This should only be seen at the '%s' logging level (or lower)", GARRULOUS) + +>>> log.log(4, "This should only be seen at the '%s' logging level (or lower)", TALKATIVE) + +>>> log.log(5, "This should only be seen at the '%s' logging level (or lower)", VERBOSE) + +>>> log.log(6, "This should only be seen at the '%s' logging level (or lower)", SOCIABLE) + +>>> log.log(7, "This should only be seen at the '%s' logging level (or lower)", EFFUSIVE) + +>>> log.log(8, "This should only be seen at the '%s' logging level (or lower)", TERSE) + +>>> log.log(9, "This should only be seen at the '%s' logging level (or lower)", TACITURN) + +>>> log.log(10, "This should only be seen at the '%s' logging level (or lower)", SILENT) +SILENT:root:This should only be seen at the '10' logging level (or lower) + +>>> log.setLevel(0) + +>>> log.removeFilter(spec) + +>>> hdlr.removeFilter(garr) + +>>> logging.addLevelName(logging.DEBUG, "DEBUG") + + +Test 2 +====== +Test memory handlers. These are basically buffers for log messages: they take so many messages, and then print them all. + +>>> import logging.handlers + +>>> sys.stderr = sys.stdout +>>> logger = logging.getLogger("") +>>> sh = logger.handlers[0] +>>> sh.close() +>>> logger.removeHandler(sh) +>>> mh = logging.handlers.MemoryHandler(10,logging.WARNING, sh) +>>> logger.setLevel(logging.DEBUG) +>>> logger.addHandler(mh) + +>>> logger.debug("Debug message") + +-- logging at INFO, nothing should be seen yet -- + +>>> logger.info("Info message") + +-- logging at WARNING, 3 messages should be seen -- + +>>> logger.warn("Warn message") +DEBUG:root:Debug message +INFO:root:Info message +WARNING:root:Warn message + +>>> logger.info("Info index = 0") + +>>> logger.info("Info index = 1") + +>>> logger.info("Info index = 2") + +>>> logger.info("Info index = 3") + +>>> logger.info("Info index = 4") + +>>> logger.info("Info index = 5") + +>>> logger.info("Info index = 6") + +>>> logger.info("Info index = 7") + +>>> logger.info("Info index = 8") + +>>> logger.info("Info index = 9") +INFO:root:Info index = 0 +INFO:root:Info index = 1 +INFO:root:Info index = 2 +INFO:root:Info index = 3 +INFO:root:Info index = 4 +INFO:root:Info index = 5 +INFO:root:Info index = 6 +INFO:root:Info index = 7 +INFO:root:Info index = 8 +INFO:root:Info index = 9 + +>>> logger.info("Info index = 10") + +>>> logger.info("Info index = 11") + +>>> logger.info("Info index = 12") + +>>> logger.info("Info index = 13") + +>>> logger.info("Info index = 14") + +>>> logger.info("Info index = 15") + +>>> logger.info("Info index = 16") + +>>> logger.info("Info index = 17") + +>>> logger.info("Info index = 18") + +>>> logger.info("Info index = 19") +INFO:root:Info index = 10 +INFO:root:Info index = 11 +INFO:root:Info index = 12 +INFO:root:Info index = 13 +INFO:root:Info index = 14 +INFO:root:Info index = 15 +INFO:root:Info index = 16 +INFO:root:Info index = 17 +INFO:root:Info index = 18 +INFO:root:Info index = 19 + +>>> logger.info("Info index = 20") + +>>> logger.info("Info index = 21") + +>>> logger.info("Info index = 22") + +>>> logger.info("Info index = 23") + +>>> logger.info("Info index = 24") + +>>> logger.info("Info index = 25") + +>>> logger.info("Info index = 26") + +>>> logger.info("Info index = 27") + +>>> logger.info("Info index = 28") + +>>> logger.info("Info index = 29") +INFO:root:Info index = 20 +INFO:root:Info index = 21 +INFO:root:Info index = 22 +INFO:root:Info index = 23 +INFO:root:Info index = 24 +INFO:root:Info index = 25 +INFO:root:Info index = 26 +INFO:root:Info index = 27 +INFO:root:Info index = 28 +INFO:root:Info index = 29 + +>>> logger.info("Info index = 30") + +>>> logger.info("Info index = 31") + +>>> logger.info("Info index = 32") + +>>> logger.info("Info index = 33") + +>>> logger.info("Info index = 34") + +>>> logger.info("Info index = 35") + +>>> logger.info("Info index = 36") + +>>> logger.info("Info index = 37") + +>>> logger.info("Info index = 38") + +>>> logger.info("Info index = 39") +INFO:root:Info index = 30 +INFO:root:Info index = 31 +INFO:root:Info index = 32 +INFO:root:Info index = 33 +INFO:root:Info index = 34 +INFO:root:Info index = 35 +INFO:root:Info index = 36 +INFO:root:Info index = 37 +INFO:root:Info index = 38 +INFO:root:Info index = 39 + +>>> logger.info("Info index = 40") + +>>> logger.info("Info index = 41") + +>>> logger.info("Info index = 42") + +>>> logger.info("Info index = 43") + +>>> logger.info("Info index = 44") + +>>> logger.info("Info index = 45") + +>>> logger.info("Info index = 46") + +>>> logger.info("Info index = 47") + +>>> logger.info("Info index = 48") + +>>> logger.info("Info index = 49") +INFO:root:Info index = 40 +INFO:root:Info index = 41 +INFO:root:Info index = 42 +INFO:root:Info index = 43 +INFO:root:Info index = 44 +INFO:root:Info index = 45 +INFO:root:Info index = 46 +INFO:root:Info index = 47 +INFO:root:Info index = 48 +INFO:root:Info index = 49 + +>>> logger.info("Info index = 50") + +>>> logger.info("Info index = 51") + +>>> logger.info("Info index = 52") + +>>> logger.info("Info index = 53") + +>>> logger.info("Info index = 54") + +>>> logger.info("Info index = 55") + +>>> logger.info("Info index = 56") + +>>> logger.info("Info index = 57") + +>>> logger.info("Info index = 58") + +>>> logger.info("Info index = 59") +INFO:root:Info index = 50 +INFO:root:Info index = 51 +INFO:root:Info index = 52 +INFO:root:Info index = 53 +INFO:root:Info index = 54 +INFO:root:Info index = 55 +INFO:root:Info index = 56 +INFO:root:Info index = 57 +INFO:root:Info index = 58 +INFO:root:Info index = 59 + +>>> logger.info("Info index = 60") + +>>> logger.info("Info index = 61") + +>>> logger.info("Info index = 62") + +>>> logger.info("Info index = 63") +>>> logger.info("Info index = 64") + +>>> logger.info("Info index = 65") + +>>> logger.info("Info index = 66") + +>>> logger.info("Info index = 67") + +>>> logger.info("Info index = 68") + +>>> logger.info("Info index = 69") +INFO:root:Info index = 60 +INFO:root:Info index = 61 +INFO:root:Info index = 62 +INFO:root:Info index = 63 +INFO:root:Info index = 64 +INFO:root:Info index = 65 +INFO:root:Info index = 66 +INFO:root:Info index = 67 +INFO:root:Info index = 68 +INFO:root:Info index = 69 + +>>> logger.info("Info index = 70") + +>>> logger.info("Info index = 71") + +>>> logger.info("Info index = 72") + +>>> logger.info("Info index = 73") + +>>> logger.info("Info index = 74") + +>>> logger.info("Info index = 75") + +>>> logger.info("Info index = 76") + +>>> logger.info("Info index = 77") + +>>> logger.info("Info index = 78") + +>>> logger.info("Info index = 79") +INFO:root:Info index = 70 +INFO:root:Info index = 71 +INFO:root:Info index = 72 +INFO:root:Info index = 73 +INFO:root:Info index = 74 +INFO:root:Info index = 75 +INFO:root:Info index = 76 +INFO:root:Info index = 77 +INFO:root:Info index = 78 +INFO:root:Info index = 79 + +>>> logger.info("Info index = 80") + +>>> logger.info("Info index = 81") + +>>> logger.info("Info index = 82") + +>>> logger.info("Info index = 83") + +>>> logger.info("Info index = 84") + +>>> logger.info("Info index = 85") + +>>> logger.info("Info index = 86") + +>>> logger.info("Info index = 87") + +>>> logger.info("Info index = 88") + +>>> logger.info("Info index = 89") +INFO:root:Info index = 80 +INFO:root:Info index = 81 +INFO:root:Info index = 82 +INFO:root:Info index = 83 +INFO:root:Info index = 84 +INFO:root:Info index = 85 +INFO:root:Info index = 86 +INFO:root:Info index = 87 +INFO:root:Info index = 88 +INFO:root:Info index = 89 + +>>> logger.info("Info index = 90") + +>>> logger.info("Info index = 91") + +>>> logger.info("Info index = 92") + +>>> logger.info("Info index = 93") + +>>> logger.info("Info index = 94") + +>>> logger.info("Info index = 95") + +>>> logger.info("Info index = 96") + +>>> logger.info("Info index = 97") + +>>> logger.info("Info index = 98") + +>>> logger.info("Info index = 99") +INFO:root:Info index = 90 +INFO:root:Info index = 91 +INFO:root:Info index = 92 +INFO:root:Info index = 93 +INFO:root:Info index = 94 +INFO:root:Info index = 95 +INFO:root:Info index = 96 +INFO:root:Info index = 97 +INFO:root:Info index = 98 +INFO:root:Info index = 99 + +>>> logger.info("Info index = 100") + +>>> logger.info("Info index = 101") + +>>> mh.close() +INFO:root:Info index = 100 +INFO:root:Info index = 101 + +>>> logger.removeHandler(mh) +>>> logger.addHandler(sh) + + + +Test 3 +====== + +>>> import sys, logging +>>> sys.stderr = sys +>>> logging.basicConfig() +>>> FILTER = "a.b" +>>> root = logging.getLogger() +>>> root.setLevel(logging.DEBUG) +>>> hand = root.handlers[0] + +>>> logging.getLogger("a").info("Info 1") +INFO:a:Info 1 + +>>> logging.getLogger("a.b").info("Info 2") +INFO:a.b:Info 2 + +>>> logging.getLogger("a.c").info("Info 3") +INFO:a.c:Info 3 + +>>> logging.getLogger("a.b.c").info("Info 4") +INFO:a.b.c:Info 4 + +>>> logging.getLogger("a.b.c.d").info("Info 5") +INFO:a.b.c.d:Info 5 + +>>> logging.getLogger("a.bb.c").info("Info 6") +INFO:a.bb.c:Info 6 + +>>> logging.getLogger("b").info("Info 7") +INFO:b:Info 7 + +>>> logging.getLogger("b.a").info("Info 8") +INFO:b.a:Info 8 + +>>> logging.getLogger("c.a.b").info("Info 9") +INFO:c.a.b:Info 9 + +>>> logging.getLogger("a.bb").info("Info 10") +INFO:a.bb:Info 10 + +Filtered with 'a.b'... + +>>> filt = logging.Filter(FILTER) + +>>> hand.addFilter(filt) + +>>> logging.getLogger("a").info("Info 1") + +>>> logging.getLogger("a.b").info("Info 2") +INFO:a.b:Info 2 + +>>> logging.getLogger("a.c").info("Info 3") + +>>> logging.getLogger("a.b.c").info("Info 4") +INFO:a.b.c:Info 4 + +>>> logging.getLogger("a.b.c.d").info("Info 5") +INFO:a.b.c.d:Info 5 + +>>> logging.getLogger("a.bb.c").info("Info 6") + +>>> logging.getLogger("b").info("Info 7") + +>>> logging.getLogger("b.a").info("Info 8") + +>>> logging.getLogger("c.a.b").info("Info 9") + +>>> logging.getLogger("a.bb").info("Info 10") + +>>> hand.removeFilter(filt) + + +Test 4 +====== +>>> import sys, logging, logging.handlers, string +>>> import tempfile, logging.config, os, test.test_support +>>> sys.stderr = sys.stdout + +>>> from test_logging import config0, config1 + +config2 has a subtle configuration error that should be reported +>>> config2 = string.replace(config1, "sys.stdout", "sys.stbout") + +config3 has a less subtle configuration error +>>> config3 = string.replace(config1, "formatter=form1", "formatter=misspelled_name") + +>>> def test4(conf): +... loggerDict = logging.getLogger().manager.loggerDict +... logging._acquireLock() +... try: +... saved_handlers = logging._handlers.copy() +... saved_handler_list = logging._handlerList[:] +... saved_loggers = loggerDict.copy() +... finally: +... logging._releaseLock() +... try: +... fn = test.test_support.TESTFN +... f = open(fn, "w") +... f.write(conf) +... f.close() +... try: +... logging.config.fileConfig(fn) +... #call again to make sure cleanup is correct +... logging.config.fileConfig(fn) +... except: +... t = sys.exc_info()[0] +... message(str(t)) +... else: +... message('ok.') +... os.remove(fn) +... finally: +... logging._acquireLock() +... try: +... logging._handlers.clear() +... logging._handlers.update(saved_handlers) +... logging._handlerList[:] = saved_handler_list +... loggerDict = logging.getLogger().manager.loggerDict +... loggerDict.clear() +... loggerDict.update(saved_loggers) +... finally: +... logging._releaseLock() + +>>> test4(config0) +ok. + +>>> test4(config1) +ok. + +>>> test4(config2) + + +>>> test4(config3) + + +>>> import test_logging +>>> test_logging.test5() +ERROR:root:just testing +... Don't panic! + + +Test Main +========= +>>> import select +>>> import os, sys, string, struct, types, cPickle, cStringIO +>>> import socket, tempfile, threading, time +>>> import logging, logging.handlers, logging.config +>>> import test_logging + +>>> test_logging.test_main_inner() +ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR) +ERR -> ERROR: Message 1 (via logrecv.tcp.ERR) +INF -> CRITICAL: Message 2 (via logrecv.tcp.INF) +INF -> ERROR: Message 3 (via logrecv.tcp.INF) +INF -> WARNING: Message 4 (via logrecv.tcp.INF) +INF -> INFO: Message 5 (via logrecv.tcp.INF) +INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF) +INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF) +INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR) +INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR) +INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF) +INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF) +DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB) +DEB -> ERROR: Message 15 (via logrecv.tcp.DEB) +DEB -> WARNING: Message 16 (via logrecv.tcp.DEB) +DEB -> INFO: Message 17 (via logrecv.tcp.DEB) +DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB) +UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF) +UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF) +UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF) +UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF) +INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF) +INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT) +INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF) + +""" import select -import os, sys, string, struct, types, cPickle, cStringIO -import socket, tempfile, threading, time -import logging, logging.handlers, logging.config -from test.test_support import run_with_locale +import os, sys, string, struct, cPickle, cStringIO +import socket, threading +import logging, logging.handlers, logging.config, test.test_support + BANNER = "-- %-10s %-6s ---------------------------------------------------\n" FINISH_UP = "Finish up, it's closing time. Messages should bear numbers 0 through 24." +#---------------------------------------------------------------------------- +# Test 0 +#---------------------------------------------------------------------------- + +msgcount = 0 + +def nextmessage(): + global msgcount + rv = "Message %d" % msgcount + msgcount = msgcount + 1 + return rv #---------------------------------------------------------------------------- # Log receiver @@ -69,20 +1913,89 @@ except: raise - def unPickle(self, data): - return cPickle.loads(data) + def unPickle(self, data): + return cPickle.loads(data) + + def handleLogRecord(self, record): + logname = "logrecv.tcp." + record.name + #If the end-of-messages sentinel is seen, tell the server to terminate + if record.msg == FINISH_UP: + self.server.abort = 1 + record.msg = record.msg + " (via " + logname + ")" + logger = logging.getLogger("logrecv") + logger.handle(record) + +# The server sets socketDataProcessed when it's done. +socketDataProcessed = threading.Event() +#---------------------------------------------------------------------------- +# Test 5 +#---------------------------------------------------------------------------- + +test5_config = """ +[loggers] +keys=root + +[handlers] +keys=hand1 + +[formatters] +keys=form1 + +[logger_root] +level=NOTSET +handlers=hand1 + +[handler_hand1] +class=StreamHandler +level=NOTSET +formatter=form1 +args=(sys.stdout,) + +[formatter_form1] +class=test.test_logging.FriendlyFormatter +format=%(levelname)s:%(name)s:%(message)s +datefmt= +""" - def handleLogRecord(self, record): - logname = "logrecv.tcp." + record.name - #If the end-of-messages sentinel is seen, tell the server to terminate - if record.msg == FINISH_UP: - self.server.abort = 1 - record.msg = record.msg + " (via " + logname + ")" - logger = logging.getLogger(logname) - logger.handle(record) +class FriendlyFormatter (logging.Formatter): + def formatException(self, ei): + return "%s... Don't panic!" % str(ei[0]) + + +def test5(): + loggerDict = logging.getLogger().manager.loggerDict + logging._acquireLock() + try: + saved_handlers = logging._handlers.copy() + saved_handler_list = logging._handlerList[:] + saved_loggers = loggerDict.copy() + finally: + logging._releaseLock() + try: + fn = test.test_support.TESTFN + f = open(fn, "w") + f.write(test5_config) + f.close() + logging.config.fileConfig(fn) + try: + raise KeyError + except KeyError: + logging.exception("just testing") + os.remove(fn) + hdlr = logging.getLogger().handlers[0] + logging.getLogger().handlers.remove(hdlr) + finally: + logging._acquireLock() + try: + logging._handlers.clear() + logging._handlers.update(saved_handlers) + logging._handlerList[:] = saved_handler_list + loggerDict = logging.getLogger().manager.loggerDict + loggerDict.clear() + loggerDict.update(saved_loggers) + finally: + logging._releaseLock() -# The server sets socketDataProcessed when it's done. -socketDataProcessed = threading.Event() class LogRecordSocketReceiver(ThreadingTCPServer): """ @@ -96,7 +2009,7 @@ port=logging.handlers.DEFAULT_TCP_LOGGING_PORT, handler=LogRecordStreamHandler): ThreadingTCPServer.__init__(self, (host, port), handler) - self.abort = 0 + self.abort = False self.timeout = 1 def serve_until_stopped(self): @@ -105,13 +2018,11 @@ self.timeout) if rd: self.handle_request() - #notify the main thread that we're about to exit - socketDataProcessed.set() + socketDataProcessed.set() # close the listen socket self.server_close() def process_request(self, request, client_address): - #import threading t = threading.Thread(target = self.finish_request, args = (request, client_address)) t.start() @@ -119,17 +2030,10 @@ def runTCP(tcpserver): tcpserver.serve_until_stopped() -#---------------------------------------------------------------------------- -# Test 0 -#---------------------------------------------------------------------------- - -msgcount = 0 - -def nextmessage(): - global msgcount - rv = "Message %d" % msgcount - msgcount = msgcount + 1 - return rv +def banner(nm, typ): + sep = BANNER % (nm, typ) + sys.stdout.write(sep) + sys.stdout.flush() def test0(): ERR = logging.getLogger("ERR") @@ -199,202 +2103,60 @@ INF.info(FINISH_UP) -#---------------------------------------------------------------------------- -# Test 1 -#---------------------------------------------------------------------------- - -# -# First, we define our levels. There can be as many as you want - the only -# limitations are that they should be integers, the lowest should be > 0 and -# larger values mean less information being logged. If you need specific -# level values which do not fit into these limitations, you can use a -# mapping dictionary to convert between your application levels and the -# logging system. -# -SILENT = 10 -TACITURN = 9 -TERSE = 8 -EFFUSIVE = 7 -SOCIABLE = 6 -VERBOSE = 5 -TALKATIVE = 4 -GARRULOUS = 3 -CHATTERBOX = 2 -BORING = 1 - -LEVEL_RANGE = range(BORING, SILENT + 1) - -# -# Next, we define names for our levels. You don't need to do this - in which -# case the system will use "Level n" to denote the text for the level. -# -my_logging_levels = { - SILENT : 'Silent', - TACITURN : 'Taciturn', - TERSE : 'Terse', - EFFUSIVE : 'Effusive', - SOCIABLE : 'Sociable', - VERBOSE : 'Verbose', - TALKATIVE : 'Talkative', - GARRULOUS : 'Garrulous', - CHATTERBOX : 'Chatterbox', - BORING : 'Boring', -} - -# -# Now, to demonstrate filtering: suppose for some perverse reason we only -# want to print out all except GARRULOUS messages. Let's create a filter for -# this purpose... -# -class SpecificLevelFilter(logging.Filter): - def __init__(self, lvl): - self.level = lvl - - def filter(self, record): - return self.level != record.levelno - -class GarrulousFilter(SpecificLevelFilter): - def __init__(self): - SpecificLevelFilter.__init__(self, GARRULOUS) - -# -# Now, let's demonstrate filtering at the logger. This time, use a filter -# which excludes SOCIABLE and TACITURN messages. Note that GARRULOUS events -# are still excluded. -# -class VerySpecificFilter(logging.Filter): - def filter(self, record): - return record.levelno not in [SOCIABLE, TACITURN] - -def message(s): - sys.stdout.write("%s\n" % s) - -SHOULD1 = "This should only be seen at the '%s' logging level (or lower)" +def test_main_inner(): + rootLogger = logging.getLogger("") + rootLogger.setLevel(logging.DEBUG) -def test1(): -# -# Now, tell the logging system to associate names with our levels. -# - for lvl in my_logging_levels.keys(): - logging.addLevelName(lvl, my_logging_levels[lvl]) - -# -# Now, define a test function which logs an event at each of our levels. -# - - def doLog(log): - for lvl in LEVEL_RANGE: - log.log(lvl, SHOULD1, logging.getLevelName(lvl)) - - log = logging.getLogger("") - hdlr = log.handlers[0] -# -# Set the logging level to each different value and call the utility -# function to log events. -# In the output, you should see that each time round the loop, the number of -# logging events which are actually output decreases. -# - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - # - # Now, we demonstrate level filtering at the handler level. Tell the - # handler defined above to filter at level 'SOCIABLE', and repeat the - # above loop. Compare the output from the two runs. - # - hdlr.setLevel(SOCIABLE) - message("-- Filtering at handler level to SOCIABLE --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - - hdlr.setLevel(0) #turn off level filtering at the handler - - garr = GarrulousFilter() - hdlr.addFilter(garr) - message("-- Filtering using GARRULOUS filter --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - spec = VerySpecificFilter() - log.addFilter(spec) - message("-- Filtering using specific filter for SOCIABLE, TACITURN --") - for lvl in LEVEL_RANGE: - message("-- setting logging level to '%s' -----" % - logging.getLevelName(lvl)) - log.setLevel(lvl) - doLog(log) - - log.removeFilter(spec) - hdlr.removeFilter(garr) - #Undo the one level which clashes...for regression tests - logging.addLevelName(logging.DEBUG, "DEBUG") + tcpserver = LogRecordSocketReceiver(port=0) + port = tcpserver.socket.getsockname()[1] -#---------------------------------------------------------------------------- -# Test 2 -#---------------------------------------------------------------------------- + # Set up a handler such that all events are sent via a socket to the log + # receiver (logrecv). + # The handler will only be added to the rootLogger for some of the tests + shdlr = logging.handlers.SocketHandler('localhost', port) + rootLogger.addHandler(shdlr) -MSG = "-- logging %d at INFO, messages should be seen every 10 events --" -def test2(): - logger = logging.getLogger("") - sh = logger.handlers[0] - sh.close() - logger.removeHandler(sh) - mh = logging.handlers.MemoryHandler(10,logging.WARNING, sh) - logger.setLevel(logging.DEBUG) - logger.addHandler(mh) - message("-- logging at DEBUG, nothing should be seen yet --") - logger.debug("Debug message") - message("-- logging at INFO, nothing should be seen yet --") - logger.info("Info message") - message("-- logging at WARNING, 3 messages should be seen --") - logger.warn("Warn message") - for i in xrange(102): - message(MSG % i) - logger.info("Info index = %d", i) - mh.close() - logger.removeHandler(mh) - logger.addHandler(sh) + # Configure the logger for logrecv so events do not propagate beyond it. + # The sockLogger output is buffered in memory until the end of the test, + # and printed at the end. + sockOut = cStringIO.StringIO() + sockLogger = logging.getLogger("logrecv") + sockLogger.setLevel(logging.DEBUG) + sockhdlr = logging.StreamHandler(sockOut) + sockhdlr.setFormatter(logging.Formatter( + "%(name)s -> %(levelname)s: %(message)s")) + sockLogger.addHandler(sockhdlr) + sockLogger.propagate = 0 -#---------------------------------------------------------------------------- -# Test 3 -#---------------------------------------------------------------------------- + #Set up servers + threads = [] + #sys.stdout.write("About to start TCP server...\n") + threads.append(threading.Thread(target=runTCP, args=(tcpserver,))) -FILTER = "a.b" + for thread in threads: + thread.start() + try: + test0() -def doLog3(): - logging.getLogger("a").info("Info 1") - logging.getLogger("a.b").info("Info 2") - logging.getLogger("a.c").info("Info 3") - logging.getLogger("a.b.c").info("Info 4") - logging.getLogger("a.b.c.d").info("Info 5") - logging.getLogger("a.bb.c").info("Info 6") - logging.getLogger("b").info("Info 7") - logging.getLogger("b.a").info("Info 8") - logging.getLogger("c.a.b").info("Info 9") - logging.getLogger("a.bb").info("Info 10") - -def test3(): - root = logging.getLogger() - root.setLevel(logging.DEBUG) - hand = root.handlers[0] - message("Unfiltered...") - doLog3() - message("Filtered with '%s'..." % FILTER) - filt = logging.Filter(FILTER) - hand.addFilter(filt) - doLog3() - hand.removeFilter(filt) + # XXX(nnorwitz): Try to fix timing related test failures. + # This sleep gives us some extra time to read messages. + # The test generally only fails on Solaris without this sleep. + #time.sleep(2.0) + shdlr.close() + rootLogger.removeHandler(shdlr) -#---------------------------------------------------------------------------- -# Test 4 -#---------------------------------------------------------------------------- + finally: + #wait for TCP receiver to terminate + socketDataProcessed.wait() + # ensure the server dies + tcpserver.abort = True + for thread in threads: + thread.join(2.0) + print(sockOut.getvalue()) + sockOut.close() + sockLogger.removeHandler(sockhdlr) + sockhdlr.close() + sys.stdout.flush() # config0 is a standard configuration. config0 = """ @@ -454,6 +2216,9 @@ datefmt= """ +def message(s): + sys.stdout.write("%s\n" % s) + # config2 has a subtle configuration error that should be reported config2 = string.replace(config1, "sys.stdout", "sys.stbout") @@ -461,225 +2226,9 @@ config3 = string.replace( config1, "formatter=form1", "formatter=misspelled_name") -def test4(): - for i in range(4): - conf = globals()['config%d' % i] - sys.stdout.write('config%d: ' % i) - loggerDict = logging.getLogger().manager.loggerDict - logging._acquireLock() - try: - saved_handlers = logging._handlers.copy() - saved_handler_list = logging._handlerList[:] - saved_loggers = loggerDict.copy() - finally: - logging._releaseLock() - try: - fn = tempfile.mktemp(".ini") - f = open(fn, "w") - f.write(conf) - f.close() - try: - logging.config.fileConfig(fn) - #call again to make sure cleanup is correct - logging.config.fileConfig(fn) - except: - t = sys.exc_info()[0] - message(str(t)) - else: - message('ok.') - os.remove(fn) - finally: - logging._acquireLock() - try: - logging._handlers.clear() - logging._handlers.update(saved_handlers) - logging._handlerList[:] = saved_handler_list - loggerDict = logging.getLogger().manager.loggerDict - loggerDict.clear() - loggerDict.update(saved_loggers) - finally: - logging._releaseLock() - -#---------------------------------------------------------------------------- -# Test 5 -#---------------------------------------------------------------------------- - -test5_config = """ -[loggers] -keys=root - -[handlers] -keys=hand1 - -[formatters] -keys=form1 - -[logger_root] -level=NOTSET -handlers=hand1 - -[handler_hand1] -class=StreamHandler -level=NOTSET -formatter=form1 -args=(sys.stdout,) - -[formatter_form1] -class=test.test_logging.FriendlyFormatter -format=%(levelname)s:%(name)s:%(message)s -datefmt= -""" - -class FriendlyFormatter (logging.Formatter): - def formatException(self, ei): - return "%s... Don't panic!" % str(ei[0]) - - -def test5(): - loggerDict = logging.getLogger().manager.loggerDict - logging._acquireLock() - try: - saved_handlers = logging._handlers.copy() - saved_handler_list = logging._handlerList[:] - saved_loggers = loggerDict.copy() - finally: - logging._releaseLock() - try: - fn = tempfile.mktemp(".ini") - f = open(fn, "w") - f.write(test5_config) - f.close() - logging.config.fileConfig(fn) - try: - raise KeyError - except KeyError: - logging.exception("just testing") - os.remove(fn) - hdlr = logging.getLogger().handlers[0] - logging.getLogger().handlers.remove(hdlr) - finally: - logging._acquireLock() - try: - logging._handlers.clear() - logging._handlers.update(saved_handlers) - logging._handlerList[:] = saved_handler_list - loggerDict = logging.getLogger().manager.loggerDict - loggerDict.clear() - loggerDict.update(saved_loggers) - finally: - logging._releaseLock() - - -#---------------------------------------------------------------------------- -# Test Harness -#---------------------------------------------------------------------------- -def banner(nm, typ): - sep = BANNER % (nm, typ) - sys.stdout.write(sep) - sys.stdout.flush() - -def test_main_inner(): - rootLogger = logging.getLogger("") - rootLogger.setLevel(logging.DEBUG) - hdlr = logging.StreamHandler(sys.stdout) - fmt = logging.Formatter(logging.BASIC_FORMAT) - hdlr.setFormatter(fmt) - rootLogger.addHandler(hdlr) - - # Find an unused port number - port = logging.handlers.DEFAULT_TCP_LOGGING_PORT - while port < logging.handlers.DEFAULT_TCP_LOGGING_PORT+100: - try: - tcpserver = LogRecordSocketReceiver(port=port) - except socket.error: - port += 1 - else: - break - else: - raise ImportError, "Could not find unused port" - - - #Set up a handler such that all events are sent via a socket to the log - #receiver (logrecv). - #The handler will only be added to the rootLogger for some of the tests - shdlr = logging.handlers.SocketHandler('localhost', port) - - #Configure the logger for logrecv so events do not propagate beyond it. - #The sockLogger output is buffered in memory until the end of the test, - #and printed at the end. - sockOut = cStringIO.StringIO() - sockLogger = logging.getLogger("logrecv") - sockLogger.setLevel(logging.DEBUG) - sockhdlr = logging.StreamHandler(sockOut) - sockhdlr.setFormatter(logging.Formatter( - "%(name)s -> %(levelname)s: %(message)s")) - sockLogger.addHandler(sockhdlr) - sockLogger.propagate = 0 - - #Set up servers - threads = [] - #sys.stdout.write("About to start TCP server...\n") - threads.append(threading.Thread(target=runTCP, args=(tcpserver,))) - - for thread in threads: - thread.start() - try: - banner("log_test0", "begin") - - rootLogger.addHandler(shdlr) - test0() - # XXX(nnorwitz): Try to fix timing related test failures. - # This sleep gives us some extra time to read messages. - # The test generally only fails on Solaris without this sleep. - time.sleep(2.0) - shdlr.close() - rootLogger.removeHandler(shdlr) - - banner("log_test0", "end") - - for t in range(1,6): - banner("log_test%d" % t, "begin") - globals()['test%d' % t]() - banner("log_test%d" % t, "end") - - finally: - #wait for TCP receiver to terminate - socketDataProcessed.wait() - # ensure the server dies - tcpserver.abort = 1 - for thread in threads: - thread.join(2.0) - banner("logrecv output", "begin") - sys.stdout.write(sockOut.getvalue()) - sockOut.close() - sockLogger.removeHandler(sockhdlr) - sockhdlr.close() - banner("logrecv output", "end") - sys.stdout.flush() - try: - hdlr.close() - except: - pass - rootLogger.removeHandler(hdlr) - -# Set the locale to the platform-dependent default. I have no idea -# why the test does this, but in any case we save the current locale -# first and restore it at the end. - at run_with_locale('LC_ALL', '') def test_main(): - # Save and restore the original root logger level across the tests. - # Otherwise, e.g., if any test using cookielib runs after test_logging, - # cookielib's debug-level logger tries to log messages, leading to - # confusing: - # No handlers could be found for logger "cookielib" - # output while the tests are running. - root_logger = logging.getLogger("") - original_logging_level = root_logger.getEffectiveLevel() - try: - test_main_inner() - finally: - root_logger.setLevel(original_logging_level) + from test import test_support, test_logging + test_support.run_doctest(test_logging) -if __name__ == "__main__": - sys.stdout.write("test_logging\n") +if __name__=="__main__": test_main() Modified: python/branches/trunk-math/Lib/test/test_minidom.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_minidom.py (original) +++ python/branches/trunk-math/Lib/test/test_minidom.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,6 @@ import os import sys import pickle -import traceback from StringIO import StringIO from test.test_support import verbose, run_unittest, TestSkipped import unittest @@ -791,6 +790,14 @@ "testNormalize -- single empty node removed") doc.unlink() + def testBug1433694(self): + doc = parseString("t") + node = doc.documentElement + node.childNodes[1].nodeValue = "" + node.normalize() + self.confirm(node.childNodes[-1].nextSibling == None, + "Final child's .nextSibling should be None") + def testSiblings(self): doc = parseString("text?") root = doc.documentElement Modified: python/branches/trunk-math/Lib/test/test_mmap.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_mmap.py (original) +++ python/branches/trunk-math/Lib/test/test_mmap.py Thu Feb 28 21:09:17 2008 @@ -436,6 +436,11 @@ self.assertRaises(TypeError, m.write, "foo") + def test_error(self): + self.assert_(issubclass(mmap.error, EnvironmentError)) + self.assert_("mmap.error" in str(mmap.error)) + + def test_main(): run_unittest(MmapTests) Modified: python/branches/trunk-math/Lib/test/test_module.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_module.py (original) +++ python/branches/trunk-math/Lib/test/test_module.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,6 @@ # Test the module type import unittest -from test.test_support import verbose, run_unittest +from test.test_support import run_unittest import sys ModuleType = type(sys) Modified: python/branches/trunk-math/Lib/test/test_modulefinder.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_modulefinder.py (original) +++ python/branches/trunk-math/Lib/test/test_modulefinder.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,5 @@ import __future__ -import sys, os +import os import unittest import distutils.dir_util import tempfile Modified: python/branches/trunk-math/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_multibytecodec_support.py (original) +++ python/branches/trunk-math/Lib/test/test_multibytecodec_support.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,7 @@ # Common Unittest Routines for CJK codecs # -import sys, codecs, os.path +import sys, codecs import unittest, re from test import test_support from StringIO import StringIO Modified: python/branches/trunk-math/Lib/test/test_operator.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_operator.py (original) +++ python/branches/trunk-math/Lib/test/test_operator.py Thu Feb 28 21:09:17 2008 @@ -386,6 +386,26 @@ raise SyntaxError self.failUnlessRaises(SyntaxError, operator.attrgetter('foo'), C()) + # recursive gets + a = A() + a.name = 'arthur' + a.child = A() + a.child.name = 'thomas' + f = operator.attrgetter('child.name') + self.assertEqual(f(a), 'thomas') + self.assertRaises(AttributeError, f, a.child) + f = operator.attrgetter('name', 'child.name') + self.assertEqual(f(a), ('arthur', 'thomas')) + f = operator.attrgetter('name', 'child.name', 'child.child.name') + self.assertRaises(AttributeError, f, a) + + a.child.child = A() + a.child.child.name = 'johnson' + f = operator.attrgetter('child.child.name') + self.assertEqual(f(a), 'johnson') + f = operator.attrgetter('name', 'child.name', 'child.child.name') + self.assertEqual(f(a), ('arthur', 'thomas', 'johnson')) + def test_itemgetter(self): a = 'ABCDE' f = operator.itemgetter(2) @@ -420,6 +440,24 @@ self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) + def test_methodcaller(self): + self.assertRaises(TypeError, operator.methodcaller) + class A: + def foo(self, *args, **kwds): + return args[0] + args[1] + def bar(self, f=42): + return f + a = A() + f = operator.methodcaller('foo') + self.assertRaises(IndexError, f, a) + f = operator.methodcaller('foo', 1, 2) + self.assertEquals(f(a), 3) + f = operator.methodcaller('bar') + self.assertEquals(f(a), 42) + self.assertRaises(TypeError, f, a, a) + f = operator.methodcaller('bar', f=5) + self.assertEquals(f(a), 5) + def test_inplace(self): class C(object): def __iadd__ (self, other): return "iadd" Modified: python/branches/trunk-math/Lib/test/test_optparse.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_optparse.py (original) +++ python/branches/trunk-math/Lib/test/test_optparse.py Thu Feb 28 21:09:17 2008 @@ -16,7 +16,6 @@ import unittest from StringIO import StringIO -from pprint import pprint from test import test_support Modified: python/branches/trunk-math/Lib/test/test_ossaudiodev.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_ossaudiodev.py (original) +++ python/branches/trunk-math/Lib/test/test_ossaudiodev.py Thu Feb 28 21:09:17 2008 @@ -1,14 +1,11 @@ from test import test_support test_support.requires('audio') -from test.test_support import verbose, findfile, TestSkipped +from test.test_support import findfile, TestSkipped import errno -import fcntl import ossaudiodev -import os import sys -import select import sunaudio import time import audioop Modified: python/branches/trunk-math/Lib/test/test_parser.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_parser.py (original) +++ python/branches/trunk-math/Lib/test/test_parser.py Thu Feb 28 21:09:17 2008 @@ -480,11 +480,28 @@ st = parser.suite('a = u"\u1"') self.assertRaises(SyntaxError, parser.compilest, st) +class ParserStackLimitTestCase(unittest.TestCase): + """try to push the parser to/over it's limits. + see http://bugs.python.org/issue1881 for a discussion + """ + def _nested_expression(self, level): + return "["*level+"]"*level + + def test_deeply_nested_list(self): + e = self._nested_expression(99) + st = parser.expr(e) + st.compile() + + def test_trigger_memory_error(self): + e = self._nested_expression(100) + self.assertRaises(MemoryError, parser.expr, e) + def test_main(): test_support.run_unittest( RoundtripLegalSyntaxTestCase, IllegalSyntaxTestCase, CompileTestCase, + ParserStackLimitTestCase, ) Modified: python/branches/trunk-math/Lib/test/test_pickle.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_pickle.py (original) +++ python/branches/trunk-math/Lib/test/test_pickle.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ import pickle -import unittest from cStringIO import StringIO from test import test_support Modified: python/branches/trunk-math/Lib/test/test_pkg.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_pkg.py (original) +++ python/branches/trunk-math/Lib/test/test_pkg.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,6 @@ import os import tempfile import textwrap -import traceback import unittest from test import test_support Modified: python/branches/trunk-math/Lib/test/test_plistlib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_plistlib.py (original) +++ python/branches/trunk-math/Lib/test/test_plistlib.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,6 @@ import unittest import plistlib import os -import time import datetime from test import test_support Modified: python/branches/trunk-math/Lib/test/test_poll.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_poll.py (original) +++ python/branches/trunk-math/Lib/test/test_poll.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,6 @@ # Test case for the os.poll() function -import sys, os, select, random, unittest +import os, select, random, unittest from test.test_support import TestSkipped, TESTFN, run_unittest try: Modified: python/branches/trunk-math/Lib/test/test_posix.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_posix.py (original) +++ python/branches/trunk-math/Lib/test/test_posix.py Thu Feb 28 21:09:17 2008 @@ -9,7 +9,6 @@ import time import os -import sys import unittest import warnings warnings.filterwarnings('ignore', '.* potential security risk .*', Modified: python/branches/trunk-math/Lib/test/test_pyclbr.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_pyclbr.py (original) +++ python/branches/trunk-math/Lib/test/test_pyclbr.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,7 @@ Nick Mathewson ''' from test.test_support import run_unittest -import unittest, sys +import sys from types import ClassType, FunctionType, MethodType, BuiltinFunctionType import pyclbr from unittest import TestCase Modified: python/branches/trunk-math/Lib/test/test_quopri.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_quopri.py (original) +++ python/branches/trunk-math/Lib/test/test_quopri.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,7 @@ from test import test_support import unittest -import sys, os, cStringIO, subprocess +import sys, cStringIO, subprocess import quopri Modified: python/branches/trunk-math/Lib/test/test_resource.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_resource.py (original) +++ python/branches/trunk-math/Lib/test/test_resource.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ import unittest from test import test_support -import os import resource import time Modified: python/branches/trunk-math/Lib/test/test_rfc822.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_rfc822.py (original) +++ python/branches/trunk-math/Lib/test/test_rfc822.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ import rfc822 -import sys import unittest from test import test_support Modified: python/branches/trunk-math/Lib/test/test_scope.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_scope.py (original) +++ python/branches/trunk-math/Lib/test/test_scope.py Thu Feb 28 21:09:17 2008 @@ -597,6 +597,24 @@ f(4)() + def testFreeingCell(self): + # Test what happens when a finalizer accesses + # the cell where the object was stored. + class Special: + def __del__(self): + nestedcell_get() + + def f(): + global nestedcell_get + def nestedcell_get(): + return c + + c = (Special(),) + c = 2 + + f() # used to crash the interpreter... + + def test_main(): run_unittest(ScopeTests) Modified: python/branches/trunk-math/Lib/test/test_scriptpackages.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_scriptpackages.py (original) +++ python/branches/trunk-math/Lib/test/test_scriptpackages.py Thu Feb 28 21:09:17 2008 @@ -1,9 +1,6 @@ # Copyright (C) 2003 Python Software Foundation import unittest -import os -import sys -import tempfile from test import test_support import aetools Modified: python/branches/trunk-math/Lib/test/test_sgmllib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_sgmllib.py (original) +++ python/branches/trunk-math/Lib/test/test_sgmllib.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,3 @@ -import htmlentitydefs import pprint import re import sgmllib @@ -116,7 +115,7 @@ try: events = self.get_events(source) except: - import sys + #import sys #print >>sys.stderr, pprint.pformat(self.events) raise if events != expected_events: Modified: python/branches/trunk-math/Lib/test/test_shlex.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_shlex.py (original) +++ python/branches/trunk-math/Lib/test/test_shlex.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # -*- coding: iso-8859-1 -*- import unittest -import os, sys import shlex from test import test_support Modified: python/branches/trunk-math/Lib/test/test_signal.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_signal.py (original) +++ python/branches/trunk-math/Lib/test/test_signal.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,7 @@ import unittest from test import test_support import signal -import os, sys, time +import os, sys, time, errno class HandlerBCalled(Exception): pass @@ -210,6 +210,50 @@ os.close(self.write) signal.signal(signal.SIGALRM, self.alrm) +class SiginterruptTest(unittest.TestCase): + signum = signal.SIGUSR1 + def readpipe_interrupted(self, cb): + r, w = os.pipe() + ppid = os.getpid() + pid = os.fork() + + oldhandler = signal.signal(self.signum, lambda x,y: None) + cb() + if pid==0: + # child code: sleep, kill, sleep. and then exit, + # which closes the pipe from which the parent process reads + try: + time.sleep(0.2) + os.kill(ppid, self.signum) + time.sleep(0.2) + finally: + os._exit(0) + + try: + os.close(w) + + try: + d=os.read(r, 1) + return False + except OSError, err: + if err.errno != errno.EINTR: + raise + return True + finally: + signal.signal(self.signum, oldhandler) + os.waitpid(pid, 0) + + def test_without_siginterrupt(self): + i=self.readpipe_interrupted(lambda: None) + self.assertEquals(i, True) + + def test_siginterrupt_on(self): + i=self.readpipe_interrupted(lambda: signal.siginterrupt(self.signum, 1)) + self.assertEquals(i, True) + + def test_siginterrupt_off(self): + i=self.readpipe_interrupted(lambda: signal.siginterrupt(self.signum, 0)) + self.assertEquals(i, False) def test_main(): if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos': @@ -217,7 +261,7 @@ sys.platform) test_support.run_unittest(BasicSignalTests, InterProcessSignalTests, - WakeupSignalTests) + WakeupSignalTests, SiginterruptTest) if __name__ == "__main__": Modified: python/branches/trunk-math/Lib/test/test_site.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_site.py (original) +++ python/branches/trunk-math/Lib/test/test_site.py Thu Feb 28 21:09:17 2008 @@ -5,12 +5,11 @@ """ import unittest -from test.test_support import TestSkipped, TestFailed, run_unittest, TESTFN +from test.test_support import TestSkipped, run_unittest, TESTFN import __builtin__ import os import sys import encodings -import tempfile # Need to make sure to not import 'site' if someone specified ``-S`` at the # command-line. Detect this by just making sure 'site' has not been imported # already. Modified: python/branches/trunk-math/Lib/test/test_smtplib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_smtplib.py (original) +++ python/branches/trunk-math/Lib/test/test_smtplib.py Thu Feb 28 21:09:17 2008 @@ -18,14 +18,15 @@ PORT = None def server(evt, buf): + serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serv.settimeout(1) + serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + serv.bind(("", 0)) + global PORT + PORT = serv.getsockname()[1] + serv.listen(5) + evt.set() try: - serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - serv.settimeout(3) - serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - serv.bind(("", 0)) - global PORT - PORT = serv.getsockname()[1] - serv.listen(5) conn, addr = serv.accept() except socket.timeout: pass @@ -38,7 +39,6 @@ buf = buf[sent:] n -= 1 - time.sleep(0.01) conn.close() finally: @@ -52,16 +52,8 @@ self.evt = threading.Event() servargs = (self.evt, "220 Hola mundo\n") threading.Thread(target=server, args=servargs).start() - - # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.evt.wait() + self.evt.clear() def tearDown(self): self.evt.wait() @@ -76,28 +68,12 @@ smtp = smtplib.SMTP("%s:%s" % (HOST, PORT)) smtp.sock.close() - def testNotConnected(self): - # Test various operations on an unconnected SMTP object that - # should raise exceptions (at present the attempt in SMTP.send - # to reference the nonexistent 'sock' attribute of the SMTP object - # causes an AttributeError) - smtp = smtplib.SMTP() - self.assertRaises(AttributeError, smtp.ehlo) - self.assertRaises(AttributeError, smtp.send, 'test msg') - def testLocalHostName(self): # check that supplied local_hostname is used smtp = smtplib.SMTP(HOST, PORT, local_hostname="testhost") self.assertEqual(smtp.local_hostname, "testhost") smtp.sock.close() - def testNonnumericPort(self): - # check that non-numeric port raises socket.error - self.assertRaises(socket.error, smtplib.SMTP, - "localhost", "bogus") - self.assertRaises(socket.error, smtplib.SMTP, - "localhost:bogus") - def testTimeoutDefault(self): # default smtp = smtplib.SMTP(HOST, PORT) @@ -127,6 +103,7 @@ serv = server_class(("", 0), ('nowhere', -1)) global PORT PORT = serv.getsockname()[1] + serv_evt.set() try: if hasattr(select, 'poll'): @@ -149,12 +126,12 @@ except socket.timeout: pass finally: - # allow some time for the client to read the result - time.sleep(0.5) - serv.close() + if not client_evt.isSet(): + # allow some time for the client to read the result + time.sleep(0.5) + serv.close() asyncore.close_all() PORT = None - time.sleep(0.5) serv_evt.set() MSG_BEGIN = '---------- MESSAGE FOLLOWS ----------\n' @@ -180,14 +157,8 @@ threading.Thread(target=debugging_server, args=serv_args).start() # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.serv_evt.wait() + self.serv_evt.clear() def tearDown(self): # indicate that the client is finished @@ -257,6 +228,26 @@ self.assertEqual(self.output.getvalue(), mexpect) +class NonConnectingTests(TestCase): + + def testNotConnected(self): + # Test various operations on an unconnected SMTP object that + # should raise exceptions (at present the attempt in SMTP.send + # to reference the nonexistent 'sock' attribute of the SMTP object + # causes an AttributeError) + smtp = smtplib.SMTP() + self.assertRaises(smtplib.SMTPServerDisconnected, smtp.ehlo) + self.assertRaises(smtplib.SMTPServerDisconnected, + smtp.send, 'test msg') + + def testNonnumericPort(self): + # check that non-numeric port raises socket.error + self.assertRaises(socket.error, smtplib.SMTP, + "localhost", "bogus") + self.assertRaises(socket.error, smtplib.SMTP, + "localhost:bogus") + + # test response of client to a non-successful HELO message class BadHELOServerTests(TestCase): @@ -268,16 +259,8 @@ self.evt = threading.Event() servargs = (self.evt, "199 no hello for you!\n") threading.Thread(target=server, args=servargs).start() - - # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.evt.wait() + self.evt.clear() def tearDown(self): self.evt.wait() @@ -354,14 +337,8 @@ threading.Thread(target=debugging_server, args=serv_args).start() # wait until server thread has assigned a port number - n = 500 - while PORT is None and n > 0: - time.sleep(0.01) - n -= 1 - - # wait a little longer (sometimes connections are refused - # on slow machines without this additional wait) - time.sleep(0.5) + self.serv_evt.wait() + self.serv_evt.clear() def tearDown(self): # indicate that the client is finished @@ -426,6 +403,7 @@ def test_main(verbose=None): test_support.run_unittest(GeneralTests, DebuggingServerTests, + NonConnectingTests, BadHELOServerTests, SMTPSimTests) if __name__ == '__main__': Modified: python/branches/trunk-math/Lib/test/test_socketserver.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_socketserver.py (original) +++ python/branches/trunk-math/Lib/test/test_socketserver.py Thu Feb 28 21:09:17 2008 @@ -2,14 +2,15 @@ Test suite for SocketServer.py. """ -import os -import socket import errno import imp +import os import select -import time +import signal +import socket +import tempfile import threading -from functools import wraps +import time import unittest import SocketServer @@ -20,7 +21,6 @@ test.test_support.requires("network") NREQ = 3 -DELAY = 0.5 TEST_STR = "hello world\n" HOST = "localhost" @@ -28,14 +28,6 @@ HAVE_FORKING = hasattr(os, "fork") and os.name != "os2" -class MyMixinHandler: - def handle(self): - time.sleep(DELAY) - line = self.rfile.readline() - time.sleep(DELAY) - self.wfile.write(line) - - def receive(sock, n, timeout=20): r, w, x = select.select([sock], [], [], timeout) if sock in r: @@ -43,14 +35,6 @@ else: raise RuntimeError, "timed out on %r" % (sock,) - -class MyStreamHandler(MyMixinHandler, SocketServer.StreamRequestHandler): - pass - -class MyDatagramHandler(MyMixinHandler, - SocketServer.DatagramRequestHandler): - pass - if HAVE_UNIX_SOCKETS: class ForkingUnixStreamServer(SocketServer.ForkingMixIn, SocketServer.UnixStreamServer): @@ -85,48 +69,28 @@ pass if verbose: print "thread: creating server" svr = svrcls(self.__addr, self.__hdlrcls) - # pull the address out of the server in case it changed - # this can happen if another process is using the port - addr = svr.server_address - if addr: - self.__addr = addr - if self.__addr != svr.socket.getsockname(): - raise RuntimeError('server_address was %s, expected %s' % - (self.__addr, svr.socket.getsockname())) + # We had the OS pick a port, so pull the real address out of + # the server. + self.addr = svr.server_address + self.port = self.addr[1] + if self.addr != svr.socket.getsockname(): + raise RuntimeError('server_address was %s, expected %s' % + (self.addr, svr.socket.getsockname())) self.ready.set() if verbose: print "thread: serving three times" svr.serve_a_few() if verbose: print "thread: done" -class ForgivingTCPServer(SocketServer.TCPServer): - # prevent errors if another process is using the port we want - def server_bind(self): - host, default_port = self.server_address - # this code shamelessly stolen from test.test_support - # the ports were changed to protect the innocent - import sys - for port in [default_port, 3434, 8798, 23833]: - try: - self.server_address = host, port - SocketServer.TCPServer.server_bind(self) - break - except socket.error, (err, msg): - if err != errno.EADDRINUSE: - raise - print >> sys.__stderr__, \ - "WARNING: failed to listen on port %d, trying another: " % port - - class SocketServerTest(unittest.TestCase): """Test all socket servers.""" def setUp(self): + signal.alarm(20) # Kill deadlocks after 20 seconds. self.port_seed = 0 self.test_files = [] def tearDown(self): - time.sleep(DELAY) reap_children() for fn in self.test_files: @@ -135,16 +99,18 @@ except os.error: pass self.test_files[:] = [] - - def pickport(self): - self.port_seed += 1 - return 10000 + (os.getpid() % 1000)*10 + self.port_seed + signal.alarm(0) # Didn't deadlock. def pickaddr(self, proto): if proto == socket.AF_INET: - return (HOST, self.pickport()) + return (HOST, 0) else: - fn = TEST_FILE + str(self.pickport()) + # XXX: We need a way to tell AF_UNIX to pick its own name + # like AF_INET provides port==0. + dir = None + if os.name == 'os2': + dir = '\socket' + fn = tempfile.mktemp(prefix='unix_socket.', dir=dir) if os.name == 'os2': # AF_UNIX socket names on OS/2 require a specific prefix # which can't include a drive letter and must also use @@ -153,7 +119,6 @@ fn = fn[2:] if fn[0] in (os.sep, os.altsep): fn = fn[1:] - fn = os.path.join('\socket', fn) if os.sep == '/': fn = fn.replace(os.sep, os.altsep) else: @@ -161,25 +126,30 @@ self.test_files.append(fn) return fn - def run_servers(self, proto, servers, hdlrcls, testfunc): - for svrcls in servers: - addr = self.pickaddr(proto) - if verbose: - print "ADDR =", addr - print "CLASS =", svrcls - t = ServerThread(addr, svrcls, hdlrcls) - if verbose: print "server created" - t.start() - if verbose: print "server running" - for i in range(NREQ): - t.ready.wait(10*DELAY) - self.assert_(t.ready.isSet(), - "Server not ready within a reasonable time") - if verbose: print "test client", i - testfunc(proto, addr) - if verbose: print "waiting for server" - t.join() - if verbose: print "done" + def run_server(self, svrcls, hdlrbase, testfunc): + class MyHandler(hdlrbase): + def handle(self): + line = self.rfile.readline() + self.wfile.write(line) + + addr = self.pickaddr(svrcls.address_family) + if verbose: + print "ADDR =", addr + print "CLASS =", svrcls + t = ServerThread(addr, svrcls, MyHandler) + if verbose: print "server created" + t.start() + if verbose: print "server running" + t.ready.wait(10) + self.assert_(t.ready.isSet(), + "%s not ready within a reasonable time" % svrcls) + addr = t.addr + for i in range(NREQ): + if verbose: print "test client", i + testfunc(svrcls.address_family, addr) + if verbose: print "waiting for server" + t.join() + if verbose: print "done" def stream_examine(self, proto, addr): s = socket.socket(proto, socket.SOCK_STREAM) @@ -202,47 +172,74 @@ self.assertEquals(buf, TEST_STR) s.close() - def test_TCPServers(self): - # Test SocketServer.TCPServer - servers = [ForgivingTCPServer, SocketServer.ThreadingTCPServer] - if HAVE_FORKING: - servers.append(SocketServer.ForkingTCPServer) - self.run_servers(socket.AF_INET, servers, - MyStreamHandler, self.stream_examine) - - def test_UDPServers(self): - # Test SocketServer.UDPServer - servers = [SocketServer.UDPServer, - SocketServer.ThreadingUDPServer] - if HAVE_FORKING: - servers.append(SocketServer.ForkingUDPServer) - self.run_servers(socket.AF_INET, servers, MyDatagramHandler, - self.dgram_examine) - - def test_stream_servers(self): - # Test SocketServer's stream servers - if not HAVE_UNIX_SOCKETS: - return - servers = [SocketServer.UnixStreamServer, - SocketServer.ThreadingUnixStreamServer] + def test_TCPServer(self): + self.run_server(SocketServer.TCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_ThreadingTCPServer(self): + self.run_server(SocketServer.ThreadingTCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + if HAVE_FORKING: + def test_ThreadingTCPServer(self): + self.run_server(SocketServer.ForkingTCPServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + if HAVE_UNIX_SOCKETS: + def test_UnixStreamServer(self): + self.run_server(SocketServer.UnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_ThreadingUnixStreamServer(self): + self.run_server(SocketServer.ThreadingUnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + if HAVE_FORKING: - servers.append(ForkingUnixStreamServer) - self.run_servers(socket.AF_UNIX, servers, MyStreamHandler, - self.stream_examine) + def test_ForkingUnixStreamServer(self): + self.run_server(ForkingUnixStreamServer, + SocketServer.StreamRequestHandler, + self.stream_examine) + + def test_UDPServer(self): + self.run_server(SocketServer.UDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) + + def test_ThreadingUDPServer(self): + self.run_server(SocketServer.ThreadingUDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) + + if HAVE_FORKING: + def test_ForkingUDPServer(self): + self.run_server(SocketServer.ForkingUDPServer, + SocketServer.DatagramRequestHandler, + self.dgram_examine) # Alas, on Linux (at least) recvfrom() doesn't return a meaningful # client address so this cannot work: - # def test_dgram_servers(self): - # # Test SocketServer.UnixDatagramServer - # if not HAVE_UNIX_SOCKETS: - # return - # servers = [SocketServer.UnixDatagramServer, - # SocketServer.ThreadingUnixDatagramServer] + # if HAVE_UNIX_SOCKETS: + # def test_UnixDatagramServer(self): + # self.run_server(SocketServer.UnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) + # + # def test_ThreadingUnixDatagramServer(self): + # self.run_server(SocketServer.ThreadingUnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) + # # if HAVE_FORKING: - # servers.append(ForkingUnixDatagramServer) - # self.run_servers(socket.AF_UNIX, servers, MyDatagramHandler, - # self.dgram_examine) + # def test_ForkingUnixDatagramServer(self): + # self.run_server(SocketServer.ForkingUnixDatagramServer, + # SocketServer.DatagramRequestHandler, + # self.dgram_examine) def test_main(): @@ -254,3 +251,4 @@ if __name__ == "__main__": test_main() + signal.alarm(3) # Shutdown shouldn't take more than 3 seconds. Modified: python/branches/trunk-math/Lib/test/test_sqlite.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_sqlite.py (original) +++ python/branches/trunk-math/Lib/test/test_sqlite.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ from test.test_support import run_unittest, TestSkipped -import unittest try: import _sqlite3 Modified: python/branches/trunk-math/Lib/test/test_str.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_str.py (original) +++ python/branches/trunk-math/Lib/test/test_str.py Thu Feb 28 21:09:17 2008 @@ -1,5 +1,4 @@ -import unittest import struct import sys from test import test_support, string_tests @@ -93,6 +92,264 @@ return self.assertRaises(OverflowError, 't\tt\t'.expandtabs, sys.maxint) + def test__format__(self): + def test(value, format, expected): + # test both with and without the trailing 's' + self.assertEqual(value.__format__(format), expected) + self.assertEqual(value.__format__(format + 's'), expected) + + test('', '', '') + test('abc', '', 'abc') + test('abc', '.3', 'abc') + test('ab', '.3', 'ab') + test('abcdef', '.3', 'abc') + test('abcdef', '.0', '') + test('abc', '3.3', 'abc') + test('abc', '2.3', 'abc') + test('abc', '2.2', 'ab') + test('abc', '3.2', 'ab ') + test('result', 'x<0', 'result') + test('result', 'x<5', 'result') + test('result', 'x<6', 'result') + test('result', 'x<7', 'resultx') + test('result', 'x<8', 'resultxx') + test('result', ' <7', 'result ') + test('result', '<7', 'result ') + test('result', '>7', ' result') + test('result', '>8', ' result') + test('result', '^8', ' result ') + test('result', '^9', ' result ') + test('result', '^10', ' result ') + test('a', '10000', 'a' + ' ' * 9999) + test('', '10000', ' ' * 10000) + test('', '10000000', ' ' * 10000000) + + def test_format(self): + self.assertEqual(''.format(), '') + self.assertEqual('a'.format(), 'a') + self.assertEqual('ab'.format(), 'ab') + self.assertEqual('a{{'.format(), 'a{') + self.assertEqual('a}}'.format(), 'a}') + self.assertEqual('{{b'.format(), '{b') + self.assertEqual('}}b'.format(), '}b') + self.assertEqual('a{{b'.format(), 'a{b') + + # examples from the PEP: + import datetime + self.assertEqual("My name is {0}".format('Fred'), "My name is Fred") + self.assertEqual("My name is {0[name]}".format(dict(name='Fred')), + "My name is Fred") + self.assertEqual("My name is {0} :-{{}}".format('Fred'), + "My name is Fred :-{}") + + d = datetime.date(2007, 8, 18) + self.assertEqual("The year is {0.year}".format(d), + "The year is 2007") + + # classes we'll use for testing + class C: + def __init__(self, x=100): + self._x = x + def __format__(self, spec): + return spec + + class D: + def __init__(self, x): + self.x = x + def __format__(self, spec): + return str(self.x) + + # class with __str__, but no __format__ + class E: + def __init__(self, x): + self.x = x + def __str__(self): + return 'E(' + self.x + ')' + + # class with __repr__, but no __format__ or __str__ + class F: + def __init__(self, x): + self.x = x + def __repr__(self): + return 'F(' + self.x + ')' + + # class with __format__ that forwards to string, for some format_spec's + class G: + def __init__(self, x): + self.x = x + def __str__(self): + return "string is " + self.x + def __format__(self, format_spec): + if format_spec == 'd': + return 'G(' + self.x + ')' + return object.__format__(self, format_spec) + + # class that returns a bad type from __format__ + class H: + def __format__(self, format_spec): + return 1.0 + + class I(datetime.date): + def __format__(self, format_spec): + return self.strftime(format_spec) + + class J(int): + def __format__(self, format_spec): + return int.__format__(self * 2, format_spec) + + + self.assertEqual(''.format(), '') + self.assertEqual('abc'.format(), 'abc') + self.assertEqual('{0}'.format('abc'), 'abc') + self.assertEqual('{0:}'.format('abc'), 'abc') + self.assertEqual('X{0}'.format('abc'), 'Xabc') + self.assertEqual('{0}X'.format('abc'), 'abcX') + self.assertEqual('X{0}Y'.format('abc'), 'XabcY') + self.assertEqual('{1}'.format(1, 'abc'), 'abc') + self.assertEqual('X{1}'.format(1, 'abc'), 'Xabc') + self.assertEqual('{1}X'.format(1, 'abc'), 'abcX') + self.assertEqual('X{1}Y'.format(1, 'abc'), 'XabcY') + self.assertEqual('{0}'.format(-15), '-15') + self.assertEqual('{0}{1}'.format(-15, 'abc'), '-15abc') + self.assertEqual('{0}X{1}'.format(-15, 'abc'), '-15Xabc') + self.assertEqual('{{'.format(), '{') + self.assertEqual('}}'.format(), '}') + self.assertEqual('{{}}'.format(), '{}') + self.assertEqual('{{x}}'.format(), '{x}') + self.assertEqual('{{{0}}}'.format(123), '{123}') + self.assertEqual('{{{{0}}}}'.format(), '{{0}}') + self.assertEqual('}}{{'.format(), '}{') + self.assertEqual('}}x{{'.format(), '}x{') + + # weird field names + self.assertEqual("{0[foo-bar]}".format({'foo-bar':'baz'}), 'baz') + self.assertEqual("{0[foo bar]}".format({'foo bar':'baz'}), 'baz') + self.assertEqual("{0[ ]}".format({' ':3}), '3') + + self.assertEqual('{foo._x}'.format(foo=C(20)), '20') + self.assertEqual('{1}{0}'.format(D(10), D(20)), '2010') + self.assertEqual('{0._x.x}'.format(C(D('abc'))), 'abc') + self.assertEqual('{0[0]}'.format(['abc', 'def']), 'abc') + self.assertEqual('{0[1]}'.format(['abc', 'def']), 'def') + self.assertEqual('{0[1][0]}'.format(['abc', ['def']]), 'def') + self.assertEqual('{0[1][0].x}'.format(['abc', [D('def')]]), 'def') + + # strings + self.assertEqual('{0:.3s}'.format('abc'), 'abc') + self.assertEqual('{0:.3s}'.format('ab'), 'ab') + self.assertEqual('{0:.3s}'.format('abcdef'), 'abc') + self.assertEqual('{0:.0s}'.format('abcdef'), '') + self.assertEqual('{0:3.3s}'.format('abc'), 'abc') + self.assertEqual('{0:2.3s}'.format('abc'), 'abc') + self.assertEqual('{0:2.2s}'.format('abc'), 'ab') + self.assertEqual('{0:3.2s}'.format('abc'), 'ab ') + self.assertEqual('{0:x<0s}'.format('result'), 'result') + self.assertEqual('{0:x<5s}'.format('result'), 'result') + self.assertEqual('{0:x<6s}'.format('result'), 'result') + self.assertEqual('{0:x<7s}'.format('result'), 'resultx') + self.assertEqual('{0:x<8s}'.format('result'), 'resultxx') + self.assertEqual('{0: <7s}'.format('result'), 'result ') + self.assertEqual('{0:<7s}'.format('result'), 'result ') + self.assertEqual('{0:>7s}'.format('result'), ' result') + self.assertEqual('{0:>8s}'.format('result'), ' result') + self.assertEqual('{0:^8s}'.format('result'), ' result ') + self.assertEqual('{0:^9s}'.format('result'), ' result ') + self.assertEqual('{0:^10s}'.format('result'), ' result ') + self.assertEqual('{0:10000}'.format('a'), 'a' + ' ' * 9999) + self.assertEqual('{0:10000}'.format(''), ' ' * 10000) + self.assertEqual('{0:10000000}'.format(''), ' ' * 10000000) + + # format specifiers for user defined type + self.assertEqual('{0:abc}'.format(C()), 'abc') + + # !r and !s coersions + self.assertEqual('{0!s}'.format('Hello'), 'Hello') + self.assertEqual('{0!s:}'.format('Hello'), 'Hello') + self.assertEqual('{0!s:15}'.format('Hello'), 'Hello ') + self.assertEqual('{0!s:15s}'.format('Hello'), 'Hello ') + self.assertEqual('{0!r}'.format('Hello'), "'Hello'") + self.assertEqual('{0!r:}'.format('Hello'), "'Hello'") + self.assertEqual('{0!r}'.format(F('Hello')), 'F(Hello)') + + # test fallback to object.__format__ + self.assertEqual('{0}'.format({}), '{}') + self.assertEqual('{0}'.format([]), '[]') + self.assertEqual('{0}'.format([1]), '[1]') + self.assertEqual('{0}'.format(E('data')), 'E(data)') + self.assertEqual('{0:^10}'.format(E('data')), ' E(data) ') + self.assertEqual('{0:^10s}'.format(E('data')), ' E(data) ') + self.assertEqual('{0:d}'.format(G('data')), 'G(data)') + self.assertEqual('{0:>15s}'.format(G('data')), ' string is data') + self.assertEqual('{0!s}'.format(G('data')), 'string is data') + + self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007, + month=8, + day=27)), + "date: 2007-08-27") + + # test deriving from a builtin type and overriding __format__ + self.assertEqual("{0}".format(J(10)), "20") + + + # string format specifiers + self.assertEqual('{0:}'.format('a'), 'a') + + # computed format specifiers + self.assertEqual("{0:.{1}}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{1}s}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{precision}s}".format('hello world', precision=5), 'hello') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width=10, precision=5), 'hello ') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), 'hello ') + + # test various errors + self.assertRaises(ValueError, '{'.format) + self.assertRaises(ValueError, '}'.format) + self.assertRaises(ValueError, 'a{'.format) + self.assertRaises(ValueError, 'a}'.format) + self.assertRaises(ValueError, '{a'.format) + self.assertRaises(ValueError, '}a'.format) + self.assertRaises(IndexError, '{0}'.format) + self.assertRaises(IndexError, '{1}'.format, 'abc') + self.assertRaises(KeyError, '{x}'.format) + self.assertRaises(ValueError, "}{".format) + self.assertRaises(ValueError, "{".format) + self.assertRaises(ValueError, "}".format) + self.assertRaises(ValueError, "abc{0:{}".format) + self.assertRaises(ValueError, "{0".format) + self.assertRaises(IndexError, "{0.}".format) + self.assertRaises(ValueError, "{0.}".format, 0) + self.assertRaises(IndexError, "{0[}".format) + self.assertRaises(ValueError, "{0[}".format, []) + self.assertRaises(KeyError, "{0]}".format) + self.assertRaises(ValueError, "{0.[]}".format, 0) + self.assertRaises(ValueError, "{0..foo}".format, 0) + self.assertRaises(ValueError, "{0[0}".format, 0) + self.assertRaises(ValueError, "{0[0:foo}".format, 0) + self.assertRaises(KeyError, "{c]}".format) + self.assertRaises(ValueError, "{{ {{{0}}".format, 0) + self.assertRaises(ValueError, "{0}}".format, 0) + self.assertRaises(KeyError, "{foo}".format, bar=3) + self.assertRaises(ValueError, "{0!x}".format, 3) + self.assertRaises(ValueError, "{0!}".format, 0) + self.assertRaises(ValueError, "{0!rs}".format, 0) + self.assertRaises(ValueError, "{!}".format) + self.assertRaises(ValueError, "{:}".format) + self.assertRaises(ValueError, "{:s}".format) + self.assertRaises(ValueError, "{}".format) + + # can't have a replacement on the field name portion + self.assertRaises(TypeError, '{0[{1}]}'.format, 'abcdefg', 4) + + # exceed maximum recursion depth + self.assertRaises(ValueError, "{0:{1:{2}}}".format, 'abc', 's', '') + self.assertRaises(ValueError, "{0:{1:{2:{3:{4:{5:{6}}}}}}}".format, + 0, 1, 2, 3, 4, 5, 6, 7) + + # string format spec errors + self.assertRaises(ValueError, "{0:-s}".format, '') + self.assertRaises(ValueError, format, "", "-") + self.assertRaises(ValueError, "{0:=s}".format, '') + def test_main(): test_support.run_unittest(StrTest) Modified: python/branches/trunk-math/Lib/test/test_strftime.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_strftime.py (original) +++ python/branches/trunk-math/Lib/test/test_strftime.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,7 @@ # Sanity checker for time.strftime -import time, calendar, sys, os, re +import time, calendar, sys, re from test.test_support import verbose def main(): Modified: python/branches/trunk-math/Lib/test/test_string.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_string.py (original) +++ python/branches/trunk-math/Lib/test/test_string.py Thu Feb 28 21:09:17 2008 @@ -106,6 +106,92 @@ self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi') self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi') + def test_formatter(self): + fmt = string.Formatter() + self.assertEqual(fmt.format("foo"), "foo") + + self.assertEqual(fmt.format("foo{0}", "bar"), "foobar") + self.assertEqual(fmt.format("foo{1}{0}-{1}", "bar", 6), "foo6bar-6") + self.assertEqual(fmt.format("-{arg!r}-", arg='test'), "-'test'-") + + # override get_value ############################################ + class NamespaceFormatter(string.Formatter): + def __init__(self, namespace={}): + string.Formatter.__init__(self) + self.namespace = namespace + + def get_value(self, key, args, kwds): + if isinstance(key, str): + try: + # Check explicitly passed arguments first + return kwds[key] + except KeyError: + return self.namespace[key] + else: + string.Formatter.get_value(key, args, kwds) + + fmt = NamespaceFormatter({'greeting':'hello'}) + self.assertEqual(fmt.format("{greeting}, world!"), 'hello, world!') + + + # override format_field ######################################### + class CallFormatter(string.Formatter): + def format_field(self, value, format_spec): + return format(value(), format_spec) + + fmt = CallFormatter() + self.assertEqual(fmt.format('*{0}*', lambda : 'result'), '*result*') + + + # override convert_field ######################################## + class XFormatter(string.Formatter): + def convert_field(self, value, conversion): + if conversion == 'x': + return None + return super(XFormatter, self).convert_field(value, conversion) + + fmt = XFormatter() + self.assertEqual(fmt.format("{0!r}:{0!x}", 'foo', 'foo'), "'foo':None") + + + # override parse ################################################ + class BarFormatter(string.Formatter): + # returns an iterable that contains tuples of the form: + # (literal_text, field_name, format_spec, conversion) + def parse(self, format_string): + for field in format_string.split('|'): + if field[0] == '+': + # it's markup + field_name, _, format_spec = field[1:].partition(':') + yield '', field_name, format_spec, None + else: + yield field, None, None, None + + fmt = BarFormatter() + self.assertEqual(fmt.format('*|+0:^10s|*', 'foo'), '* foo *') + + # test all parameters used + class CheckAllUsedFormatter(string.Formatter): + def check_unused_args(self, used_args, args, kwargs): + # Track which arguments actuallly got used + unused_args = set(kwargs.keys()) + unused_args.update(range(0, len(args))) + + for arg in used_args: + unused_args.remove(arg) + + if unused_args: + raise ValueError("unused arguments") + + fmt = CheckAllUsedFormatter() + self.assertEqual(fmt.format("{0}", 10), "10") + self.assertEqual(fmt.format("{0}{i}", 10, i=100), "10100") + self.assertEqual(fmt.format("{0}{i}{1}", 10, 20, i=100), "1010020") + self.assertRaises(ValueError, fmt.format, "{0}{i}{1}", 10, 20, i=100, j=0) + self.assertRaises(ValueError, fmt.format, "{0}", 10, 20) + self.assertRaises(ValueError, fmt.format, "{0}", 10, 20, i=100) + self.assertRaises(ValueError, fmt.format, "{i}", 10, 20, i=100) + class BytesAliasTest(unittest.TestCase): def test_builtin(self): Modified: python/branches/trunk-math/Lib/test/test_sunaudiodev.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_sunaudiodev.py (original) +++ python/branches/trunk-math/Lib/test/test_sunaudiodev.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,4 @@ -from test.test_support import verbose, findfile, TestFailed, TestSkipped +from test.test_support import findfile, TestFailed, TestSkipped import sunaudiodev import os Modified: python/branches/trunk-math/Lib/test/test_support.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_support.py (original) +++ python/branches/trunk-math/Lib/test/test_support.py Thu Feb 28 21:09:17 2008 @@ -9,8 +9,8 @@ import sys import os import os.path +import shutil import warnings -import types import unittest class Error(Exception): @@ -65,6 +65,14 @@ except OSError: pass +def rmtree(path): + try: + shutil.rmtree(path) + except OSError, e: + # Unix returns ENOENT, Windows returns ESRCH. + if e.errno not in (errno.ENOENT, errno.ESRCH): + raise + def forget(modname): '''"Forget" a module was ever imported by removing it from sys.modules and deleting any .pyc and .pyo files.''' @@ -97,7 +105,7 @@ def bind_port(sock, host='', preferred_port=54321): """Try to bind the sock to a port. If we are running multiple - tests and we don't try multiple ports, the test can fails. This + tests and we don't try multiple ports, the test can fail. This makes the test more robust.""" # Find some random ports that hopefully no one is listening on. Modified: python/branches/trunk-math/Lib/test/test_threading.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_threading.py (original) +++ python/branches/trunk-math/Lib/test/test_threading.py Thu Feb 28 21:09:17 2008 @@ -8,6 +8,7 @@ import thread import time import unittest +import weakref # A trivial mutable counter. class Counter(object): @@ -253,6 +254,33 @@ finally: sys.setcheckinterval(old_interval) + def test_no_refcycle_through_target(self): + class RunSelfFunction(object): + def __init__(self, should_raise): + # The links in this refcycle from Thread back to self + # should be cleaned up when the thread completes. + self.should_raise = should_raise + self.thread = threading.Thread(target=self._run, + args=(self,), + kwargs={'yet_another':self}) + self.thread.start() + + def _run(self, other_ref, yet_another): + if self.should_raise: + raise SystemExit + + cyclic_object = RunSelfFunction(should_raise=False) + weak_cyclic_object = weakref.ref(cyclic_object) + cyclic_object.thread.join() + del cyclic_object + self.assertEquals(None, weak_cyclic_object()) + + raising_cyclic_object = RunSelfFunction(should_raise=True) + weak_raising_cyclic_object = weakref.ref(raising_cyclic_object) + raising_cyclic_object.thread.join() + del raising_cyclic_object + self.assertEquals(None, weak_raising_cyclic_object()) + class ThreadingExceptionTests(unittest.TestCase): # A RuntimeError should be raised if Thread.start() is called Modified: python/branches/trunk-math/Lib/test/test_tuple.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_tuple.py (original) +++ python/branches/trunk-math/Lib/test/test_tuple.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,3 @@ -import unittest from test import test_support, seq_tests class TupleTest(seq_tests.CommonTest): Modified: python/branches/trunk-math/Lib/test/test_types.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_types.py (original) +++ python/branches/trunk-math/Lib/test/test_types.py Thu Feb 28 21:09:17 2008 @@ -89,6 +89,29 @@ if float(1) == 1.0 and float(-1) == -1.0 and float(0) == 0.0: pass else: self.fail('float() does not work properly') + def test_float_to_string(self): + def test(f, result): + self.assertEqual(f.__format__('e'), result) + self.assertEqual('%e' % f, result) + + # test all 2 digit exponents, both with __format__ and with + # '%' formatting + for i in range(-99, 100): + test(float('1.5e'+str(i)), '1.500000e{0:+03d}'.format(i)) + + # test some 3 digit exponents + self.assertEqual(1.5e100.__format__('e'), '1.500000e+100') + self.assertEqual('%e' % 1.5e100, '1.500000e+100') + + self.assertEqual(1.5e101.__format__('e'), '1.500000e+101') + self.assertEqual('%e' % 1.5e101, '1.500000e+101') + + self.assertEqual(1.5e-100.__format__('e'), '1.500000e-100') + self.assertEqual('%e' % 1.5e-100, '1.500000e-100') + + self.assertEqual(1.5e-101.__format__('e'), '1.500000e-101') + self.assertEqual('%e' % 1.5e-101, '1.500000e-101') + def test_normal_integers(self): # Ensure the first 256 integers are shared a = 256 @@ -266,6 +289,259 @@ except TypeError: pass else: self.fail("char buffer (at C level) not working") + def test_int__format__(self): + def test(i, format_spec, result): + # just make sure I'm not accidentally checking longs + assert type(i) == int + assert type(format_spec) == str + self.assertEqual(i.__format__(format_spec), result) + self.assertEqual(i.__format__(unicode(format_spec)), result) + + test(123456789, 'd', '123456789') + test(123456789, 'd', '123456789') + + test(1, 'c', '\01') + + # sign and aligning are interdependent + test(1, "-", '1') + test(-1, "-", '-1') + test(1, "-3", ' 1') + test(-1, "-3", ' -1') + test(1, "+3", ' +1') + test(-1, "+3", ' -1') + test(1, " 3", ' 1') + test(-1, " 3", ' -1') + test(1, " ", ' 1') + test(-1, " ", '-1') + + # hex + test(3, "x", "3") + test(3, "X", "3") + test(1234, "x", "4d2") + test(-1234, "x", "-4d2") + test(1234, "8x", " 4d2") + test(-1234, "8x", " -4d2") + test(1234, "x", "4d2") + test(-1234, "x", "-4d2") + test(-3, "x", "-3") + test(-3, "X", "-3") + test(int('be', 16), "x", "be") + test(int('be', 16), "X", "BE") + test(-int('be', 16), "x", "-be") + test(-int('be', 16), "X", "-BE") + + # octal + test(3, "o", "3") + test(-3, "o", "-3") + test(65, "o", "101") + test(-65, "o", "-101") + test(1234, "o", "2322") + test(-1234, "o", "-2322") + test(1234, "-o", "2322") + test(-1234, "-o", "-2322") + test(1234, " o", " 2322") + test(-1234, " o", "-2322") + test(1234, "+o", "+2322") + test(-1234, "+o", "-2322") + + # binary + test(3, "b", "11") + test(-3, "b", "-11") + test(1234, "b", "10011010010") + test(-1234, "b", "-10011010010") + test(1234, "-b", "10011010010") + test(-1234, "-b", "-10011010010") + test(1234, " b", " 10011010010") + test(-1234, " b", "-10011010010") + test(1234, "+b", "+10011010010") + test(-1234, "+b", "-10011010010") + + # make sure these are errors + + # precision disallowed + self.assertRaises(ValueError, 3 .__format__, "1.3") + # sign not allowed with 'c' + self.assertRaises(ValueError, 3 .__format__, "+c") + # format spec must be string + self.assertRaises(TypeError, 3 .__format__, None) + self.assertRaises(TypeError, 3 .__format__, 0) + + # ensure that only int and float type specifiers work + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'bcdoxXeEfFgGn%': + self.assertRaises(ValueError, 0 .__format__, format_spec) + self.assertRaises(ValueError, 1 .__format__, format_spec) + self.assertRaises(ValueError, (-1) .__format__, format_spec) + + # ensure that float type specifiers work; format converts + # the int to a float + for format_spec in 'eEfFgGn%': + for value in [0, 1, -1, 100, -100, 1234567890, -1234567890]: + self.assertEqual(value.__format__(format_spec), + float(value).__format__(format_spec)) + + def test_long__format__(self): + def test(i, format_spec, result): + # make sure we're not accidentally checking ints + assert type(i) == long + assert type(format_spec) == str + self.assertEqual(i.__format__(format_spec), result) + self.assertEqual(i.__format__(unicode(format_spec)), result) + + test(10**100, 'd', '1' + '0' * 100) + test(10**100+100, 'd', '1' + '0' * 97 + '100') + + test(123456789L, 'd', '123456789') + test(123456789L, 'd', '123456789') + + # sign and aligning are interdependent + test(1L, "-", '1') + test(-1L, "-", '-1') + test(1L, "-3", ' 1') + test(-1L, "-3", ' -1') + test(1L, "+3", ' +1') + test(-1L, "+3", ' -1') + test(1L, " 3", ' 1') + test(-1L, " 3", ' -1') + test(1L, " ", ' 1') + test(-1L, " ", '-1') + + test(1L, 'c', '\01') + + # hex + test(3L, "x", "3") + test(3L, "X", "3") + test(1234L, "x", "4d2") + test(-1234L, "x", "-4d2") + test(1234L, "8x", " 4d2") + test(-1234L, "8x", " -4d2") + test(1234L, "x", "4d2") + test(-1234L, "x", "-4d2") + test(-3L, "x", "-3") + test(-3L, "X", "-3") + test(long('be', 16), "x", "be") + test(long('be', 16), "X", "BE") + test(-long('be', 16), "x", "-be") + test(-long('be', 16), "X", "-BE") + + # octal + test(3L, "o", "3") + test(-3L, "o", "-3") + test(65L, "o", "101") + test(-65L, "o", "-101") + test(1234L, "o", "2322") + test(-1234L, "o", "-2322") + test(1234L, "-o", "2322") + test(-1234L, "-o", "-2322") + test(1234L, " o", " 2322") + test(-1234L, " o", "-2322") + test(1234L, "+o", "+2322") + test(-1234L, "+o", "-2322") + + # binary + test(3L, "b", "11") + test(-3L, "b", "-11") + test(1234L, "b", "10011010010") + test(-1234L, "b", "-10011010010") + test(1234L, "-b", "10011010010") + test(-1234L, "-b", "-10011010010") + test(1234L, " b", " 10011010010") + test(-1234L, " b", "-10011010010") + test(1234L, "+b", "+10011010010") + test(-1234L, "+b", "-10011010010") + + # make sure these are errors + + # precision disallowed + self.assertRaises(ValueError, 3L .__format__, "1.3") + # sign not allowed with 'c' + self.assertRaises(ValueError, 3L .__format__, "+c") + # format spec must be string + self.assertRaises(TypeError, 3L .__format__, None) + self.assertRaises(TypeError, 3L .__format__, 0) + + # ensure that only int and float type specifiers work + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'bcdoxXeEfFgGn%': + self.assertRaises(ValueError, 0L .__format__, format_spec) + self.assertRaises(ValueError, 1L .__format__, format_spec) + self.assertRaises(ValueError, (-1L) .__format__, format_spec) + + # ensure that float type specifiers work; format converts + # the long to a float + for format_spec in 'eEfFgGn%': + for value in [0L, 1L, -1L, 100L, -100L, 1234567890L, -1234567890L]: + self.assertEqual(value.__format__(format_spec), + float(value).__format__(format_spec)) + + def test_float__format__(self): + # these should be rewritten to use both format(x, spec) and + # x.__format__(spec) + + def test(f, format_spec, result): + assert type(f) == float + assert type(format_spec) == str + self.assertEqual(f.__format__(format_spec), result) + self.assertEqual(f.__format__(unicode(format_spec)), result) + + test(0.0, 'f', '0.000000') + + # the default is 'g', except for empty format spec + test(0.0, '', '0.0') + test(0.01, '', '0.01') + test(0.01, 'g', '0.01') + + test( 1.0, ' g', ' 1') + test(-1.0, ' g', '-1') + test( 1.0, '+g', '+1') + test(-1.0, '+g', '-1') + test(1.1234e200, 'g', '1.1234e+200') + test(1.1234e200, 'G', '1.1234E+200') + + + test(1.0, 'f', '1.000000') + + test(-1.0, 'f', '-1.000000') + + test( 1.0, ' f', ' 1.000000') + test(-1.0, ' f', '-1.000000') + test( 1.0, '+f', '+1.000000') + test(-1.0, '+f', '-1.000000') + test(1.1234e90, 'f', '1.1234e+90') + test(1.1234e90, 'F', '1.1234e+90') + test(1.1234e200, 'f', '1.1234e+200') + test(1.1234e200, 'F', '1.1234e+200') + + test( 1.0, 'e', '1.000000e+00') + test(-1.0, 'e', '-1.000000e+00') + test( 1.0, 'E', '1.000000E+00') + test(-1.0, 'E', '-1.000000E+00') + test(1.1234e20, 'e', '1.123400e+20') + test(1.1234e20, 'E', '1.123400E+20') + + # % formatting + test(-1.0, '%', '-100.000000%') + + # format spec must be string + self.assertRaises(TypeError, 3.0.__format__, None) + self.assertRaises(TypeError, 3.0.__format__, 0) + + # other format specifiers shouldn't work on floats, + # in particular int specifiers + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + + [chr(x) for x in range(ord('A'), ord('Z')+1)]): + if not format_spec in 'eEfFgGn%': + self.assertRaises(ValueError, format, 0.0, format_spec) + self.assertRaises(ValueError, format, 1.0, format_spec) + self.assertRaises(ValueError, format, -1.0, format_spec) + self.assertRaises(ValueError, format, 1e100, format_spec) + self.assertRaises(ValueError, format, -1e100, format_spec) + self.assertRaises(ValueError, format, 1e-100, format_spec) + self.assertRaises(ValueError, format, -1e-100, format_spec) + + def test_main(): run_unittest(TypesTests) Modified: python/branches/trunk-math/Lib/test/test_unicode.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_unicode.py (original) +++ python/branches/trunk-math/Lib/test/test_unicode.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ (c) Copyright CNRI, All Rights Reserved. NO WARRANTY. """#" -import unittest, sys, struct, codecs, new +import sys, struct, codecs from test import test_support, string_tests # Error handling (bad decoder return) @@ -825,6 +825,277 @@ return self.assertRaises(OverflowError, u't\tt\t'.expandtabs, sys.maxint) + def test__format__(self): + def test(value, format, expected): + # test both with and without the trailing 's' + self.assertEqual(value.__format__(format), expected) + self.assertEqual(value.__format__(format + u's'), expected) + + test(u'', u'', u'') + test(u'abc', u'', u'abc') + test(u'abc', u'.3', u'abc') + test(u'ab', u'.3', u'ab') + test(u'abcdef', u'.3', u'abc') + test(u'abcdef', u'.0', u'') + test(u'abc', u'3.3', u'abc') + test(u'abc', u'2.3', u'abc') + test(u'abc', u'2.2', u'ab') + test(u'abc', u'3.2', u'ab ') + test(u'result', u'x<0', u'result') + test(u'result', u'x<5', u'result') + test(u'result', u'x<6', u'result') + test(u'result', u'x<7', u'resultx') + test(u'result', u'x<8', u'resultxx') + test(u'result', u' <7', u'result ') + test(u'result', u'<7', u'result ') + test(u'result', u'>7', u' result') + test(u'result', u'>8', u' result') + test(u'result', u'^8', u' result ') + test(u'result', u'^9', u' result ') + test(u'result', u'^10', u' result ') + test(u'a', u'10000', u'a' + u' ' * 9999) + test(u'', u'10000', u' ' * 10000) + test(u'', u'10000000', u' ' * 10000000) + + # test mixing unicode and str + self.assertEqual(u'abc'.__format__('s'), u'abc') + self.assertEqual(u'abc'.__format__('->10s'), u'-------abc') + + def test_format(self): + self.assertEqual(u''.format(), u'') + self.assertEqual(u'a'.format(), u'a') + self.assertEqual(u'ab'.format(), u'ab') + self.assertEqual(u'a{{'.format(), u'a{') + self.assertEqual(u'a}}'.format(), u'a}') + self.assertEqual(u'{{b'.format(), u'{b') + self.assertEqual(u'}}b'.format(), u'}b') + self.assertEqual(u'a{{b'.format(), u'a{b') + + # examples from the PEP: + import datetime + self.assertEqual(u"My name is {0}".format(u'Fred'), u"My name is Fred") + self.assertEqual(u"My name is {0[name]}".format(dict(name=u'Fred')), + u"My name is Fred") + self.assertEqual(u"My name is {0} :-{{}}".format(u'Fred'), + u"My name is Fred :-{}") + + # datetime.__format__ doesn't work with unicode + #d = datetime.date(2007, 8, 18) + #self.assertEqual("The year is {0.year}".format(d), + # "The year is 2007") + + # classes we'll use for testing + class C: + def __init__(self, x=100): + self._x = x + def __format__(self, spec): + return spec + + class D: + def __init__(self, x): + self.x = x + def __format__(self, spec): + return str(self.x) + + # class with __str__, but no __format__ + class E: + def __init__(self, x): + self.x = x + def __str__(self): + return u'E(' + self.x + u')' + + # class with __repr__, but no __format__ or __str__ + class F: + def __init__(self, x): + self.x = x + def __repr__(self): + return u'F(' + self.x + u')' + + # class with __format__ that forwards to string, for some format_spec's + class G: + def __init__(self, x): + self.x = x + def __str__(self): + return u"string is " + self.x + def __format__(self, format_spec): + if format_spec == 'd': + return u'G(' + self.x + u')' + return object.__format__(self, format_spec) + + # class that returns a bad type from __format__ + class H: + def __format__(self, format_spec): + return 1.0 + + class I(datetime.date): + def __format__(self, format_spec): + return self.strftime(format_spec) + + class J(int): + def __format__(self, format_spec): + return int.__format__(self * 2, format_spec) + + + self.assertEqual(u''.format(), u'') + self.assertEqual(u'abc'.format(), u'abc') + self.assertEqual(u'{0}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:}'.format(u'abc'), u'abc') + self.assertEqual(u'X{0}'.format(u'abc'), u'Xabc') + self.assertEqual(u'{0}X'.format(u'abc'), u'abcX') + self.assertEqual(u'X{0}Y'.format(u'abc'), u'XabcY') + self.assertEqual(u'{1}'.format(1, u'abc'), u'abc') + self.assertEqual(u'X{1}'.format(1, u'abc'), u'Xabc') + self.assertEqual(u'{1}X'.format(1, u'abc'), u'abcX') + self.assertEqual(u'X{1}Y'.format(1, u'abc'), u'XabcY') + self.assertEqual(u'{0}'.format(-15), u'-15') + self.assertEqual(u'{0}{1}'.format(-15, u'abc'), u'-15abc') + self.assertEqual(u'{0}X{1}'.format(-15, u'abc'), u'-15Xabc') + self.assertEqual(u'{{'.format(), u'{') + self.assertEqual(u'}}'.format(), u'}') + self.assertEqual(u'{{}}'.format(), u'{}') + self.assertEqual(u'{{x}}'.format(), u'{x}') + self.assertEqual(u'{{{0}}}'.format(123), u'{123}') + self.assertEqual(u'{{{{0}}}}'.format(), u'{{0}}') + self.assertEqual(u'}}{{'.format(), u'}{') + self.assertEqual(u'}}x{{'.format(), u'}x{') + + # weird field names + self.assertEqual(u"{0[foo-bar]}".format({u'foo-bar':u'baz'}), u'baz') + self.assertEqual(u"{0[foo bar]}".format({u'foo bar':u'baz'}), u'baz') + self.assertEqual(u"{0[ ]}".format({u' ':3}), u'3') + + self.assertEqual(u'{foo._x}'.format(foo=C(20)), u'20') + self.assertEqual(u'{1}{0}'.format(D(10), D(20)), u'2010') + self.assertEqual(u'{0._x.x}'.format(C(D(u'abc'))), u'abc') + self.assertEqual(u'{0[0]}'.format([u'abc', u'def']), u'abc') + self.assertEqual(u'{0[1]}'.format([u'abc', u'def']), u'def') + self.assertEqual(u'{0[1][0]}'.format([u'abc', [u'def']]), u'def') + self.assertEqual(u'{0[1][0].x}'.format(['abc', [D(u'def')]]), u'def') + + # strings + self.assertEqual(u'{0:.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:.3s}'.format(u'ab'), u'ab') + self.assertEqual(u'{0:.3s}'.format(u'abcdef'), u'abc') + self.assertEqual(u'{0:.0s}'.format(u'abcdef'), u'') + self.assertEqual(u'{0:3.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:2.3s}'.format(u'abc'), u'abc') + self.assertEqual(u'{0:2.2s}'.format(u'abc'), u'ab') + self.assertEqual(u'{0:3.2s}'.format(u'abc'), u'ab ') + self.assertEqual(u'{0:x<0s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<5s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<6s}'.format(u'result'), u'result') + self.assertEqual(u'{0:x<7s}'.format(u'result'), u'resultx') + self.assertEqual(u'{0:x<8s}'.format(u'result'), u'resultxx') + self.assertEqual(u'{0: <7s}'.format(u'result'), u'result ') + self.assertEqual(u'{0:<7s}'.format(u'result'), u'result ') + self.assertEqual(u'{0:>7s}'.format(u'result'), u' result') + self.assertEqual(u'{0:>8s}'.format(u'result'), u' result') + self.assertEqual(u'{0:^8s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:^9s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:^10s}'.format(u'result'), u' result ') + self.assertEqual(u'{0:10000}'.format(u'a'), u'a' + u' ' * 9999) + self.assertEqual(u'{0:10000}'.format(u''), u' ' * 10000) + self.assertEqual(u'{0:10000000}'.format(u''), u' ' * 10000000) + + # format specifiers for user defined type + self.assertEqual(u'{0:abc}'.format(C()), u'abc') + + # !r and !s coersions + self.assertEqual(u'{0!s}'.format(u'Hello'), u'Hello') + self.assertEqual(u'{0!s:}'.format(u'Hello'), u'Hello') + self.assertEqual(u'{0!s:15}'.format(u'Hello'), u'Hello ') + self.assertEqual(u'{0!s:15s}'.format(u'Hello'), u'Hello ') + self.assertEqual(u'{0!r}'.format(u'Hello'), u"u'Hello'") + self.assertEqual(u'{0!r:}'.format(u'Hello'), u"u'Hello'") + self.assertEqual(u'{0!r}'.format(F(u'Hello')), u'F(Hello)') + + # test fallback to object.__format__ + self.assertEqual(u'{0}'.format({}), u'{}') + self.assertEqual(u'{0}'.format([]), u'[]') + self.assertEqual(u'{0}'.format([1]), u'[1]') + self.assertEqual(u'{0}'.format(E(u'data')), u'E(data)') + self.assertEqual(u'{0:^10}'.format(E(u'data')), u' E(data) ') + self.assertEqual(u'{0:^10s}'.format(E(u'data')), u' E(data) ') + self.assertEqual(u'{0:d}'.format(G(u'data')), u'G(data)') + self.assertEqual(u'{0:>15s}'.format(G(u'data')), u' string is data') + self.assertEqual(u'{0!s}'.format(G(u'data')), u'string is data') + + self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007, + month=8, + day=27)), + "date: 2007-08-27") + + # test deriving from a builtin type and overriding __format__ + self.assertEqual("{0}".format(J(10)), "20") + + + # string format specifiers + self.assertEqual('{0:}'.format('a'), 'a') + + # computed format specifiers + self.assertEqual("{0:.{1}}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{1}s}".format('hello world', 5), 'hello') + self.assertEqual("{0:.{precision}s}".format('hello world', precision=5), 'hello') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width=10, precision=5), 'hello ') + self.assertEqual("{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), 'hello ') + + # test various errors + self.assertRaises(ValueError, '{'.format) + self.assertRaises(ValueError, '}'.format) + self.assertRaises(ValueError, 'a{'.format) + self.assertRaises(ValueError, 'a}'.format) + self.assertRaises(ValueError, '{a'.format) + self.assertRaises(ValueError, '}a'.format) + self.assertRaises(IndexError, '{0}'.format) + self.assertRaises(IndexError, '{1}'.format, 'abc') + self.assertRaises(KeyError, '{x}'.format) + self.assertRaises(ValueError, "}{".format) + self.assertRaises(ValueError, "{".format) + self.assertRaises(ValueError, "}".format) + self.assertRaises(ValueError, "abc{0:{}".format) + self.assertRaises(ValueError, "{0".format) + self.assertRaises(IndexError, "{0.}".format) + self.assertRaises(ValueError, "{0.}".format, 0) + self.assertRaises(IndexError, "{0[}".format) + self.assertRaises(ValueError, "{0[}".format, []) + self.assertRaises(KeyError, "{0]}".format) + self.assertRaises(ValueError, "{0.[]}".format, 0) + self.assertRaises(ValueError, "{0..foo}".format, 0) + self.assertRaises(ValueError, "{0[0}".format, 0) + self.assertRaises(ValueError, "{0[0:foo}".format, 0) + self.assertRaises(KeyError, "{c]}".format) + self.assertRaises(ValueError, "{{ {{{0}}".format, 0) + self.assertRaises(ValueError, "{0}}".format, 0) + self.assertRaises(KeyError, "{foo}".format, bar=3) + self.assertRaises(ValueError, "{0!x}".format, 3) + self.assertRaises(ValueError, "{0!}".format, 0) + self.assertRaises(ValueError, "{0!rs}".format, 0) + self.assertRaises(ValueError, "{!}".format) + self.assertRaises(ValueError, "{:}".format) + self.assertRaises(ValueError, "{:s}".format) + self.assertRaises(ValueError, "{}".format) + + # can't have a replacement on the field name portion + self.assertRaises(TypeError, '{0[{1}]}'.format, 'abcdefg', 4) + + # exceed maximum recursion depth + self.assertRaises(ValueError, "{0:{1:{2}}}".format, 'abc', 's', '') + self.assertRaises(ValueError, "{0:{1:{2:{3:{4:{5:{6}}}}}}}".format, + 0, 1, 2, 3, 4, 5, 6, 7) + + # string format spec errors + self.assertRaises(ValueError, "{0:-s}".format, '') + self.assertRaises(ValueError, format, "", "-") + self.assertRaises(ValueError, "{0:=s}".format, '') + + # test combining string and unicode + self.assertEqual(u"foo{0}".format('bar'), u'foobar') + # This will try to convert the argument from unicode to str, which + # will succeed + self.assertEqual("foo{0}".format(u'bar'), 'foobar') + # This will try to convert the argument from unicode to str, which + # will fail + self.assertRaises(UnicodeEncodeError, "foo{0}".format, u'\u1000bar') def test_main(): test_support.run_unittest(__name__) Modified: python/branches/trunk-math/Lib/test/test_unpack.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_unpack.py (original) +++ python/branches/trunk-math/Lib/test/test_unpack.py Thu Feb 28 21:09:17 2008 @@ -122,7 +122,6 @@ __test__ = {'doctests' : doctests} def test_main(verbose=False): - import sys from test import test_support from test import test_unpack test_support.run_doctest(test_unpack, verbose) Modified: python/branches/trunk-math/Lib/test/test_urllib.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_urllib.py (original) +++ python/branches/trunk-math/Lib/test/test_urllib.py Thu Feb 28 21:09:17 2008 @@ -8,10 +8,6 @@ import mimetools import tempfile import StringIO -import ftplib -import threading -import socket -import time def hexescape(char): """Escape char as RFC 2396 specifies""" Modified: python/branches/trunk-math/Lib/test/test_urllib2.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_urllib2.py (original) +++ python/branches/trunk-math/Lib/test/test_urllib2.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,7 @@ import unittest from test import test_support -import os, socket +import os import StringIO import urllib2 @@ -589,7 +589,7 @@ self.assertEqual(int(headers["Content-length"]), len(data)) def test_file(self): - import time, rfc822, socket + import rfc822, socket h = urllib2.FileHandler() o = h.parent = MockOpener() @@ -993,7 +993,7 @@ def _test_basic_auth(self, opener, auth_handler, auth_header, realm, http_handler, password_manager, request_url, protected_url): - import base64, httplib + import base64 user, password = "wile", "coyote" # .add_password() fed through to password manager Modified: python/branches/trunk-math/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_urllib2_localnet.py (original) +++ python/branches/trunk-math/Lib/test/test_urllib2_localnet.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ #!/usr/bin/env python -import sys import threading import urlparse import urllib2 Modified: python/branches/trunk-math/Lib/test/test_userdict.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_userdict.py (original) +++ python/branches/trunk-math/Lib/test/test_userdict.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Check every path through every method of UserDict -import unittest from test import test_support, mapping_tests import UserDict Modified: python/branches/trunk-math/Lib/test/test_userlist.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_userlist.py (original) +++ python/branches/trunk-math/Lib/test/test_userlist.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Check every path through every method of UserList from UserList import UserList -import unittest from test import test_support, list_tests class UserListTest(list_tests.CommonTest): Modified: python/branches/trunk-math/Lib/test/test_userstring.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_userstring.py (original) +++ python/branches/trunk-math/Lib/test/test_userstring.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ # UserString is a wrapper around the native builtin string type. # UserString instances should behave similar to builtin string objects. -import unittest import string from test import test_support, string_tests Modified: python/branches/trunk-math/Lib/test/test_uu.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_uu.py (original) +++ python/branches/trunk-math/Lib/test/test_uu.py Thu Feb 28 21:09:17 2008 @@ -8,7 +8,6 @@ import sys, os, uu, cStringIO import uu -from StringIO import StringIO plaintext = "The smooth-scaled python crept over the sleeping dog\n" Modified: python/branches/trunk-math/Lib/test/test_whichdb.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_whichdb.py (original) +++ python/branches/trunk-math/Lib/test/test_whichdb.py Thu Feb 28 21:09:17 2008 @@ -8,7 +8,6 @@ import unittest import whichdb import anydbm -import tempfile import glob _fname = test.test_support.TESTFN Modified: python/branches/trunk-math/Lib/test/test_xml_etree.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_xml_etree.py (original) +++ python/branches/trunk-math/Lib/test/test_xml_etree.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,8 @@ # all included components work as they should. For a more extensive # test suite, see the selftest script in the ElementTree distribution. -import doctest, sys +import doctest +import sys from test import test_support Modified: python/branches/trunk-math/Lib/test/test_xml_etree_c.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_xml_etree_c.py (original) +++ python/branches/trunk-math/Lib/test/test_xml_etree_c.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,7 @@ # xml.etree test for cElementTree -import doctest, sys +import doctest +import sys from test import test_support Modified: python/branches/trunk-math/Lib/test/test_xmlrpc.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_xmlrpc.py (original) +++ python/branches/trunk-math/Lib/test/test_xmlrpc.py Thu Feb 28 21:09:17 2008 @@ -33,10 +33,6 @@ (2005, 02, 10, 11, 41, 23, 0, 1, -1)), 'datetime3': xmlrpclib.DateTime( datetime.datetime(2005, 02, 10, 11, 41, 23)), - 'datetime4': xmlrpclib.DateTime( - datetime.date(2005, 02, 10)), - 'datetime5': xmlrpclib.DateTime( - datetime.time(11, 41, 23)), }] class XMLRPCTestCase(unittest.TestCase): @@ -59,34 +55,14 @@ (newdt,), m = xmlrpclib.loads(s, use_datetime=0) self.assertEquals(newdt, xmlrpclib.DateTime('20050210T11:41:23')) - def test_dump_bare_date(self): - # This checks that an unwrapped datetime.date object can be handled - # by the marshalling code. This can't be done via test_dump_load() - # since the unmarshaller produces a datetime object - d = datetime.datetime(2005, 02, 10, 11, 41, 23).date() - s = xmlrpclib.dumps((d,)) - (newd,), m = xmlrpclib.loads(s, use_datetime=1) - self.assertEquals(newd.date(), d) - self.assertEquals(newd.time(), datetime.time(0, 0, 0)) - self.assertEquals(m, None) - - (newdt,), m = xmlrpclib.loads(s, use_datetime=0) - self.assertEquals(newdt, xmlrpclib.DateTime('20050210T00:00:00')) - - def test_dump_bare_time(self): - # This checks that an unwrapped datetime.time object can be handled - # by the marshalling code. This can't be done via test_dump_load() - # since the unmarshaller produces a datetime object - t = datetime.datetime(2005, 02, 10, 11, 41, 23).time() - s = xmlrpclib.dumps((t,)) - (newt,), m = xmlrpclib.loads(s, use_datetime=1) - today = datetime.datetime.now().date().strftime("%Y%m%d") - self.assertEquals(newt.time(), t) - self.assertEquals(newt.date(), datetime.datetime.now().date()) - self.assertEquals(m, None) - - (newdt,), m = xmlrpclib.loads(s, use_datetime=0) - self.assertEquals(newdt, xmlrpclib.DateTime('%sT11:41:23'%today)) + def test_cmp_datetime_DateTime(self): + now = datetime.datetime.now() + dt = xmlrpclib.DateTime(now.timetuple()) + self.assert_(dt == now) + self.assert_(now == dt) + then = now + datetime.timedelta(seconds=4) + self.assert_(then >= dt) + self.assert_(dt < then) def test_bug_1164912 (self): d = xmlrpclib.DateTime() @@ -242,21 +218,6 @@ t = xmlrpclib.DateTime(d) self.assertEqual(str(t), '20070102T03:04:05') - def test_datetime_date(self): - d = datetime.date(2007,9,8) - t = xmlrpclib.DateTime(d) - self.assertEqual(str(t), '20070908T00:00:00') - - def test_datetime_time(self): - d = datetime.time(13,17,19) - # allow for date rollover by checking today's or tomorrow's dates - dd1 = datetime.datetime.now().date() - dd2 = dd1 + datetime.timedelta(days=1) - vals = (dd1.strftime('%Y%m%dT13:17:19'), - dd2.strftime('%Y%m%dT13:17:19')) - t = xmlrpclib.DateTime(d) - self.assertEqual(str(t) in vals, True) - def test_repr(self): d = datetime.datetime(2007,1,2,3,4,5) t = xmlrpclib.DateTime(d) Modified: python/branches/trunk-math/Lib/test/test_xpickle.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_xpickle.py (original) +++ python/branches/trunk-math/Lib/test/test_xpickle.py Thu Feb 28 21:09:17 2008 @@ -5,7 +5,6 @@ import pickle import cPickle -import unittest from test import test_support from test.pickletester import AbstractPickleTests Modified: python/branches/trunk-math/Lib/test/test_zipfile64.py ============================================================================== --- python/branches/trunk-math/Lib/test/test_zipfile64.py (original) +++ python/branches/trunk-math/Lib/test/test_zipfile64.py Thu Feb 28 21:09:17 2008 @@ -20,7 +20,6 @@ import time import sys -from StringIO import StringIO from tempfile import TemporaryFile from test.test_support import TESTFN, run_unittest Modified: python/branches/trunk-math/Lib/threading.py ============================================================================== --- python/branches/trunk-math/Lib/threading.py (original) +++ python/branches/trunk-math/Lib/threading.py Thu Feb 28 21:09:17 2008 @@ -404,7 +404,7 @@ self.__args = args self.__kwargs = kwargs self.__daemonic = self._set_daemon() - self.__started = False + self.__started = Event() self.__stopped = False self.__block = Condition(Lock()) self.__initialized = True @@ -419,7 +419,7 @@ def __repr__(self): assert self.__initialized, "Thread.__init__() was not called" status = "initial" - if self.__started: + if self.__started.isSet(): status = "started" if self.__stopped: status = "stopped" @@ -430,7 +430,7 @@ def start(self): if not self.__initialized: raise RuntimeError("thread.__init__() not called") - if self.__started: + if self.__started.isSet(): raise RuntimeError("thread already started") if __debug__: self._note("%s.start(): starting thread", self) @@ -438,12 +438,16 @@ _limbo[self] = self _active_limbo_lock.release() _start_new_thread(self.__bootstrap, ()) - self.__started = True - _sleep(0.000001) # 1 usec, to let the thread run (Solaris hack) + self.__started.wait() def run(self): - if self.__target: - self.__target(*self.__args, **self.__kwargs) + try: + if self.__target: + self.__target(*self.__args, **self.__kwargs) + finally: + # Avoid a refcycle if the thread is running a function with + # an argument that has a member that points to the thread. + del self.__target, self.__args, self.__kwargs def __bootstrap(self): # Wrapper around the real bootstrap code that ignores @@ -467,7 +471,7 @@ def __bootstrap_inner(self): try: - self.__started = True + self.__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self del _limbo[self] @@ -576,7 +580,7 @@ def join(self, timeout=None): if not self.__initialized: raise RuntimeError("Thread.__init__() not called") - if not self.__started: + if not self.__started.isSet(): raise RuntimeError("cannot join thread before it is started") if self is currentThread(): raise RuntimeError("cannot join current thread") @@ -616,7 +620,7 @@ def isAlive(self): assert self.__initialized, "Thread.__init__() not called" - return self.__started and not self.__stopped + return self.__started.isSet() and not self.__stopped def isDaemon(self): assert self.__initialized, "Thread.__init__() not called" @@ -625,7 +629,7 @@ def setDaemon(self, daemonic): if not self.__initialized: raise RuntimeError("Thread.__init__() not called") - if self.__started: + if self.__started.isSet(): raise RuntimeError("cannot set daemon status of active thread"); self.__daemonic = daemonic @@ -667,7 +671,7 @@ def __init__(self): Thread.__init__(self, name="MainThread") - self._Thread__started = True + self._Thread__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self _active_limbo_lock.release() @@ -713,7 +717,7 @@ # instance is immortal, that's bad, so release this resource. del self._Thread__block - self._Thread__started = True + self._Thread__started.set() _active_limbo_lock.acquire() _active[_get_ident()] = self _active_limbo_lock.release() Modified: python/branches/trunk-math/Lib/token.py ============================================================================== --- python/branches/trunk-math/Lib/token.py (original) +++ python/branches/trunk-math/Lib/token.py Thu Feb 28 21:09:17 2008 @@ -71,6 +71,7 @@ for _name, _value in globals().items(): if type(_value) is type(0): tok_name[_value] = _name +del _name, _value def ISTERMINAL(x): Modified: python/branches/trunk-math/Lib/trace.py ============================================================================== --- python/branches/trunk-math/Lib/trace.py (original) +++ python/branches/trunk-math/Lib/trace.py Thu Feb 28 21:09:17 2008 @@ -53,6 +53,7 @@ import re import sys import threading +import time import token import tokenize import types @@ -98,6 +99,8 @@ with '>>>>>> '. -s, --summary Write a brief summary on stdout for each file. (Can only be used with --count or --report.) +-g, --timing Prefix each line with the time since the program started. + Only used while tracing. Filters, may be repeated multiple times: --ignore-module= Ignore the given module(s) and its submodules @@ -435,7 +438,8 @@ class Trace: def __init__(self, count=1, trace=1, countfuncs=0, countcallers=0, - ignoremods=(), ignoredirs=(), infile=None, outfile=None): + ignoremods=(), ignoredirs=(), infile=None, outfile=None, + timing=False): """ @param count true iff it should count number of times each line is executed @@ -451,6 +455,7 @@ @param infile file from which to read stored counts to be added into the results @param outfile file in which to write the results + @param timing true iff timing information be displayed """ self.infile = infile self.outfile = outfile @@ -463,6 +468,9 @@ self._calledfuncs = {} self._callers = {} self._caller_cache = {} + self.start_time = None + if timing: + self.start_time = time.time() if countcallers: self.globaltrace = self.globaltrace_trackcallers elif countfuncs: @@ -613,6 +621,8 @@ key = filename, lineno self.counts[key] = self.counts.get(key, 0) + 1 + if self.start_time: + print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), @@ -624,6 +634,8 @@ filename = frame.f_code.co_filename lineno = frame.f_lineno + if self.start_time: + print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), @@ -653,13 +665,13 @@ if argv is None: argv = sys.argv try: - opts, prog_argv = getopt.getopt(argv[1:], "tcrRf:d:msC:lT", + opts, prog_argv = getopt.getopt(argv[1:], "tcrRf:d:msC:lTg", ["help", "version", "trace", "count", "report", "no-report", "summary", "file=", "missing", "ignore-module=", "ignore-dir=", "coverdir=", "listfuncs", - "trackcalls"]) + "trackcalls", "timing"]) except getopt.error, msg: sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) @@ -679,6 +691,7 @@ summary = 0 listfuncs = False countcallers = False + timing = False for opt, val in opts: if opt == "--help": @@ -697,6 +710,10 @@ listfuncs = True continue + if opt == "-g" or opt == "--timing": + timing = True + continue + if opt == "-t" or opt == "--trace": trace = 1 continue @@ -779,7 +796,7 @@ t = Trace(count, trace, countfuncs=listfuncs, countcallers=countcallers, ignoremods=ignore_modules, ignoredirs=ignore_dirs, infile=counts_file, - outfile=counts_file) + outfile=counts_file, timing=timing) try: t.run('execfile(%r)' % (progname,)) except IOError, err: Modified: python/branches/trunk-math/Lib/xml/dom/minidom.py ============================================================================== --- python/branches/trunk-math/Lib/xml/dom/minidom.py (original) +++ python/branches/trunk-math/Lib/xml/dom/minidom.py Thu Feb 28 21:09:17 2008 @@ -203,6 +203,8 @@ L.append(child) if child.nodeType == Node.ELEMENT_NODE: child.normalize() + if L: + L[-1].nextSibling = None self.childNodes[:] = L def cloneNode(self, deep): Modified: python/branches/trunk-math/Lib/xmlrpclib.py ============================================================================== --- python/branches/trunk-math/Lib/xmlrpclib.py (original) +++ python/branches/trunk-math/Lib/xmlrpclib.py Thu Feb 28 21:09:17 2008 @@ -357,13 +357,6 @@ if datetime and isinstance(value, datetime.datetime): self.value = value.strftime("%Y%m%dT%H:%M:%S") return - if datetime and isinstance(value, datetime.date): - self.value = value.strftime("%Y%m%dT%H:%M:%S") - return - if datetime and isinstance(value, datetime.time): - today = datetime.datetime.now().strftime("%Y%m%d") - self.value = value.strftime(today+"T%H:%M:%S") - return if not isinstance(value, (TupleType, time.struct_time)): if value == 0: value = time.time() @@ -371,10 +364,57 @@ value = time.strftime("%Y%m%dT%H:%M:%S", value) self.value = value - def __cmp__(self, other): + def make_comparable(self, other): if isinstance(other, DateTime): - other = other.value - return cmp(self.value, other) + s = self.value + o = other.value + elif datetime and isinstance(other, datetime.datetime): + s = self.value + o = other.strftime("%Y%m%dT%H:%M:%S") + elif isinstance(other, (str, unicode)): + s = self.value + o = other + elif hasattr(other, "timetuple"): + s = self.timetuple() + o = other.timetuple() + else: + otype = (hasattr(other, "__class__") + and other.__class__.__name__ + or type(other)) + raise TypeError("Can't compare %s and %s" % + (self.__class__.__name__, otype)) + return s, o + + def __lt__(self, other): + s, o = self.make_comparable(other) + return s < o + + def __le__(self, other): + s, o = self.make_comparable(other) + return s <= o + + def __gt__(self, other): + s, o = self.make_comparable(other) + return s > o + + def __ge__(self, other): + s, o = self.make_comparable(other) + return s >= o + + def __eq__(self, other): + s, o = self.make_comparable(other) + return s == o + + def __ne__(self, other): + s, o = self.make_comparable(other) + return s != o + + def timetuple(self): + return time.strptime(self.value, "%Y%m%dT%H:%M:%S") + + def __cmp__(self, other): + s, o = self.make_comparable(other) + return cmp(s, o) ## # Get date/time value. @@ -736,19 +776,6 @@ write("\n") dispatch[datetime.datetime] = dump_datetime - def dump_date(self, value, write): - write("") - write(value.strftime("%Y%m%dT00:00:00")) - write("\n") - dispatch[datetime.date] = dump_date - - def dump_time(self, value, write): - write("") - write(datetime.datetime.now().date().strftime("%Y%m%dT")) - write(value.strftime("%H:%M:%S")) - write("\n") - dispatch[datetime.time] = dump_time - def dump_instance(self, value, write): # check for special wrappers if value.__class__ in WRAPPERS: Modified: python/branches/trunk-math/Mac/Demo/PICTbrowse/ICONbrowse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/PICTbrowse/ICONbrowse.py (original) +++ python/branches/trunk-math/Mac/Demo/PICTbrowse/ICONbrowse.py Thu Feb 28 21:09:17 2008 @@ -7,8 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys -import struct from Carbon import Icn import macresource Modified: python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse.py (original) +++ python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys import struct import macresource Modified: python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse2.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse2.py (original) +++ python/branches/trunk-math/Mac/Demo/PICTbrowse/PICTbrowse2.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys import struct import macresource Modified: python/branches/trunk-math/Mac/Demo/PICTbrowse/cicnbrowse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/PICTbrowse/cicnbrowse.py (original) +++ python/branches/trunk-math/Mac/Demo/PICTbrowse/cicnbrowse.py Thu Feb 28 21:09:17 2008 @@ -7,8 +7,6 @@ from Carbon import Win from Carbon import Controls from Carbon import List -import sys -import struct from Carbon import Icn import macresource Modified: python/branches/trunk-math/Mac/Demo/PICTbrowse/oldPICTbrowse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/PICTbrowse/oldPICTbrowse.py (original) +++ python/branches/trunk-math/Mac/Demo/PICTbrowse/oldPICTbrowse.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,6 @@ from Carbon import Qd from Carbon import Win from Carbon import List -import sys import struct import macresource Modified: python/branches/trunk-math/Mac/Demo/example1/dnslookup-1.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/example1/dnslookup-1.py (original) +++ python/branches/trunk-math/Mac/Demo/example1/dnslookup-1.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,6 @@ import EasyDialogs from Carbon import Res from Carbon import Dlg -import sys import socket import string import macresource Modified: python/branches/trunk-math/Mac/Demo/example2/dnslookup-2.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/example2/dnslookup-2.py (original) +++ python/branches/trunk-math/Mac/Demo/example2/dnslookup-2.py Thu Feb 28 21:09:17 2008 @@ -2,7 +2,6 @@ import EasyDialogs from Carbon import Res from Carbon import Dlg -import sys import socket import string import macresource Modified: python/branches/trunk-math/Mac/Demo/imgbrowse/imgbrowse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/imgbrowse/imgbrowse.py (original) +++ python/branches/trunk-math/Mac/Demo/imgbrowse/imgbrowse.py Thu Feb 28 21:09:17 2008 @@ -7,11 +7,9 @@ from Carbon import QuickDraw from Carbon import Win #ifrom Carbon mport List -import sys import struct import img import imgformat -import struct import mac_image Modified: python/branches/trunk-math/Mac/Demo/imgbrowse/mac_image.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/imgbrowse/mac_image.py (original) +++ python/branches/trunk-math/Mac/Demo/imgbrowse/mac_image.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ """mac_image - Helper routines (hacks) for images""" import imgformat from Carbon import Qd -import time import struct import MacOS Modified: python/branches/trunk-math/Mac/Demo/sound/morse.py ============================================================================== --- python/branches/trunk-math/Mac/Demo/sound/morse.py (original) +++ python/branches/trunk-math/Mac/Demo/sound/morse.py Thu Feb 28 21:09:17 2008 @@ -1,4 +1,4 @@ -import sys, math, audiodev +import sys, math DOT = 30 DAH = 80 Modified: python/branches/trunk-math/Mac/Modules/ae/aescan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/ae/aescan.py (original) +++ python/branches/trunk-math/Mac/Modules/ae/aescan.py Thu Feb 28 21:09:17 2008 @@ -3,8 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os -import string import MacOS from bgenlocations import TOOLBOXDIR, BGENDIR Modified: python/branches/trunk-math/Mac/Modules/ah/ahscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/ah/ahscan.py (original) +++ python/branches/trunk-math/Mac/Modules/ah/ahscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/app/appscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/app/appscan.py (original) +++ python/branches/trunk-math/Mac/Modules/app/appscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/carbonevt/CarbonEvtscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/carbonevt/CarbonEvtscan.py (original) +++ python/branches/trunk-math/Mac/Modules/carbonevt/CarbonEvtscan.py Thu Feb 28 21:09:17 2008 @@ -1,8 +1,6 @@ # IBCarbonscan.py import sys -import os -import string import MacOS import sys Modified: python/branches/trunk-math/Mac/Modules/cf/cfscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/cf/cfscan.py (original) +++ python/branches/trunk-math/Mac/Modules/cf/cfscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/cg/cgscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/cg/cgscan.py (original) +++ python/branches/trunk-math/Mac/Modules/cg/cgscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/cm/cmscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/cm/cmscan.py (original) +++ python/branches/trunk-math/Mac/Modules/cm/cmscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/ctl/ctlscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/ctl/ctlscan.py (original) +++ python/branches/trunk-math/Mac/Modules/ctl/ctlscan.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Scan , generating ctlgen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/dlg/dlgscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/dlg/dlgscan.py (original) +++ python/branches/trunk-math/Mac/Modules/dlg/dlgscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/drag/dragscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/drag/dragscan.py (original) +++ python/branches/trunk-math/Mac/Modules/drag/dragscan.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Scan , generating draggen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/evt/evtscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/evt/evtscan.py (original) +++ python/branches/trunk-math/Mac/Modules/evt/evtscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/file/filescan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/file/filescan.py (original) +++ python/branches/trunk-math/Mac/Modules/file/filescan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/fm/fmscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/fm/fmscan.py (original) +++ python/branches/trunk-math/Mac/Modules/fm/fmscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/folder/folderscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/folder/folderscan.py (original) +++ python/branches/trunk-math/Mac/Modules/folder/folderscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/help/helpscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/help/helpscan.py (original) +++ python/branches/trunk-math/Mac/Modules/help/helpscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/ibcarbon/IBCarbonscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/ibcarbon/IBCarbonscan.py (original) +++ python/branches/trunk-math/Mac/Modules/ibcarbon/IBCarbonscan.py Thu Feb 28 21:09:17 2008 @@ -1,8 +1,6 @@ # IBCarbonscan.py import sys -import os -import string from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/icn/icnscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/icn/icnscan.py (original) +++ python/branches/trunk-math/Mac/Modules/icn/icnscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/launch/launchscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/launch/launchscan.py (original) +++ python/branches/trunk-math/Mac/Modules/launch/launchscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/list/listscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/list/listscan.py (original) +++ python/branches/trunk-math/Mac/Modules/list/listscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/menu/menuscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/menu/menuscan.py (original) +++ python/branches/trunk-math/Mac/Modules/menu/menuscan.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Scan , generating menugen.py. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/mlte/mltescan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/mlte/mltescan.py (original) +++ python/branches/trunk-math/Mac/Modules/mlte/mltescan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner_OSX Modified: python/branches/trunk-math/Mac/Modules/osa/osascan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/osa/osascan.py (original) +++ python/branches/trunk-math/Mac/Modules/osa/osascan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/qd/qdscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/qd/qdscan.py (original) +++ python/branches/trunk-math/Mac/Modules/qd/qdscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/qdoffs/qdoffsscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/qdoffs/qdoffsscan.py (original) +++ python/branches/trunk-math/Mac/Modules/qdoffs/qdoffsscan.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/qt/qtscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/qt/qtscan.py (original) +++ python/branches/trunk-math/Mac/Modules/qt/qtscan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/res/resscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/res/resscan.py (original) +++ python/branches/trunk-math/Mac/Modules/res/resscan.py Thu Feb 28 21:09:17 2008 @@ -3,8 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os -import string import MacOS from bgenlocations import TOOLBOXDIR, BGENDIR Modified: python/branches/trunk-math/Mac/Modules/scrap/scrapscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/scrap/scrapscan.py (original) +++ python/branches/trunk-math/Mac/Modules/scrap/scrapscan.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,6 @@ # generates a boilerplate to be edited by hand. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/snd/sndscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/snd/sndscan.py (original) +++ python/branches/trunk-math/Mac/Modules/snd/sndscan.py Thu Feb 28 21:09:17 2008 @@ -3,7 +3,6 @@ # (Should learn how to tell the compiler to compile it as well.) import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Mac/Modules/te/tescan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/te/tescan.py (original) +++ python/branches/trunk-math/Mac/Modules/te/tescan.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) from scantools import Scanner Modified: python/branches/trunk-math/Mac/Modules/win/winscan.py ============================================================================== --- python/branches/trunk-math/Mac/Modules/win/winscan.py (original) +++ python/branches/trunk-math/Mac/Modules/win/winscan.py Thu Feb 28 21:09:17 2008 @@ -1,6 +1,5 @@ # Scan an Apple header file, generating a Python file of generator calls. import sys -import os from bgenlocations import TOOLBOXDIR, BGENDIR sys.path.append(BGENDIR) Modified: python/branches/trunk-math/Makefile.pre.in ============================================================================== --- python/branches/trunk-math/Makefile.pre.in (original) +++ python/branches/trunk-math/Makefile.pre.in Thu Feb 28 21:09:17 2008 @@ -282,6 +282,8 @@ Python/getopt.o \ Python/pystrcmp.o \ Python/pystrtod.o \ + Python/formatter_unicode.o \ + Python/formatter_string.o \ Python/$(DYNLOADFILE) \ $(LIBOBJS) \ $(MACHDEP_OBJS) \ @@ -516,6 +518,28 @@ Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h +STRINGLIB_HEADERS= \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/formatter.h \ + $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/stringdefs.h \ + $(srcdir)/Objects/stringlib/string_format.h \ + $(srcdir)/Objects/stringlib/unicodedefs.h + +Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c \ + $(STRINGLIB_HEADERS) + +Objects/stringobject.o: $(srcdir)/Objects/stringobject.c \ + $(STRINGLIB_HEADERS) + +Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \ + $(STRINGLIB_HEADERS) + +Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \ + $(STRINGLIB_HEADERS) + ############################################################################ # Header files Modified: python/branches/trunk-math/Misc/ACKS ============================================================================== --- python/branches/trunk-math/Misc/ACKS (original) +++ python/branches/trunk-math/Misc/ACKS Thu Feb 28 21:09:17 2008 @@ -274,6 +274,7 @@ Rycharde Hawkes Jochen Hayek Thomas Heller +Malte Helmert Lance Finn Helsten Jonathan Hendry James Henstridge @@ -704,6 +705,7 @@ Cliff Wells Rickard Westman Jeff Wheeler +Christopher White Mats Wichmann Truida Wiedijk Felix Wiemann Modified: python/branches/trunk-math/Misc/BeOS-setup.py ============================================================================== --- python/branches/trunk-math/Misc/BeOS-setup.py (original) +++ python/branches/trunk-math/Misc/BeOS-setup.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,7 @@ __version__ = "special BeOS after 1.37" -import sys, os, getopt +import sys, os from distutils import sysconfig from distutils import text_file from distutils.errors import * Modified: python/branches/trunk-math/Misc/HISTORY ============================================================================== --- python/branches/trunk-math/Misc/HISTORY (original) +++ python/branches/trunk-math/Misc/HISTORY Thu Feb 28 21:09:17 2008 @@ -3,11 +3,2150 @@ This file contains the release messages for previous Python releases. As you read on you go back to the dark ages of Python's history. +(Note: news about 2.5c2 and later 2.5 releases is in the Misc/NEWS +file of the release25-maint branch.) ====================================================================== +What's New in Python 2.5 release candidate 1? +============================================= + +*Release date: 17-AUG-2006* + +Core and builtins +----------------- + +- Unicode objects will no longer raise an exception when being + compared equal or unequal to a string and a UnicodeDecodeError + exception occurs, e.g. as result of a decoding failure. + + Instead, the equal (==) and unequal (!=) comparison operators will + now issue a UnicodeWarning and interpret the two objects as + unequal. The UnicodeWarning can be filtered as desired using + the warning framework, e.g. silenced completely, turned into an + exception, logged, etc. + + Note that compare operators other than equal and unequal will still + raise UnicodeDecodeError exceptions as they've always done. + +- Fix segfault when doing string formatting on subclasses of long. + +- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines + with new-style classes. + +- Fix bug related to __len__ functions returning negative values with + classic classes. + +- Patch #1538606, Fix __index__() clipping. There were some problems + discovered with the API and how integers that didn't fit into Py_ssize_t + were handled. This patch attempts to provide enough alternatives + to effectively use __index__. + +- Bug #1536021: __hash__ may now return long int; the final hash + value is obtained by invoking hash on the long int. + +- Bug #1536786: buffer comparison could emit a RuntimeWarning. + +- Bug #1535165: fixed a segfault in input() and raw_input() when + sys.stdin is closed. + +- On Windows, the PyErr_Warn function is now exported from + the Python dll again. + +- Bug #1191458: tracing over for loops now produces a line event + on each iteration. Fixing this problem required changing the .pyc + magic number. This means that .pyc files generated before 2.5c1 + will be regenerated. + +- Bug #1333982: string/number constants were inappropriately stored + in the byte code and co_consts even if they were not used, ie + immediately popped off the stack. + +- Fixed a reference-counting problem in property(). + + +Library +------- + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for generator expressions. + +- The distutils version has been changed to 2.5.0. The change to + keep it programmatically in sync with the Python version running + the code (introduced in 2.5b3) has been reverted. It will continue + to be maintained manually as static string literal. + +- If the Python part of a ctypes callback function returns None, + and this cannot be converted to the required C type, an exception is + printed with PyErr_WriteUnraisable. Before this change, the C + callback returned arbitrary values to the calling code. + +- The __repr__ method of a NULL ctypes.py_object() no longer raises + an exception. + +- uuid.UUID now has a bytes_le attribute. This returns the UUID in + little-endian byte order for Windows. In addition, uuid.py gained some + workarounds for clocks with low resolution, to stop the code yielding + duplicate UUIDs. + +- Patch #1540892: site.py Quitter() class attempts to close sys.stdin + before raising SystemExit, allowing IDLE to honor quit() and exit(). + +- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. + +- Patch #1536071: trace.py should now find the full module name of a + file correctly even on Windows. + +- logging's atexit hook now runs even if the rest of the module has + already been cleaned up. + +- Bug #1112549, fix DoS attack on cgi.FieldStorage. + +- Bug #1531405, format_exception no longer raises an exception if + str(exception) raised an exception. + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for nested functions. + + +Extension Modules +----------------- + +- Patch #1511317: don't crash on invalid hostname (alias) info. + +- Patch #1535500: fix segfault in BZ2File.writelines and make sure it + raises the correct exceptions. + +- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The + '-no-stack-protector' compiler flag for OpenBSD has been removed. + +- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now + uses the _as_parameter_ attribute when objects are passed to foreign + function calls. The ctypes version number was changed to 1.0.1. + +- Bug #1530559, struct.pack raises TypeError where it used to convert. + Passing float arguments to struct.pack when integers are expected + now triggers a DeprecationWarning. + + +Tests +----- + +- test_socketserver should now work on cygwin and not fail sporadically + on other platforms. + +- test_mailbox should now work on cygwin versions 2006-08-10 and later. + +- Bug #1535182: really test the xreadlines() method of bz2 objects. + +- test_threading now skips testing alternate thread stack sizes on + platforms that don't support changing thread stack size. + + +Documentation +------------- + +- Patch #1534922: unittest docs were corrected and enhanced. + + +Build +----- + +- Bug #1535502, build _hashlib on Windows, and use masm assembler + code in OpenSSL. + +- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. + +- Bug #1530448, ctypes build failure on Solaris 10 was fixed. + + +C API +----- + +- New API for Unicode rich comparisons: PyUnicode_RichCompare() + +- Bug #1069160. Internal correctness changes were made to + ``PyThreadState_SetAsyncExc()``. A test case was added, and + the documentation was changed to state that the return value + is always 1 (normal) or 0 (if the specified thread wasn't found). + + +What's New in Python 2.5 beta 3? +================================ + +*Release date: 03-AUG-2006* + +Core and builtins +----------------- + +- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously + returned a long (see PEP 353). + +- Bug #1515471: string.replace() accepts character buffers again. + +- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). + This provides the proper warning for struct.pack(). + PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). + +- Patch #1531113: Fix augmented assignment with yield expressions. + Also fix a SystemError when trying to assign to yield expressions. + +- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance + with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is + used in ``sys.path_importer_cache`` to cache non-directory paths and avoid + excessive filesystem operations during imports. + +- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some + operations on signed longs that are formally undefined by C. + Unfortunately, at least one compiler now cares about that, so complicated + the code to make that compiler happy again. + +- Bug #1524310: Properly report errors from FindNextFile in os.listdir. + +- Patch #1232023: Stop including current directory in search + path on Windows. + +- Fix some potential crashes found with failmalloc. + +- Fix warnings reported by Klocwork's static analysis tool. + +- Bug #1512814, Fix incorrect lineno's when code within a function + had more than 255 blank lines. + +- Patch #1521179: Python now accepts the standard options ``--help`` and + ``--version`` as well as ``/?`` on Windows. + +- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works + again. Fixing this problem required changing the .pyc magic number. + This means that .pyc files generated before 2.5b3 will be regenerated. + +- Bug #1524317: Compiling Python ``--without-threads`` failed. + The Python core compiles again, and, in a build without threads, the + new ``sys._current_frames()`` returns a dictionary with one entry, + mapping the faux "thread id" 0 to the current frame. + +- Bug #1525447: build on MacOS X on a case-sensitive filesystem. + + +Library +------- + +- Fix #1693149. Now you can pass several modules separated by + comma to trace.py in the same --ignore-module option. + +- Correction of patch #1455898: In the mbcs decoder, set final=False + for stream decoder, but final=True for the decode function. + +- os.urandom no longer masks unrelated exceptions like SystemExit or + KeyboardInterrupt. + +- Bug #1525866: Don't copy directory stat times in + shutil.copytree on Windows + +- Bug #1002398: The documentation for os.path.sameopenfile now correctly + refers to file descriptors, not file objects. + +- The renaming of the xml package to xmlcore, and the import hackery done + to make it appear at both names, has been removed. Bug #1511497, + #1513611, and probably others. + +- Bug #1441397: The compiler module now recognizes module and function + docstrings correctly as it did in Python 2.4. + +- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally + lost that tests are sorted by name before being run. This rarely + matters for well-written tests, but can create baffling symptoms if + side effects from one test to the next affect outcomes. ``DocTestFinder`` + has been changed to sort the list of tests it returns. + +- The distutils version has been changed to 2.5.0, and is now kept + in sync with sys.version_info[:3]. + +- Bug #978833: Really close underlying socket in _socketobject.close. + +- Bug #1459963: urllib and urllib2 now normalize HTTP header names with + title(). + +- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback + to recursive calls and call it with the failing package name. + +- Bug #1525817: Don't truncate short lines in IDLE's tool tips. + +- Patch #1515343: Fix printing of deprecated string exceptions with a + value in the traceback module. + +- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. + +- Patch #1524429: Use repr() instead of backticks in Tkinter again. + +- Bug #1520914: Change time.strftime() to accept a zero for any position in its + argument tuple. For arguments where zero is illegal, the value is forced to + the minimum value that is correct. This is to support an undocumented but + common way people used to fill in inconsequential information in the time + tuple pre-2.4. + +- Patch #1220874: Update the binhex module for Mach-O. + +- The email package has improved RFC 2231 support, specifically for + recognizing the difference between encoded (name*0*=) and non-encoded + (name*0=) parameter continuations. This may change the types of + values returned from email.message.Message.get_param() and friends. + Specifically in some cases where non-encoded continuations were used, + get_param() used to return a 3-tuple of (None, None, string) whereas now it + will just return the string (since non-encoded continuations don't have + charset and language parts). + + Also, whereas % values were decoded in all parameter continuations, they are + now only decoded in encoded parameter parts. + +- Bug #1517990: IDLE keybindings on MacOS X now work correctly + +- Bug #1517996: IDLE now longer shows the default Tk menu when a + path browser, class browser or debugger is the frontmost window on MacOS X + +- Patch #1520294: Support for getset and member descriptors in types.py, + inspect.py, and pydoc.py. Specifically, this allows for querying the type + of an object against these built-in types and more importantly, for getting + their docstrings printed in the interactive interpreter's help() function. + + +Extension Modules +----------------- + +- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during + a socket operation on a socket with a timeout, the exception will be + caught correctly. Previously, the exception was not caught. + +- Patch #1529514: The _ctypes extension is now compiled on more + openbsd target platforms. + +- The ``__reduce__()`` method of the new ``collections.defaultdict`` had + a memory leak, affecting pickles and deep copies. + +- Bug #1471938: Fix curses module build problem on Solaris 8; patch by + Paul Eggert. + +- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. + +- Patch #1521817: Index range checking on ctypes arrays containing + exactly one element enabled again. This allows iterating over these + arrays, without the need to check the array size before. + +- Bug #1521375: When the code in ctypes.util.find_library was + run with root privileges, it could overwrite or delete + /dev/null in certain cases; this is now fixed. + +- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the + default mode for loading shared libraries in ctypes. + +- Because of a misspelled preprocessor symbol, ctypes was always + compiled without thread support; this is now fixed. + +- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename + methods now allow their database parameter to be None as the + sleepycat API allows. + +- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different + bluetooth API compared with Linux and FreeBSD. + +Tests +----- + +- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of + how long the test file should take to play. Now accepts taking 2.93 secs + (exact time) +/- 10% instead of the hard-coded 3.1 sec. + +- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, + ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when + run via ``regrtest.py``. Now they do. + +Build +----- + +- Bug #1439538: Drop usage of test -e in configure as it is not portable. + +Mac +--- + +- PythonLauncher now works correctly when the path to the script contains + characters that are treated specially by the shell (such as quotes). + +- Bug #1527397: PythonLauncher now launches scripts with the working directory + set to the directory that contains the script instead of the user home + directory. That latter was an implementation accident and not what users + expect. + + +What's New in Python 2.5 beta 2? +================================ + +*Release date: 11-JUL-2006* + +Core and builtins +----------------- + +- Bug #1441486: The literal representation of -(sys.maxint - 1) + again evaluates to a int object, not a long. + +- Bug #1501934: The scope of global variables that are locally assigned + using augmented assignment is now correctly determined. + +- Bug #927248: Recursive method-wrapper objects can now safely + be released. + +- Bug #1417699: Reject locale-specific decimal point in float() + and atof(). + +- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to + omit a default "error" argument for NULL pointer. This allows + the parser to take a codec from cjkcodecs again. + +- Bug #1519018: 'as' is now validated properly in import statements. + +- On 64 bit systems, int literals that use less than 64 bits are + now ints rather than longs. + +- Bug #1512814, Fix incorrect lineno's when code at module scope + started after line 256. + +- New function ``sys._current_frames()`` returns a dict mapping thread + id to topmost thread stack frame. This is for expert use, and is + especially useful for debugging application deadlocks. The functionality + was previously available in Fazal Majid's ``threadframe`` extension + module, but it wasn't possible to do this in a wholly threadsafe way from + an extension. + +Library +------- + +- Bug #1257728: Mention Cygwin in distutils error message about a missing + VS 2003. + +- Patch #1519566: Update turtle demo, make begin_fill idempotent. + +- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK + environment variable to be set in order to the SDK environment + for finding the compiler, include files, etc. + +- Bug #1515998: Properly generate logical ids for files in bdist_msi. + +- warnings.py now ignores ImportWarning by default + +- string.Template() now correctly handles tuple-values. Previously, + multi-value tuples would raise an exception and single-value tuples would + be treated as the value they contain, instead. + +- Bug #822974: Honor timeout in telnetlib.{expect,read_until} + even if some data are received. + +- Bug #1267547: Put proper recursive setup.py call into the + spec file generated by bdist_rpm. + +- Bug #1514693: Update turtle's heading when switching between + degrees and radians. + +- Reimplement turtle.circle using a polyline, to allow correct + filling of arcs. + +- Bug #1514703: Only setup canvas window in turtle when the canvas + is created. + +- Bug #1513223: .close() of a _socketobj now releases the underlying + socket again, which then gets closed as it becomes unreferenced. + +- Bug #1504333: Make sgmllib support angle brackets in quoted + attribute values. + +- Bug #853506: Fix IPv6 address parsing in unquoted attributes in + sgmllib ('[' and ']' were not accepted). + +- Fix a bug in the turtle module's end_fill function. + +- Bug #1510580: The 'warnings' module improperly required that a Warning + category be either a types.ClassType and a subclass of Warning. The proper + check is just that it is a subclass with Warning as the documentation states. + +- The compiler module now correctly compiles the new try-except-finally + statement (bug #1509132). + +- The wsgiref package is now installed properly on Unix. + +- A bug was fixed in logging.config.fileConfig() which caused a crash on + shutdown when fileConfig() was called multiple times. + +- The sqlite3 module did cut off data from the SQLite database at the first + null character before sending it to a custom converter. This has been fixed + now. + +Extension Modules +----------------- + +- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This + means that select() on sockets > FD_SETSIZE (typically 1024) work again. + The patch makes sockets use poll() internally where available. + +- Assigning None to pointer type fields in ctypes structures possible + overwrote the wrong fields, this is fixed now. + +- Fixed a segfault in _ctypes when ctypes.wintypes were imported + on non-Windows platforms. + +- Bug #1518190: The ctypes.c_void_p constructor now accepts any + integer or long, without range checking. + +- Patch #1517790: It is now possible to use custom objects in the ctypes + foreign function argtypes sequence as long as they provide a from_param + method, no longer is it required that the object is a ctypes type. + +- The '_ctypes' extension module now works when Python is configured + with the --without-threads option. + +- Bug #1513646: os.access on Windows now correctly determines write + access, again. + +- Bug #1512695: cPickle.loads could crash if it was interrupted with + a KeyboardInterrupt. + +- Bug #1296433: parsing XML with a non-default encoding and + a CharacterDataHandler could crash the interpreter in pyexpat. + +- Patch #1516912: improve Modules support for OpenVMS. + +Build +----- + +- Automate Windows build process for the Win64 SSL module. + +- 'configure' now detects the zlib library the same way as distutils. + Previously, the slight difference could cause compilation errors of the + 'zlib' module on systems with more than one version of zlib. + +- The MSI compileall step was fixed to also support a TARGETDIR + with spaces in it. + +- Bug #1517388: sqlite3.dll is now installed on Windows independent + of Tcl/Tk. + +- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old + trying to be installed even though it's empty. + +Tests +----- + +- Call os.waitpid() at the end of tests that spawn child processes in order + to minimize resources (zombies). + +Documentation +------------- + +- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the + documentation for the warnings module. + +- Patch #1509163: MS Toolkit Compiler no longer available. + +- Patch #1504046: Add documentation for xml.etree. + + +What's New in Python 2.5 beta 1? +================================ + +*Release date: 20-JUN-2006* + +Core and builtins +----------------- + +- Patch #1507676: Error messages returned by invalid abstract object operations + (such as iterating over an integer) have been improved and now include the + type of the offending object to help with debugging. + +- Bug #992017: A classic class that defined a __coerce__() method that returned + its arguments swapped would infinitely recurse and segfault the interpreter. + +- Fix the socket tests so they can be run concurrently. + +- Removed 5 integers from C frame objects (PyFrameObject). + f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. + +- Bug #532646: object.__call__() will continue looking for the __call__ + attribute on objects until one without one is found. This leads to recursion + when you take a class and set its __call__ attribute to an instance of the + class. Originally fixed for classic classes, but this fix is for new-style. + Removes the infinite_rec_3 crasher. + +- The string and unicode methods startswith() and endswith() now accept + a tuple of prefixes/suffixes to look for. Implements RFE #1491485. + +- Buffer objects, at the C level, never used the char buffer + implementation even when the char buffer for the wrapped object was + explicitly requested (originally returned the read or write buffer). + Now a TypeError is raised if the char buffer is not present but is + requested. + +- Patch #1346214: Statements like "if 0: suite" are now again optimized + away like they were in Python 2.4. + +- Builtin exceptions are now full-blown new-style classes instead of + instances pretending to be classes, which speeds up exception handling + by about 80% in comparison to 2.5a2. + +- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to + Unicode 4.1. + +- Patch #921466: sys.path_importer_cache is now used to cache valid and + invalid file paths for the built-in import machinery which leads to + fewer open calls on startup. + +- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- + of-2 bases. The largest speedup is for inputs with about 1000 decimal + digits. Conversion from non-power-of-2 bases remains quadratic-time in + the number of input digits (it was and remains linear-time for bases + 2, 4, 8, 16 and 32). + +- Bug #1334662: ``int(string, base)`` could deliver a wrong answer + when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented + an integer close to ``sys.maxint``. This was repaired by patch + #1335972, which also gives a nice speedup. + +- Patch #1337051: reduced size of frame objects. + +- PyErr_NewException now accepts a tuple of base classes as its + "base" parameter. + +- Patch #876206: function call speedup by retaining allocated frame + objects. + +- Bug #1462152: file() now checks more thoroughly for invalid mode + strings and removes a possible "U" before passing the mode to the + C library function. + +- Patch #1488312, Fix memory alignment problem on SPARC in unicode + +- Bug #1487966: Fix SystemError with conditional expression in assignment + +- WindowsError now has two error code attributes: errno, which carries + the error values from errno.h, and winerror, which carries the error + values from winerror.h. Previous versions put the winerror.h values + (from GetLastError()) into the errno attribute. + +- Patch #1475845: Raise IndentationError for unexpected indent. + +- Patch #1479181: split open() and file() from being aliases for each other. + +- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` + methods were always silently ignored by dictionaries when comparing keys. + They are now passed through (except when using the C API function + ``PyDict_GetItem()``, whose semantics did not change). + +- Bug #1456209: In some obscure cases it was possible for a class with a + custom ``__eq__()`` method to confuse dict internals when class instances + were used as a dict's keys and the ``__eq__()`` method mutated the dict. + No, you don't have any code that did this ;-) + +Extension Modules +----------------- + +- Bug #1295808: expat symbols should be namespaced in pyexpat + +- Patch #1462338: Upgrade pyexpat to expat 2.0.0 + +- Change binascii.hexlify to accept a read-only buffer instead of only a char + buffer and actually follow its documentation. + +- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. + +- Patch #1478788 (modified version): The functional extension module has + been renamed to _functools and a functools Python wrapper module added. + This provides a home for additional function related utilities that are + not specifically about functional programming. See PEP 309. + +- Patch #1493701: performance enhancements for struct module. + +- Patch #1490224: time.altzone is now set correctly on Cygwin. + +- Patch #1435422: zlib's compress and decompress objects now have a + copy() method. + +- Patch #1454481: thread stack size is now tunable at runtime for thread + enabled builds on Windows and systems with Posix threads support. + +- On Win32, os.listdir now supports arbitrarily-long Unicode path names + (up to the system limit of 32K characters). + +- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. + As a result, these functions now raise WindowsError instead of OSError. + +- ``time.clock()`` on Win64 should use the high-performance Windows + ``QueryPerformanceCounter()`` now (as was already the case on 32-bit + Windows platforms). + +- Calling Tk_Init twice is refused if the first call failed as that + may deadlock. + +- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to + accept it without potentially using an uninitialized pointer. + +- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods + assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF + patch numbers 1494885 and 1494902] + +- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. + [pybsddb project SF patch number 1466734] + +- bsddb: fix DBCursor.pget() bug with keyword argument names when no data + parameter is supplied. [SF pybsddb bug #1477863] + +- bsddb: the __len__ method of a DB object has been fixed to return correct + results. It could previously incorrectly return 0 in some cases. + Fixes SF bug 1493322 (pybsddb bug 1184012). + +- bsddb: the bsddb.dbtables Modify method now raises the proper error and + aborts the db transaction safely when a modifier callback fails. + Fixes SF python patch/bug #1408584. + +- bsddb: multithreaded DB access using the simple bsddb module interface + now works reliably. It has been updated to use automatic BerkeleyDB + deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry + database calls that would previously deadlock. [SF python bug #775414] + +- Patch #1446489: add support for the ZIP64 extensions to zipfile. + +- Patch #1506645: add Python wrappers for the curses functions + is_term_resized, resize_term and resizeterm. + +Library +------- + +- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox + functions. + +- Patch #812986: Update turtle output even if not tracing. + +- Patch #1494750: Destroy master after deleting children in + Tkinter.BaseWidget. + +- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. + +- Patch #763580: Add name and value arguments to Tkinter variable + classes. + +- Bug #1117556: SimpleHTTPServer now tries to find and use the system's + mime.types file for determining MIME types. + +- Bug #1339007: Shelf objects now don't raise an exception in their + __del__ method when initialization failed. + +- Patch #1455898: The MBCS codec now supports the incremental mode for + double-byte encodings. + +- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to + guarantee that adjacent triples in the return list always describe + non-adjacent blocks. Previously, a pair of matching blocks could end + up being described by multiple adjacent triples that formed a partition + of the matching pair. + +- Bug #1498146: fix optparse to handle Unicode strings in option help, + description, and epilog. + +- Bug #1366250: minor optparse documentation error. + +- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; + clarify docs. + +- The wsgiref package has been added to the standard library. + +- The functions update_wrapper() and wraps() have been added to the functools + module. These make it easier to copy relevant metadata from the original + function when writing wrapper functions. + +- The optional ``isprivate`` argument to ``doctest.testmod()``, and the + ``doctest.is_private()`` function, both deprecated in 2.4, were removed. + +- Patch #1359618: Speed up charmap encoder by using a trie structure + for lookup. + +- The functions in the ``pprint`` module now sort dictionaries by key + before computing the display. Before 2.5, ``pprint`` sorted a dictionary + if and only if its display required more than one line, although that + wasn't documented. The new behavior increases predictability; e.g., + using ``pprint.pprint(a_dict)`` in a doctest is now reliable. + +- Patch #1497027: try HTTP digest auth before basic auth in urllib2 + (thanks for J. J. Lee). + +- Patch #1496206: improve urllib2 handling of passwords with respect to + default HTTP and HTTPS ports. + +- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. + +- Patch #1281707: speed up gzip.readline. + +- Patch #1180296: Two new functions were added to the locale module: + format_string() to get the effect of "format % items" but locale-aware, + and currency() to format a monetary number with currency sign. + +- Patch #1486962: Several bugs in the turtle Tk demo module were fixed + and several features added, such as speed and geometry control. + +- Patch #1488881: add support for external file objects in bz2 compressed + tarfiles. + +- Patch #721464: pdb.Pdb instances can now be given explicit stdin and + stdout arguments, making it possible to redirect input and output + for remote debugging. + +- Patch #1484695: Update the tarfile module to version 0.8. This fixes + a couple of issues, notably handling of long file names using the + GNU LONGNAME extension. + +- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a + new flag when ``name`` is already the name of an option flag. + +- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler + package. + +- Patch #1472854: make the rlcompleter.Completer class usable on non- + UNIX platforms. + +- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. + +- Bug #1472827: correctly escape newlines and tabs in attribute values in + the saxutils.XMLGenerator class. + + +Build +----- + +- Bug #1502728: Correctly link against librt library on HP-UX. + +- OpenBSD 3.9 is supported now. + +- Patch #1492356: Port to Windows CE. + +- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. + +- Patch #1471883: Add --enable-universalsdk. + +C API +----- + +Tests +----- + +Tools +----- + +Documentation +------------- + + + +What's New in Python 2.5 alpha 2? +================================= + +*Release date: 27-APR-2006* + +Core and builtins +----------------- + +- Bug #1465834: 'bdist_wininst preinstall script support' was fixed + by converting these apis from macros into exported functions again: + + PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile + PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx + PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne + PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString + PyRun_String Py_CompileString + +- Under COUNT_ALLOCS, types are not necessarily immortal anymore. + +- All uses of PyStructSequence_InitType have been changed to initialize + the type objects only once, even if the interpreter is initialized + multiple times. + +- Bug #1454485, array.array('u') could crash the interpreter. This was + due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) + to unicode when it didn't make sense. 'u#' now requires a unicode string. + +- Py_UNICODE is unsigned. It was always documented as unsigned, but + due to a bug had a signed value in previous versions. + +- Patch #837242: ``id()`` of any Python object always gives a positive + number now, which might be a long integer. ``PyLong_FromVoidPtr`` and + ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has + never been correct to implement a ``__hash()__`` method that returns the + ``id()`` of an object: + + def __hash__(self): + return id(self) # WRONG + + because a hash result must be a (short) Python int but it was always + possible for ``id()`` to return a Python long. However, because ``id()`` + could return negative values before, on a 32-bit box an ``id()`` result + was always usable as a hash value before this patch. That's no longer + necessarily so. + +- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) + to load extension modules and now provides the dl module. As a result, + sys.setdlopenflags() now works correctly on these systems. (SF patch + #1454844) + +- Patch #1463867: enhanced garbage collection to allow cleanup of cycles + involving generators that have paused outside of any ``try`` or ``with`` + blocks. (In 2.5a1, a paused generator that was part of a reference + cycle could not be garbage collected, regardless of whether it was + paused in a ``try`` or ``with`` block.) + +Extension Modules +----------------- + +- Patch #1191065: Fix preprocessor problems on systems where recvfrom + is a macro. + +- Bug #1467952: os.listdir() now correctly raises an error if readdir() + fails with an error condition. + +- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. + +- Bug #1117761: bsddb.*open() no longer raises an exception when using + the cachesize parameter. + +- Bug #1149413: bsddb.*open() no longer raises an exception when using + a temporary db (file=None) with the 'n' flag to truncate on open. + +- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 + as older versions cause excessive test failures. + +- Patch #1062014: AF_UNIX sockets under Linux have a special + abstract namespace that is now fully supported. + +Library +------- + +- Bug #1223937: subprocess.CalledProcessError reports the exit status + of the process using the returncode attribute, instead of + abusing errno. + +- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes + a doctest to be skipped (the code is not run, and the expected output + or exception is ignored). + +- Fixed contextlib.nested to cope with exceptions being raised and + caught inside exit handlers. + +- Updated optparse module to Optik 1.5.1 (allow numeric constants in + hex, octal, or binary; add ``append_const`` action; keep going if + gettext cannot be imported; added ``OptionParser.destroy()`` method; + added ``epilog`` for better help generation). + +- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when + called from a thread spawned as a side effect of importing a module. + +- The pydoc module now supports documenting packages contained in + .zip or .egg files. + +- The pkgutil module now has several new utility functions, such + as ``walk_packages()`` to support working with packages that are either + in the filesystem or zip files. + +- The mailbox module can now modify and delete messages from + mailboxes, in addition to simply reading them. Thanks to Gregory + K. Johnson for writing the code, and to the 2005 Google Summer of + Code for funding his work. + +- The ``__del__`` method of class ``local`` in module ``_threading_local`` + returned before accomplishing any of its intended cleanup. + +- Patch #790710: Add breakpoint command lists in pdb. + +- Patch #1063914: Add Tkinter.Misc.clipboard_get(). + +- Patch #1191700: Adjust column alignment in bdb breakpoint lists. + +- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on + Windows. Bug #1469163. + +- The warnings, linecache, inspect, traceback, site, and doctest modules + were updated to work correctly with modules imported from zipfiles or + via other PEP 302 __loader__ objects. + +- Patch #1467770: Reduce usage of subprocess._active to processes which + the application hasn't waited on. + +- Patch #1462222: Fix Tix.Grid. + +- Fix exception when doing glob.glob('anything*/') + +- The pstats.Stats class accepts an optional stream keyword argument to + direct output to an alternate file-like object. + +Build +----- + +- The Makefile now has a reindent target, which runs reindent.py on + the library. + +- Patch #1470875: Building Python with MS Free Compiler + +- Patch #1161914: Add a python-config script. + +- Patch #1324762:Remove ccpython.cc; replace --with-cxx with + --with-cxx-main. Link with C++ compiler only if --with-cxx-main was + specified. (Can be overridden by explicitly setting LINKCC.) Decouple + CXX from --with-cxx-main, see description in README. + +- Patch #1429775: Link extension modules with the shared libpython. + +- Fixed a libffi build problem on MIPS systems. + +- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` + now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, + and "%zu" for unsigned integers of type ``size_t``. + +Tests +----- + +- test_contextlib now checks contextlib.nested can cope with exceptions + being raised and caught inside exit handlers. + +- test_cmd_line now checks operation of the -m and -c command switches + +- The test_contextlib test in 2.5a1 wasn't actually run unless you ran + it separately and by hand. It also wasn't cleaning up its changes to + the current Decimal context. + +- regrtest.py now has a -M option to run tests that test the new limits of + containers, on 64-bit architectures. Running these tests is only sensible + on 64-bit machines with more than two gigabytes of memory. The argument + passed is the maximum amount of memory for the tests to use. + +Tools +----- + +- Added the Python benchmark suite pybench to the Tools/ directory; + contributed by Marc-Andre Lemburg. + +Documentation +------------- + +- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. + +- PEP 343: Added Context Types section to the library reference + and attempted to bring other PEP 343 related documentation into + line with the implementation and/or python-dev discussions. + +- Bug #1337990: clarified that ``doctest`` does not support examples + requiring both expected output and an exception. + + +What's New in Python 2.5 alpha 1? +================================= + +*Release date: 05-APR-2006* + +Core and builtins +----------------- + +- PEP 338: -m command line switch now delegates to runpy.run_module + allowing it to support modules in packages and zipfiles + +- On Windows, .DLL is not an accepted file name extension for + extension modules anymore; extensions are only found if they + end in .PYD. + +- Bug #1421664: sys.stderr.encoding is now set to the same value as + sys.stdout.encoding. + +- __import__ accepts keyword arguments. + +- Patch #1460496: round() now accepts keyword arguments. + +- Fixed bug #1459029 - unicode reprs were double-escaped. + +- Patch #1396919: The system scope threads are reenabled on FreeBSD + 5.4 and later versions. + +- Bug #1115379: Compiling a Unicode string with an encoding declaration + now gives a SyntaxError. + +- Previously, Python code had no easy way to access the contents of a + cell object. Now, a ``cell_contents`` attribute has been added + (closes patch #1170323). + +- Patch #1123430: Python's small-object allocator now returns an arena to + the system ``free()`` when all memory within an arena becomes unused + again. Prior to Python 2.5, arenas (256KB chunks of memory) were never + freed. Some applications will see a drop in virtual memory size now, + especially long-running applications that, from time to time, temporarily + use a large number of small objects. Note that when Python returns an + arena to the platform C's ``free()``, there's no guarantee that the + platform C library will in turn return that memory to the operating system. + The effect of the patch is to stop making that impossible, and in tests it + appears to be effective at least on Microsoft C and gcc-based systems. + Thanks to Evan Jones for hard work and patience. + +- Patch #1434038: property() now uses the getter's docstring if there is + no "doc" argument given. This makes it possible to legitimately use + property() as a decorator to produce a read-only property. + +- PEP 357, patch 1436368: add an __index__ method to int/long and a matching + nb_index slot to the PyNumberMethods struct. The slot is consulted instead + of requiring an int or long in slicing and a few other contexts, enabling + other objects (e.g. Numeric Python's integers) to be used as slice indices. + +- Fixed various bugs reported by Coverity's Prevent tool. + +- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the + new exception base class, BaseException, which has a new message attribute. + KeyboardInterrupt and SystemExit to directly inherit from BaseException now. + Raising a string exception now raises a DeprecationWarning. + +- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be + explicitly relative, using 'from .module import name' to mean 'from the same + package as this module is in. Imports without dots still default to the + old relative-then-absolute, unless 'from __future__ import + absolute_import' is used. + +- Properly check if 'warnings' raises an exception (usually when a filter set + to "error" is triggered) when raising a warning for raising string + exceptions. + +- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. + The name was removed from Include/code.h. + +- PEP 308: conditional expressions were added: (x if cond else y). + +- Patch 1433928: + - The copy module now "copies" function objects (as atomic objects). + - dict.__getitem__ now looks for a __missing__ hook before raising + KeyError. + +- PEP 343: with statement implemented. Needs ``from __future__ import + with_statement``. Use of 'with' as a variable will generate a warning. + Use of 'as' as a variable will also generate a warning (unless it's + part of an import statement). + The following objects have __context__ methods: + - The built-in file type. + - The thread.LockType type. + - The following types defined by the threading module: + Lock, RLock, Condition, Semaphore, BoundedSemaphore. + - The decimal.Context class. + +- Fix the encodings package codec search function to only search + inside its own package. Fixes problem reported in patch #1433198. + + Note: Codec packages should implement and register their own + codec search function. PEP 100 has the details. + +- PEP 353: Using ``Py_ssize_t`` as the index type. + +- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging + info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) + now allow Python to make use of memory blocks exceeding 2**32 bytes for + some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited + to 4-byte allocations before. + +- Patch #1400181, fix unicode string formatting to not use the locale. + This is how string objects work. u'%f' could use , instead of . + for the decimal point. Now both strings and unicode always use periods. + +- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. + configure would break checking curses.h. + +- Bug #959576: The pwd module is now builtin. This allows Python to be + built on UNIX platforms without $HOME set. + +- Bug #1072182, fix some potential problems if characters are signed. + +- Bug #889500, fix line number on SyntaxWarning for global declarations. + +- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. + +- Support for converting hex strings to floats no longer works. + This was not portable. float('0x3') now raises a ValueError. + +- Patch #1382163: Expose Subversion revision number to Python. New C API + function Py_GetBuildNumber(). New attribute sys.subversion. Build number + is now displayed in interactive prompt banner. + +- Implementation of PEP 341 - Unification of try/except and try/finally. + "except" clauses can now be written together with a "finally" clause in + one try statement instead of two nested ones. Patch #1355913. + +- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec + now encodes backslash correctly. + +- Patch #1350409: Work around signal handling bug in Visual Studio 2005. + +- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs + and long longs. + +- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" + It was possible for dlerror() to return a NULL pointer, so + it will now use a default error message in this case. + +- Replaced most Unicode charmap codecs with new ones using the + new Unicode translate string feature in the builtin charmap + codec; the codecs were created from the mapping tables available + at ftp.unicode.org and contain a few updates (e.g. the Mac OS + encodings now include a mapping for the Apple logo) + +- Added a few more codecs for Mac OS encodings + +- Sped up some Unicode operations. + +- A new AST parser implementation was completed. The abstract + syntax tree is available for read-only (non-compile) access + to Python code; an _ast module was added. + +- SF bug #1167751: fix incorrect code being produced for generator expressions. + The following code now raises a SyntaxError: foo(a = i for i in range(10)) + +- SF Bug #976608: fix SystemError when mtime of an imported file is -1. + +- SF Bug #887946: fix segfault when redirecting stdin from a directory. + Provide a warning when a directory is passed on the command line. + +- Fix segfault with invalid coding. + +- SF bug #772896: unknown encoding results in MemoryError. + +- All iterators now have a Boolean value of True. Formerly, some iterators + supported a __len__() method which evaluated to False when the iterator + was empty. + +- On 64-bit platforms, when __len__() returns a value that cannot be + represented as a C int, raise OverflowError. + +- test__locale is skipped on OS X < 10.4 (only partial locale support is + present). + +- SF bug #893549: parsing keyword arguments was broken with a few format + codes. + +- Changes donated by Elemental Security to make it work on AIX 5.3 + with IBM's 64-bit compiler (SF patch #1284289). This also closes SF + bug #105470: test_pwd fails on 64bit system (Opteron). + +- Changes donated by Elemental Security to make it work on HP-UX 11 on + Itanium2 with HP's 64-bit compiler (SF patch #1225212). + +- Disallow keyword arguments for type constructors that don't use them + (fixes bug #1119418). + +- Forward UnicodeDecodeError into SyntaxError for source encoding errors. + +- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for + exceptions that cause a function to exit. + +- The implementation of set() and frozenset() was revised to use its + own internal data structure. Memory consumption is reduced by 1/3 + and there are modest speed-ups as well. The API is unchanged. + +- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). + +- SF bug #1229429: PyObject_CallMethod failed to decrement some + reference counts in some error exit cases. + +- SF bug #1185883: Python's small-object memory allocator took over + a block managed by the platform C library whenever a realloc specified + a small new size. However, there's no portable way to know then how + much of the address space following the pointer is valid, so there's no + portable way to copy data from the C-managed block into Python's + small-object space without risking a memory fault. Python's small-object + realloc now leaves such blocks under the control of the platform C + realloc. + +- SF bug #1232517: An overflow error was not detected properly when + attempting to convert a large float to an int in os.utime(). + +- SF bug #1224347: hex longs now print with lowercase letters just + like their int counterparts. + +- SF bug #1163563: the original fix for bug #1010677 ("thread Module + Breaks PyGILState_Ensure()") broke badly in the case of multiple + interpreter states; back out that fix and do a better job (see + http://mail.python.org/pipermail/python-dev/2005-June/054258.html + for a longer write-up of the problem). + +- SF patch #1180995: marshal now uses a binary format by default when + serializing floats. + +- SF patch #1181301: on platforms that appear to use IEEE 754 floats, + the routines that promise to produce IEEE 754 binary representations + of floats now simply copy bytes around. + +- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP + 278. + +- patch #1109424: int, long, float, complex, and unicode now check for the + proper magic slot for type conversions when subclassed. Previously the + magic slot was ignored during conversion. Semantics now match the way + subclasses of str always behaved. int/long/float, conversion of an instance + to the base class has been moved to the proper nb_* magic slot and out of + PyNumber_*(). + Thanks Walter D?rwald. + +- Descriptors defined in C with a PyGetSetDef structure, where the setter is + NULL, now raise an AttributeError when attempting to set or delete the + attribute. Previously a TypeError was raised, but this was inconsistent + with the equivalent pure-Python implementation. + +- It is now safe to call PyGILState_Release() before + PyEval_InitThreads() (note that if there is reason to believe there + are multiple threads around you still must call PyEval_InitThreads() + before using the Python API; this fix is for extension modules that + have no way of knowing if Python is multi-threaded yet). + +- Typing Ctrl-C whilst raw_input() was waiting in a build with threads + disabled caused a crash. + +- Bug #1165306: instancemethod_new allowed the creation of a method + with im_class == im_self == NULL, which caused a crash when called. + +- Move exception finalisation later in the shutdown process - this + fixes the crash seen in bug #1165761 + +- Added two new builtins, any() and all(). + +- Defining a class with empty parentheses is now allowed + (e.g., ``class C(): pass`` is no longer a syntax error). + Patch #1176012 added support to the 'parser' module and 'compiler' package + (thanks to logistix for that added support). + +- Patch #1115086: Support PY_LONGLONG in structmember. + +- Bug #1155938: new style classes did not check that __init__() was + returning None. + +- Patch #802188: Report characters after line continuation character + ('\') with a specific error message. + +- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. + +- Bug #1124295: the __name__ attribute of file objects was + inadvertently made inaccessible in restricted mode. + +- Bug #1074011: closing sys.std{out,err} now causes a flush() and + an ferror() call. + +- min() and max() now support key= arguments with the same meaning as in + list.sort(). + +- The peephole optimizer now performs simple constant folding in expressions: + (2+3) --> (5). + +- set and frozenset objects can now be marshalled. SF #1098985. + +- Bug #1077106: Poor argument checking could cause memory corruption + in calls to os.read(). + +- The parser did not complain about future statements in illegal + positions. It once again reports a syntax error if a future + statement occurs after anything other than a doc string. + +- Change the %s format specifier for str objects so that it returns a + unicode instance if the argument is not an instance of basestring and + calling __str__ on the argument returns a unicode instance. + +- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the + current thread state when the auto-GIL-state machinery knows about + it (since the thread state is being deleted, continuing to remember it + can't help, but can hurt if another thread happens to get created with + the same thread id). + +Extension Modules +----------------- + +- Patch #1380952: fix SSL objects timing out on consecutive read()s + +- Patch #1309579: wait3 and wait4 were added to the posix module. + +- Patch #1231053: The audioop module now supports encoding/decoding of alaw. + In addition, the existing ulaw code was updated. + +- RFE #567972: Socket objects' family, type and proto properties are + now exposed via new attributes. + +- Everything under lib-old was removed. This includes the following modules: + Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, + lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, + util, whatsound, whrandom, zmod + +- The following modules were removed: regsub, reconvert, regex, regex_syntax. + +- re and sre were swapped, so help(re) provides full help. importing sre + is deprecated. The undocumented re.engine variable no longer exists. + +- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle + SS2 (single-shift 2) escape sequences correctly. + +- The unicodedata module was updated to the 4.1 version of the Unicode + database. The 3.2 version is still available as unicodedata.db_3_2_0 + for applications that require this specific version (such as IDNA). + +- The timing module is no longer built by default. It was deprecated + in PEP 4 in Python 2.0 or earlier. + +- Patch 1433928: Added a new type, defaultdict, to the collections module. + This uses the new __missing__ hook behavior added to dict (see above). + +- Bug #854823: socketmodule now builds on Sun platforms even when + INET_ADDRSTRLEN is not defined. + +- Patch #1393157: os.startfile() now has an optional argument to specify + a "command verb" to invoke on the file. + +- Bug #876637, prevent stack corruption when socket descriptor + is larger than FD_SETSIZE. + +- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. + mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. + mmap.mmap(0, size) should not be used on Windows for anonymous memory. + +- Patch #1422385: The nis module now supports access to domains other + than the system default domain. + +- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps + are reported, the limit on path name lengths is removed, and stat reports + WindowsError now (instead of OSError). + +- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. + +- Bug #1413192, fix seg fault in bsddb if a transaction was deleted + before the env. + +- Patch #1103116: Basic AF_NETLINK support. + +- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) + +- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. + Also fix ungetmouse() which did not accept arguments properly. + The code now conforms to the documented signature. + +- Bug #1400115, Fix segfault when calling curses.panel.userptr() + without prior setting of the userptr. + +- Fix 64-bit problems in bsddb. + +- Patch #1365916: fix some unsafe 64-bit mmap methods. + +- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build + problem on AIX. + +- Bug #869197: os.setgroups rejects long integer arguments + +- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint + +- Bug #1344508, Fix UNIX mmap leaking file descriptors + +- Patch #1338314, Bug #1336623: fix tarfile so it can extract + REGTYPE directories from tarfiles written by old programs. + +- Patch #1407992, fixes broken bsddb module db associate when using + BerkeleyDB 3.3, 4.0 or 4.1. + +- Get bsddb module to build with BerkeleyDB version 4.4 + +- Get bsddb module to build with BerkeleyDB version 3.2 + +- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, + but Python incorrectly assumes it is in UTF-8 format + +- Fix parse errors in the readline module when compiling without threads. + +- Patch #1288833: Removed thread lock from socket.getaddrinfo on + FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). + +- Patches #1298449 and #1298499: Add some missing checks for error + returns in cStringIO.c. + +- Patch #1297028: fix segfault if call type on MultibyteCodec, + MultibyteStreamReader, or MultibyteStreamWriter + +- Fix memory leak in posix.access(). + +- Patch #1213831: Fix typo in unicodedata._getcode. + +- Bug #1007046: os.startfile() did not accept unicode strings encoded in + the file system encoding. + +- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for + platforms that don't have inet_aton(). + +- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. + +- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one + line without newlines. + +- Bug #728515: mmap.resize() now resizes the file on Unix as it did + on Windows. + +- Patch #1180695: Add nanosecond stat resolution, and st_gen, + st_birthtime for FreeBSD. + +- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for + the request code argument, which results in more C-like behaviour + for large or negative values. + +- Bug #1234979: For the argument of thread.Lock.acquire, the Windows + implementation treated all integer values except 1 as false. + +- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. + +- Patch #1212117: os.stat().st_flags is now accessible as a attribute + if available on the platform. + +- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if + available on the platform. + +- Bug #1166660: The readline module could segfault if hook functions + were set in a different thread than that which called readline. + +- collections.deque objects now support a remove() method. + +- operator.itemgetter() and operator.attrgetter() now support retrieving + multiple fields. This provides direct support for sorting on multiple + keys (primary, secondary, etc). + +- os.access now supports Unicode path names on non-Win32 systems. + +- Patches #925152, #1118602: Avoid reading after the end of the buffer + in pyexpat.GetInputContext. + +- Patches #749830, #1144555: allow UNIX mmap size to default to current + file size. + +- Added functional.partial(). See PEP309. + +- Patch #1093585: raise a ValueError for negative history items in readline. + {remove_history,replace_history} + +- The spwd module has been added, allowing access to the shadow password + database. + +- stat_float_times is now True. + +- array.array objects are now picklable. + +- the cPickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- itertools.islice() now accepts None for the start and step arguments. + This allows islice() to work more readily with slices: + islice(s.start, s.stop, s.step) + +- datetime.datetime() now has a strptime class method which can be used to + create datetime object using a string and format. + +- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc + with the implementation from http://sourceforge.net/projects/libmd5-rfc/. + +Library +------- + +- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have + been renamed to have only a single underscore prefix. This was done to + make subclassing easier. + +- PEP 338: new module runpy defines a run_module function to support + executing modules which provide access to source code or a code object + via the PEP 302 import mechanisms. + +- The email module's parsedate_tz function now sets the daylight savings + flag to -1 (unknown) since it can't tell from the date whether it should + be set. + +- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results + now sport attributes that provide access to the parts of the result. + +- Patch #1462498: sgmllib now handles entity and character references + in attribute values. + +- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides + a DB-API interface in the standard library. You'll need sqlite 3.0.8 or + later to build this - if you have an earlier version, the C extension + module will not be built. + +- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts + aren't officially supported here, and trying to use them will probably + raise an exception some day. But dicts have been allowed, and "mostly + worked", so support for them won't go away without warning. + +- Bug #1445068: getpass.getpass() can now be given an explicit stream + argument to specify where to write the prompt. + +- Patch #1462313, bug #1443328: the pickle modules now can handle classes + that have __private names in their __slots__. + +- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. + +- patch #1457316: "setup.py upload" now supports --identity to select the + key to be used for signing the uploaded code. + +- Queue.Queue objects now support .task_done() and .join() methods + to make it easier to monitor when daemon threads have completed + processing all enqueued tasks. Patch #1455676. + +- popen2.Popen objects now preserve the command in a .cmd attribute. + +- Added the ctypes ffi package. + +- email 4.0 package now integrated. This is largely the same as the email 3.0 + package that was included in Python 2.3, except that PEP 8 module names are + now used (e.g. mail.message instead of email.Message). The MIME classes + have been moved to a subpackage (e.g. email.mime.text instead of + email.MIMEText). The old names are still supported for now. Several + deprecated Message methods have been removed and lots of bugs have been + fixed. More details can be found in the email package documentation. + +- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object + (a subclass of tuple) that provides incremental decoders and encoders + (a way to use stateful codecs without the stream API). Python functions + codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well + as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() + have been added. + +- Patch #1359365: Calling next() on a closed StringIO.String object raises + a ValueError instead of a StopIteration now (like file and cString.String do). + cStringIO.StringIO.isatty() will raise a ValueError now if close() has been + called before (like file and StringIO.StringIO do). + +- A regrtest option -w was added to re-run failed tests in verbose mode. + +- Patch #1446372: quit and exit can now be called from the interactive + interpreter to exit. + +- The function get_count() has been added to the gc module, and gc.collect() + grew an optional 'generation' argument. + +- A library msilib to generate Windows Installer files, and a distutils + command bdist_msi have been added. + +- PEP 343: new module contextlib.py defines decorator @contextmanager + and helpful context managers nested() and closing(). + +- The compiler package now supports future imports after the module docstring. + +- Bug #1413790: zipfile now sanitizes absolute archive names that are + not allowed by the specs. + +- Patch #1215184: FileInput now can be given an opening hook which can + be used to control how files are opened. + +- Patch #1212287: fileinput.input() now has a mode parameter for + specifying the file mode input files should be opened with. + +- Patch #1215184: fileinput now has a fileno() function for getting the + current file number. + +- Patch #1349274: gettext.install() now optionally installs additional + translation functions other than _() in the builtin namespace. + +- Patch #1337756: fileinput now accepts Unicode filenames. + +- Patch #1373643: The chunk module can now read chunks larger than + two gigabytes. + +- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. + +- Bug #1430298: It is now possible to send a mail with an empty + return address using smtplib. + +- Bug #1432260: The names of lambda functions are now properly displayed + in pydoc. + +- Patch #1412872: zipfile now sets the creator system to 3 (Unix) + unless the system is Win32. + +- Patch #1349118: urllib now supports user:pass@ style proxy + specifications, raises IOErrors when proxies for unsupported protocols + are defined, and uses the https proxy on https redirections. + +- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. + +- Bug #1407902: Add support for sftp:// URIs to urlparse. + +- Bug #1371247: Update Windows locale identifiers in locale.py. + +- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters + any more. + +- Bug #1403410: The warnings module now doesn't get confused + when it can't find out the module name it generates a warning for. + +- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. + +- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode + +- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise + LoadError as documented, instead of IOError. For compatibility, + LoadError subclasses IOError. + +- Added the hashlib module. It provides secure hash functions for MD5 and + SHA1, 224, 256, 384, and 512. Note that recent developments make the + historic MD5 and SHA1 unsuitable for cryptographic-strength applications. + In + Ronald L. Rivest offered this advice for Python: + + "The consensus of researchers in this area (at least as + expressed at the NIST Hash Function Workshop 10/31/05), + is that SHA-256 is a good choice for the time being, but + that research should continue, and other alternatives may + arise from this research. The larger SHA's also seem OK." + +- Added a subset of Fredrik Lundh's ElementTree package. Available + modules are xml.etree.ElementTree, xml.etree.ElementPath, and + xml.etree.ElementInclude, from ElementTree 1.2.6. + +- Patch #1162825: Support non-ASCII characters in IDLE window titles. + +- Bug #1365984: urllib now opens "data:" URLs again. + +- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception + is raised within the method itself on a previous call (e.g., passing in an + illegal argument) + +- Bug #1340337: change time.strptime() to always return ValueError when there + is an error in the format string. + +- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). + +- Bug #729103: pydoc.py: Fix docother() method to accept additional + "parent" argument. + +- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes + for padding. + +- Bug #1296004: httplib.py: Limit maximal amount of data read from the + socket to avoid a MemoryError on Windows. + +- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE + to get the correct encoding. + +- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of + languages. + +- Patch #1268314: Cache lines in StreamReader.readlines for performance. + +- Bug #1290505: Fix clearing the regex cache for time.strptime(). + +- Bug #1167128: Fix size of a symlink in a tarfile to be 0. + +- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook + functionality. + +- Bug #1163178: Make IDNA return an empty string when the input is empty. + +- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output + separator and do not output trailing semicolon. + +- Patch #1062060: urllib.urlretrieve() now raises a new exception, named + ContentTooShortException, when the actually downloaded size does not + match the Content-Length header. + +- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. + +- Bug #1178484: Return complete lines from codec stream readers + even if there is an exception in later lines, resulting in + correct line numbers for decoding errors in source code. + +- Bug #1192315: Disallow negative arguments to clear() in pdb. + +- Patch #827386: Support absolute source paths in msvccompiler.py. + +- Patch #1105730: Apply the new implementation of commonprefix in posixpath + to ntpath, macpath, os2emxpath and riscospath. + +- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus + __hasattr__ and __delattr__ methods on class Tk that were breaking + Tkdnd. + +- Bug #1015140: disambiguated the term "article id" in nntplib docs and + docstrings to either "article number" or "message id". + +- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a + parameter, but uses the usual "kwargs=None". + +- textwrap now processes text chunks at O(n) speed instead of O(n**2). + Patch #1209527 (Contributed by Connelly). + +- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code + to W3C name (404 -> 'Not Found'). RFE #1216944. + +- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, + as this can cause problems with apps closing all file descriptors. + +- Bug #839151: Fix an attempt to access sys.argv in the warnings module; + it can be missing in embedded interpreters + +- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. + +- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via + error messages. + +- Bug #1108948: Cookie.py produced invalid JavaScript code. + +- The tokenize module now detects and reports indentation errors. + Bug #1224621. + +- The tokenize module has a new untokenize() function to support a full + roundtrip from lexed tokens back to Python source code. In addition, + the generate_tokens() function now accepts a callable argument that + terminates by raising StopIteration. + +- Bug #1196315: fix weakref.WeakValueDictionary constructor. + +- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first + component of the path. + +- Patch #1120353: The xmlrpclib module provides better, more transparent, + support for datetime.{datetime,date,time} objects. With use_datetime set + to True, applications shouldn't have to fiddle with the DateTime wrapper + class at all. + +- distutils.commands.upload was added to support uploading distribution + files to PyPI. + +- distutils.commands.register now encodes the data as UTF-8 before posting + them to PyPI. + +- decimal operator and comparison methods now return NotImplemented + instead of raising a TypeError when interacting with other types. This + allows other classes to implement __radd__ style methods and have them + work as expected. + +- Bug #1163325: Decimal infinities failed to hash. Attempting to + hash a NaN raised an InvalidOperation instead of a TypeError. + +- Patch #918101: Add tarfile open mode r|* for auto-detection of the + stream compression; add, for symmetry reasons, r:* as a synonym of r. + +- Patch #1043890: Add extractall method to tarfile. + +- Patch #1075887: Don't require MSVC in distutils if there is nothing + to build. + +- Patch #1103407: Properly deal with tarfile iterators when untarring + symbolic links on Windows. + +- Patch #645894: Use getrusage for computing the time consumption in + profile.py if available. + +- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. + +- Patch #1117454: Remove code to special-case cookies without values + in LWPCookieJar. + +- Patch #1117339: Add cookielib special name tests. + +- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. + +- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. + +- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. + +- Patch #1104111: Alter setup.py --help and --help-commands. + +- Patch #1121234: Properly cleanup _exit and tkerror commands. + +- Patch #1049151: xdrlib now unpacks booleans as True or False. + +- Fixed bug in a NameError bug in cookielib. Patch #1116583. + +- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This + disables recursive traversal through instance attributes, which can + be exploited in various ways. + +- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec + flags on the HTTP listening socket. + +- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. + Fixed by reading the HTTP body in chunks instead of one big socket.read(). + +- Patches #893642, #1039083: add allow_none, encoding arguments to + constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. + +- Bug #1110478: Revert os.environ.update to do putenv again. + +- Bug #1103844: fix distutils.install.dump_dirs() with negated options. + +- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. + +- Enhancements to the csv module: + + + Dialects are now validated by the underlying C code, better + reflecting its capabilities, and improving its compliance with + PEP 305. + + Dialect parameter parsing has been re-implemented to improve error + reporting. + + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 + dictates. + + the parser now removes the escapechar prefix from escaped characters. + + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric + types, rather than any object that can be represented as a numeric. + + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields + to floats. + + reader now allows \r characters to be quoted (previously it only allowed + \n to be quoted). + + writer doublequote handling improved. + + Dialect classes passed to the module are no longer instantiated by + the module before being parsed (the former validation scheme required + this, but the mechanism was unreliable). + + The dialect registry now contains instances of the internal + C-coded dialect type, rather than references to python objects. + + the internal c-coded dialect type is now immutable. + + register_dialect now accepts the same keyword dialect specifications + as the reader and writer, allowing the user to register dialects + without first creating a dialect class. + + a configurable limit to the size of parsed fields has been added - + previously, an unmatched quote character could result in the entire + file being read into the field buffer before an error was reported. + + A new module method csv.field_size_limit() has been added that sets + the parser field size limit (returning the former limit). The initial + limit is 128kB. + + A line_num attribute has been added to the reader object, which tracks + the number of lines read from the source iterator. This is not + the same as the number of records returned, as records can span + multiple lines. + + reader and writer objects were not being registered with the cyclic-GC. + This has been fixed. + +- _DummyThread objects in the threading module now delete self.__block that is + inherited from _Thread since it uses up a lock allocated by 'thread'. The + lock primitives tend to be limited in number and thus should not be wasted on + a _DummyThread object. Fixes bug #1089632. + +- The imghdr module now detects Exif files. + +- StringIO.truncate() now correctly adjusts the size attribute. + (Bug #951915). + +- locale.py now uses an updated locale alias table (built using + Tools/i18n/makelocalealias.py, a tool to parse the X11 locale + alias file); the encoding lookup was enhanced to use Python's + encoding alias table. + +- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. + +- the pickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- optparse now optionally imports gettext. This allows its use in setup.py. + +- the pickle module no longer uses the deprecated bin parameter. + +- the shelve module no longer uses the deprecated binary parameter. + +- the pstats module no longer uses the deprecated ignore() method. + +- the filecmp module no longer uses the deprecated use_statcache argument. + +- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully + extended or overridden by subclasses. Formerly, the subclassed method would + be ignored by the rest of the module. (Bug #1078905). + +- heapq.nsmallest() and heapq.nlargest() now support key= arguments with + the same meaning as in list.sort(). + +- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only + once when a size argument is given. This prevents a buffer overflow in the + tokenizer with very long source lines. + +- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called + immediately after creating the object, without any intervening + ``.decompress()`` calls. + +- The reconvert.quote function can now emit triple-quoted strings. The + reconvert module now has some simple documentation. + +- ``UserString.MutableString`` now supports negative indices in + ``__setitem__`` and ``__delitem__`` + +- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") + correctly. + +- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by + ``codecs.StreamReader.readline()`` has a trailing "\r", read one more + character even if the user has passed a size parameter to get a proper + line ending. Remove the special handling of a "\r\n" that has been split + between two lines. + +- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain + about illegal code points. The codec now supports PEP 293 style error + handlers. + +- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads + from the input stream, so that the output is a byte string in the correct + encoding instead of a unicode string. + +- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than + considering it exactly like a '*'. + +- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to + ``encodings.aliases``. + +- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. + +- Patch #1413711: Certain patterns of differences were making difflib + touch the recursion limit. + +- Bug #947906: An object oriented interface has been added to the calendar + module. It's possible to generate HTML calendar now and the module can be + called as a script (e.g. via ``python -mcalendar``). Localized month and + weekday names can be ouput (even if an exotic encoding is used) using + special classes that use unicode. + +Build +----- + +- Fix test_float, test_long, and test_struct failures on Tru64 with gcc + by using -mieee gcc option. + +- Patch #1432345: Make python compile on DragonFly. + +- Build support for Win64-AMD64 was added. + +- Patch #1428494: Prefer linking against ncursesw over ncurses library. + +- Patch #881820: look for openpty and forkpty also in libbsd. + +- The sources of zlib are now part of the Python distribution (zlib 1.2.3). + The zlib module is now builtin on Windows. + +- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. + +- Bug #1189330: configure did not correctly determine the necessary + value of LINKCC if python was built with GCC 4.0. + +- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security + vulnerability in zlib 1.2.1 and 1.2.2. + +- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler + flags that change binary compatibility. Changes were also made to + distutils.sysconfig to also use the environment variable when used during + compilation of the interpreter and of C extensions through distutils. + +- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, + and linking has changed (prebinding is now deprecated, and libcc_dynamic + no longer exists). This configure patch makes things right. + +- Bug #1158607: Build with --disable-unicode again. + +- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is + defined. Discovered as a result of not being able to build on OS X. + +- setup.py now uses the directories specified in LDFLAGS using the -L option + and in CPPFLAGS using the -I option for adding library and include + directories, respectively, for compiling extension modules against. This has + led to the core being compiled using the values in CPPFLAGS. It also removes + the need for the special-casing of both DarwinPorts and Fink for darwin since + the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, + ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for + Fink, ``-I/opt/local/include`` for DarwinPorts). + +- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone + to exist in the struct (not required by either ISO C nor the UNIX 2 spec). + Tests for sanity in tzname when HAVE_TZNAME defined were also defined. + Closes bug #1096244. Thanks Gregory Bond. + +C API +----- + +- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to + ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory + is obtained via the ``PyObject_`` family, it must be released via the + ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has + always been officially true, but when Python's small-object allocator was + introduced, an attempt was made to cater to a few extension modules + discovered at the time that obtained memory via ``PyObject_New`` but + released it via ``PyMem_DEL``. It's years later, and if such code still + exists it will fail now (probably with segfaults, but calling wrong + low-level memory management functions can yield many symptoms). + +- Added a C API for set and frozenset objects. + +- Removed PyRange_New(). + +- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the + mapping argument now. This string is used as a mapping table. Byte values + greater than the length of the string and 0xFFFE are treated as undefined + mappings. + + +Tests +----- + +- In test_os, st_?time is now truncated before comparing it with ST_?TIME. + +- Patch #1276356: New resource "urlfetch" is implemented. This enables + even impatient people to run tests that require remote files. + + +Documentation +------------- + +- Bug #1402224: Add warning to dl docs about crashes. + +- Bug #1396471: Document that Windows' ftell() can return invalid + values for text files with UNIX-style line endings. + +- Bug #1274828: Document os.path.splitunc(). + +- Bug #1190204: Clarify which directories are searched by site.py. + +- Bug #1193849: Clarify os.path.expanduser() documentation. + +- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. + +- Bug #755617: Document the effects of os.chown() on Windows. + +- Patch #1180012: The documentation for modulefinder is now in the library reference. + +- Patch #1213031: Document that os.chown() accepts argument values of -1. + +- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. + +- Bug #1175022: Correct the example code for property(). + +- Document the IterableUserDict class in the UserDict module. + Closes bug #1166582. + +- Remove all latent references for "Macintosh" that referred to semantics for + Mac OS 9 and change to reflect the state for OS X. + Closes patch #1095802. Thanks Jack Jansen. + +Mac +--- + + +New platforms +------------- + +- FreeBSD 7 support is added. + + +Tools/Demos +----------- + +- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that + directory for syntax highlighting in Vim. Vim directory was added and placed + vimrc to it (was previous up a level). + +- Added two new files to Tools/scripts: pysource.py, which recursively + finds Python source files, and findnocoding.py, which finds Python + source files that need an encoding declaration. + Patch #784089, credits to Oleg Broytmann. + +- Bug #1072853: pindent.py used an uninitialized variable. + +- Patch #1177597: Correct Complex.__init__. + +- Fixed a display glitch in Pynche, which could cause the right arrow to + wiggle over by a pixel. + + What's New in Python 2.4 final? =============================== Modified: python/branches/trunk-math/Misc/NEWS ============================================================================== --- python/branches/trunk-math/Misc/NEWS (original) +++ python/branches/trunk-math/Misc/NEWS Thu Feb 28 21:09:17 2008 @@ -22,6 +22,44 @@ - Added methods is_inf, is_nan and is_integer to float type. +- Issue #2051: pyc and pyo files are not longer created with permission 644. The + mode is now inherited from the py file. + +- Issue #2067: file.__exit__() now calls subclasses' close() method. + +- Patch #1759: Backport of PEP 3129 class decorators. + +- Issue #1881: An internal parser limit has been increased. Also see + issue 215555 for a discussion. + +- Added the future_builtins module, which contains hex() and oct(). + These are the PEP 3127 version of these functions, designed to be + compatible with the hex() and oct() builtins from Python 3.0. They + differ slightly in their output formats from the existing, unchanged + Python 2.6 builtins. The expected usage of the future_builtins + module is: + from future_builtins import hex, oct + +- Issue #1600: Modifed PyOS_ascii_formatd to use at most 2 digit + exponents for exponents with absolute value < 100. Follows C99 + standard. This is a change on Windows, which would use 3 digits. + Also, added 'n' to the formats that PyOS_ascii_formatd understands, + so that any alterations it does to the resulting string will be + available in stringlib/formatter.h (for float.__format__). + +- Implemented PEP 3101, Advanced String Formatting. This adds a new + builtin format(); a format() method for str and unicode; a + __format__() method to object, str, unicode, int, long, float, and + datetime; the class string.Formatter; and the C API + PyObject_Format(). + +- Fixed several potential crashes, all caused by specially crafted __del__ + methods exploiting objects in temporarily inconsistent state. + +- Issue #2115: Important speedup in setting __slot__ attributes. Also + prevent a possible crash: an Abstract Base Class would try to access a slot + on a registered virtual subclass. + - Fixed repr() and str() of complex numbers with infinity or nan as real or imaginary part. @@ -129,10 +167,6 @@ - Issue #1620: New property decorator syntax was modifying the decorator in place instead of creating a new decorator object. -- Issue #1580: New free format floating point representation based on - "Floating-Point Printer Sample Code", by Robert G. Burger. For example - repr(11./5) now returns '2.2' instead of '2.2000000000000002'. - - Issue #1538: Avoid copying string in split/rsplit if the split char is not found. @@ -417,6 +451,29 @@ Library ------- +- Add a timing parameter when using trace.Trace to print out timestamps. + +- #1627: httplib now ignores negative Content-Length headers. + +- #900744: If an invalid chunked-encoding header is sent by a server, + httplib will now raise IncompleteRead and close the connection instead + of raising ValueError. + +- #1492: The content type of BaseHTTPServer error messages can now be + overridden. + +- Issue 1781: ConfigParser now does not let you add the "default" section + (ignore-case) + +- Removed uses of dict.has_key() from distutils, and uses of + callable() from copy_reg.py, so the interpreter now starts up + without warnings when '-3' is given. More work like this needs to + be done in the rest of the stdlib. + +- Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. + +- #1224: Fixed bad url parsing when path begins with double slash. + - ctypes instances that are not or do not contain pointers can now be pickled. @@ -620,6 +677,11 @@ - itertools.count() is no longer bounded to LONG_MAX. Formerly, it raised an OverflowError. Now, automatically shifts from ints to longs. +- Added itertools.product() which forms the Cartesian product of + the input iterables. + +- Added itertools.combinations(). + - Patch #1541463: optimize performance of cgi.FieldStorage operations. - Decimal is fully updated to the latest Decimal Specification (v1.66). @@ -1042,14 +1104,14 @@ written to disk after calling .flush() or .close(). (Patch by David Watson.) -- Patch #1592250: Add elidge argument to Tkinter.Text.search. +- Patch #1592250: Add elide argument to Tkinter.Text.search. -- Patch #838546: Make terminal become controlling in pty.fork() +- Patch #838546: Make terminal become controlling in pty.fork(). - Patch #1351744: Add askyesnocancel helper for tkMessageBox. - Patch #1060577: Extract list of RPM files from spec file in - bdist_rpm + bdist_rpm. - Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders. @@ -1133,7 +1195,8 @@ - idle: Honor the "Cancel" action in the save dialog (Debian bug #299092). - Fix utf-8-sig incremental decoder, which didn't recognise a BOM when the - first chunk fed to the decoder started with a BOM, but was longer than 3 bytes. + first chunk fed to the decoder started with a BOM, but was longer than 3 + bytes. - The implementation of UnicodeError objects has been simplified (start and end attributes are now stored directly as Py_ssize_t members). @@ -1148,10 +1211,20 @@ does not claim to support starttls. Adds the SMTP.ehlo_or_helo_if_needed() method. Patch contributed by Bill Fenner. +- Patch #1089358: Add signal.siginterrupt, a wrapper around siginterrupt(3). Extension Modules ----------------- +- Patch #1506171: added operator.methodcaller(). + +- Patch #1826: operator.attrgetter() now supports dotted attribute paths. + +- Patch #1957: syslogmodule: Release GIL when calling syslog(3) + +- #2112: mmap.error is now a subclass of EnvironmentError and not a + direct EnvironmentError + - Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ - #2063: correct order of utime and stime in os.times() result on Windows. @@ -1344,6 +1417,8 @@ Tests ----- +- Refactor test_logging to use doctest. + - Refactor test_profile and test_cprofile to use the same code to profile. - Make test_runpy reentrant by fixing _check_module to clear out any module @@ -1379,6 +1454,11 @@ Tools ----- +- Tools/scripts/reindent.py now creates the backup file using shutil.copy + to preserve user/group and permissions. Added also a --nobackup option + to not create the backup if the user is concerned regarding this. Check + issue 1050828 for more details. + - Tools/scripts/win_add2path.py was added. The simple script modifes the PATH environment var of the HKCU tree and adds the python bin and script directory. @@ -1623,2143 +1703,6 @@ lead to the deprecation of macostools.touched() as it relied solely on macfs and was a no-op under OS X. - -What's New in Python 2.5 release candidate 1? -============================================= - -*Release date: 17-AUG-2006* - -Core and builtins ------------------ - -- Unicode objects will no longer raise an exception when being - compared equal or unequal to a string and a UnicodeDecodeError - exception occurs, e.g. as result of a decoding failure. - - Instead, the equal (==) and unequal (!=) comparison operators will - now issue a UnicodeWarning and interpret the two objects as - unequal. The UnicodeWarning can be filtered as desired using - the warning framework, e.g. silenced completely, turned into an - exception, logged, etc. - - Note that compare operators other than equal and unequal will still - raise UnicodeDecodeError exceptions as they've always done. - -- Fix segfault when doing string formatting on subclasses of long. - -- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines - with new-style classes. - -- Fix bug related to __len__ functions returning negative values with - classic classes. - -- Patch #1538606, Fix __index__() clipping. There were some problems - discovered with the API and how integers that didn't fit into Py_ssize_t - were handled. This patch attempts to provide enough alternatives - to effectively use __index__. - -- Bug #1536021: __hash__ may now return long int; the final hash - value is obtained by invoking hash on the long int. - -- Bug #1536786: buffer comparison could emit a RuntimeWarning. - -- Bug #1535165: fixed a segfault in input() and raw_input() when - sys.stdin is closed. - -- On Windows, the PyErr_Warn function is now exported from - the Python dll again. - -- Bug #1191458: tracing over for loops now produces a line event - on each iteration. Fixing this problem required changing the .pyc - magic number. This means that .pyc files generated before 2.5c1 - will be regenerated. - -- Bug #1333982: string/number constants were inappropriately stored - in the byte code and co_consts even if they were not used, ie - immediately popped off the stack. - -- Fixed a reference-counting problem in property(). - - -Library -------- - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for generator expressions. - -- The distutils version has been changed to 2.5.0. The change to - keep it programmatically in sync with the Python version running - the code (introduced in 2.5b3) has been reverted. It will continue - to be maintained manually as static string literal. - -- If the Python part of a ctypes callback function returns None, - and this cannot be converted to the required C type, an exception is - printed with PyErr_WriteUnraisable. Before this change, the C - callback returned arbitrary values to the calling code. - -- The __repr__ method of a NULL ctypes.py_object() no longer raises - an exception. - -- uuid.UUID now has a bytes_le attribute. This returns the UUID in - little-endian byte order for Windows. In addition, uuid.py gained some - workarounds for clocks with low resolution, to stop the code yielding - duplicate UUIDs. - -- Patch #1540892: site.py Quitter() class attempts to close sys.stdin - before raising SystemExit, allowing IDLE to honor quit() and exit(). - -- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. - -- Patch #1536071: trace.py should now find the full module name of a - file correctly even on Windows. - -- logging's atexit hook now runs even if the rest of the module has - already been cleaned up. - -- Bug #1112549, fix DoS attack on cgi.FieldStorage. - -- Bug #1531405, format_exception no longer raises an exception if - str(exception) raised an exception. - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for nested functions. - - -Extension Modules ------------------ - -- Patch #1511317: don't crash on invalid hostname (alias) info. - -- Patch #1535500: fix segfault in BZ2File.writelines and make sure it - raises the correct exceptions. - -- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The - '-no-stack-protector' compiler flag for OpenBSD has been removed. - -- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now - uses the _as_parameter_ attribute when objects are passed to foreign - function calls. The ctypes version number was changed to 1.0.1. - -- Bug #1530559, struct.pack raises TypeError where it used to convert. - Passing float arguments to struct.pack when integers are expected - now triggers a DeprecationWarning. - - -Tests ------ - -- test_socketserver should now work on cygwin and not fail sporadically - on other platforms. - -- test_mailbox should now work on cygwin versions 2006-08-10 and later. - -- Bug #1535182: really test the xreadlines() method of bz2 objects. - -- test_threading now skips testing alternate thread stack sizes on - platforms that don't support changing thread stack size. - - -Documentation -------------- - -- Patch #1534922: unittest docs were corrected and enhanced. - - -Build ------ - -- Bug #1535502, build _hashlib on Windows, and use masm assembler - code in OpenSSL. - -- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. - -- Bug #1530448, ctypes build failure on Solaris 10 was fixed. - - -C API ------ - -- New API for Unicode rich comparisons: PyUnicode_RichCompare() - -- Bug #1069160. Internal correctness changes were made to - ``PyThreadState_SetAsyncExc()``. A test case was added, and - the documentation was changed to state that the return value - is always 1 (normal) or 0 (if the specified thread wasn't found). - - -What's New in Python 2.5 beta 3? -================================ - -*Release date: 03-AUG-2006* - -Core and builtins ------------------ - -- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously - returned a long (see PEP 353). - -- Bug #1515471: string.replace() accepts character buffers again. - -- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). - This provides the proper warning for struct.pack(). - PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). - -- Patch #1531113: Fix augmented assignment with yield expressions. - Also fix a SystemError when trying to assign to yield expressions. - -- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance - with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is - used in ``sys.path_importer_cache`` to cache non-directory paths and avoid - excessive filesystem operations during imports. - -- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some - operations on signed longs that are formally undefined by C. - Unfortunately, at least one compiler now cares about that, so complicated - the code to make that compiler happy again. - -- Bug #1524310: Properly report errors from FindNextFile in os.listdir. - -- Patch #1232023: Stop including current directory in search - path on Windows. - -- Fix some potential crashes found with failmalloc. - -- Fix warnings reported by Klocwork's static analysis tool. - -- Bug #1512814, Fix incorrect lineno's when code within a function - had more than 255 blank lines. - -- Patch #1521179: Python now accepts the standard options ``--help`` and - ``--version`` as well as ``/?`` on Windows. - -- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works - again. Fixing this problem required changing the .pyc magic number. - This means that .pyc files generated before 2.5b3 will be regenerated. - -- Bug #1524317: Compiling Python ``--without-threads`` failed. - The Python core compiles again, and, in a build without threads, the - new ``sys._current_frames()`` returns a dictionary with one entry, - mapping the faux "thread id" 0 to the current frame. - -- Bug #1525447: build on MacOS X on a case-sensitive filesystem. - - -Library -------- - -- Fix #1693149. Now you can pass several modules separated by - comma to trace.py in the same --ignore-module option. - -- Correction of patch #1455898: In the mbcs decoder, set final=False - for stream decoder, but final=True for the decode function. - -- os.urandom no longer masks unrelated exceptions like SystemExit or - KeyboardInterrupt. - -- Bug #1525866: Don't copy directory stat times in - shutil.copytree on Windows - -- Bug #1002398: The documentation for os.path.sameopenfile now correctly - refers to file descriptors, not file objects. - -- The renaming of the xml package to xmlcore, and the import hackery done - to make it appear at both names, has been removed. Bug #1511497, - #1513611, and probably others. - -- Bug #1441397: The compiler module now recognizes module and function - docstrings correctly as it did in Python 2.4. - -- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally - lost that tests are sorted by name before being run. This rarely - matters for well-written tests, but can create baffling symptoms if - side effects from one test to the next affect outcomes. ``DocTestFinder`` - has been changed to sort the list of tests it returns. - -- The distutils version has been changed to 2.5.0, and is now kept - in sync with sys.version_info[:3]. - -- Bug #978833: Really close underlying socket in _socketobject.close. - -- Bug #1459963: urllib and urllib2 now normalize HTTP header names with - title(). - -- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback - to recursive calls and call it with the failing package name. - -- Bug #1525817: Don't truncate short lines in IDLE's tool tips. - -- Patch #1515343: Fix printing of deprecated string exceptions with a - value in the traceback module. - -- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. - -- Patch #1524429: Use repr() instead of backticks in Tkinter again. - -- Bug #1520914: Change time.strftime() to accept a zero for any position in its - argument tuple. For arguments where zero is illegal, the value is forced to - the minimum value that is correct. This is to support an undocumented but - common way people used to fill in inconsequential information in the time - tuple pre-2.4. - -- Patch #1220874: Update the binhex module for Mach-O. - -- The email package has improved RFC 2231 support, specifically for - recognizing the difference between encoded (name*0*=) and non-encoded - (name*0=) parameter continuations. This may change the types of - values returned from email.message.Message.get_param() and friends. - Specifically in some cases where non-encoded continuations were used, - get_param() used to return a 3-tuple of (None, None, string) whereas now it - will just return the string (since non-encoded continuations don't have - charset and language parts). - - Also, whereas % values were decoded in all parameter continuations, they are - now only decoded in encoded parameter parts. - -- Bug #1517990: IDLE keybindings on MacOS X now work correctly - -- Bug #1517996: IDLE now longer shows the default Tk menu when a - path browser, class browser or debugger is the frontmost window on MacOS X - -- Patch #1520294: Support for getset and member descriptors in types.py, - inspect.py, and pydoc.py. Specifically, this allows for querying the type - of an object against these built-in types and more importantly, for getting - their docstrings printed in the interactive interpreter's help() function. - - -Extension Modules ------------------ - -- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during - a socket operation on a socket with a timeout, the exception will be - caught correctly. Previously, the exception was not caught. - -- Patch #1529514: The _ctypes extension is now compiled on more - openbsd target platforms. - -- The ``__reduce__()`` method of the new ``collections.defaultdict`` had - a memory leak, affecting pickles and deep copies. - -- Bug #1471938: Fix curses module build problem on Solaris 8; patch by - Paul Eggert. - -- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. - -- Patch #1521817: Index range checking on ctypes arrays containing - exactly one element enabled again. This allows iterating over these - arrays, without the need to check the array size before. - -- Bug #1521375: When the code in ctypes.util.find_library was - run with root privileges, it could overwrite or delete - /dev/null in certain cases; this is now fixed. - -- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the - default mode for loading shared libraries in ctypes. - -- Because of a misspelled preprocessor symbol, ctypes was always - compiled without thread support; this is now fixed. - -- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename - methods now allow their database parameter to be None as the - sleepycat API allows. - -- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different - bluetooth API compared with Linux and FreeBSD. - -Tests ------ - -- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of - how long the test file should take to play. Now accepts taking 2.93 secs - (exact time) +/- 10% instead of the hard-coded 3.1 sec. - -- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, - ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when - run via ``regrtest.py``. Now they do. - -Build ------ - -- Bug #1439538: Drop usage of test -e in configure as it is not portable. - -Mac ---- - -- PythonLauncher now works correctly when the path to the script contains - characters that are treated specially by the shell (such as quotes). - -- Bug #1527397: PythonLauncher now launches scripts with the working directory - set to the directory that contains the script instead of the user home - directory. That latter was an implementation accident and not what users - expect. - - -What's New in Python 2.5 beta 2? -================================ - -*Release date: 11-JUL-2006* - -Core and builtins ------------------ - -- Bug #1441486: The literal representation of -(sys.maxint - 1) - again evaluates to a int object, not a long. - -- Bug #1501934: The scope of global variables that are locally assigned - using augmented assignment is now correctly determined. - -- Bug #927248: Recursive method-wrapper objects can now safely - be released. - -- Bug #1417699: Reject locale-specific decimal point in float() - and atof(). - -- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to - omit a default "error" argument for NULL pointer. This allows - the parser to take a codec from cjkcodecs again. - -- Bug #1519018: 'as' is now validated properly in import statements. - -- On 64 bit systems, int literals that use less than 64 bits are - now ints rather than longs. - -- Bug #1512814, Fix incorrect lineno's when code at module scope - started after line 256. - -- New function ``sys._current_frames()`` returns a dict mapping thread - id to topmost thread stack frame. This is for expert use, and is - especially useful for debugging application deadlocks. The functionality - was previously available in Fazal Majid's ``threadframe`` extension - module, but it wasn't possible to do this in a wholly threadsafe way from - an extension. - -Library -------- - -- Bug #1257728: Mention Cygwin in distutils error message about a missing - VS 2003. - -- Patch #1519566: Update turtle demo, make begin_fill idempotent. - -- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK - environment variable to be set in order to the SDK environment - for finding the compiler, include files, etc. - -- Bug #1515998: Properly generate logical ids for files in bdist_msi. - -- warnings.py now ignores ImportWarning by default - -- string.Template() now correctly handles tuple-values. Previously, - multi-value tuples would raise an exception and single-value tuples would - be treated as the value they contain, instead. - -- Bug #822974: Honor timeout in telnetlib.{expect,read_until} - even if some data are received. - -- Bug #1267547: Put proper recursive setup.py call into the - spec file generated by bdist_rpm. - -- Bug #1514693: Update turtle's heading when switching between - degrees and radians. - -- Reimplement turtle.circle using a polyline, to allow correct - filling of arcs. - -- Bug #1514703: Only setup canvas window in turtle when the canvas - is created. - -- Bug #1513223: .close() of a _socketobj now releases the underlying - socket again, which then gets closed as it becomes unreferenced. - -- Bug #1504333: Make sgmllib support angle brackets in quoted - attribute values. - -- Bug #853506: Fix IPv6 address parsing in unquoted attributes in - sgmllib ('[' and ']' were not accepted). - -- Fix a bug in the turtle module's end_fill function. - -- Bug #1510580: The 'warnings' module improperly required that a Warning - category be either a types.ClassType and a subclass of Warning. The proper - check is just that it is a subclass with Warning as the documentation states. - -- The compiler module now correctly compiles the new try-except-finally - statement (bug #1509132). - -- The wsgiref package is now installed properly on Unix. - -- A bug was fixed in logging.config.fileConfig() which caused a crash on - shutdown when fileConfig() was called multiple times. - -- The sqlite3 module did cut off data from the SQLite database at the first - null character before sending it to a custom converter. This has been fixed - now. - -Extension Modules ------------------ - -- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This - means that select() on sockets > FD_SETSIZE (typically 1024) work again. - The patch makes sockets use poll() internally where available. - -- Assigning None to pointer type fields in ctypes structures possible - overwrote the wrong fields, this is fixed now. - -- Fixed a segfault in _ctypes when ctypes.wintypes were imported - on non-Windows platforms. - -- Bug #1518190: The ctypes.c_void_p constructor now accepts any - integer or long, without range checking. - -- Patch #1517790: It is now possible to use custom objects in the ctypes - foreign function argtypes sequence as long as they provide a from_param - method, no longer is it required that the object is a ctypes type. - -- The '_ctypes' extension module now works when Python is configured - with the --without-threads option. - -- Bug #1513646: os.access on Windows now correctly determines write - access, again. - -- Bug #1512695: cPickle.loads could crash if it was interrupted with - a KeyboardInterrupt. - -- Bug #1296433: parsing XML with a non-default encoding and - a CharacterDataHandler could crash the interpreter in pyexpat. - -- Patch #1516912: improve Modules support for OpenVMS. - -Build ------ - -- Automate Windows build process for the Win64 SSL module. - -- 'configure' now detects the zlib library the same way as distutils. - Previously, the slight difference could cause compilation errors of the - 'zlib' module on systems with more than one version of zlib. - -- The MSI compileall step was fixed to also support a TARGETDIR - with spaces in it. - -- Bug #1517388: sqlite3.dll is now installed on Windows independent - of Tcl/Tk. - -- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old - trying to be installed even though it's empty. - -Tests ------ - -- Call os.waitpid() at the end of tests that spawn child processes in order - to minimize resources (zombies). - -Documentation -------------- - -- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the - documentation for the warnings module. - -- Patch #1509163: MS Toolkit Compiler no longer available. - -- Patch #1504046: Add documentation for xml.etree. - - -What's New in Python 2.5 beta 1? -================================ - -*Release date: 20-JUN-2006* - -Core and builtins ------------------ - -- Patch #1507676: Error messages returned by invalid abstract object operations - (such as iterating over an integer) have been improved and now include the - type of the offending object to help with debugging. - -- Bug #992017: A classic class that defined a __coerce__() method that returned - its arguments swapped would infinitely recurse and segfault the interpreter. - -- Fix the socket tests so they can be run concurrently. - -- Removed 5 integers from C frame objects (PyFrameObject). - f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. - -- Bug #532646: object.__call__() will continue looking for the __call__ - attribute on objects until one without one is found. This leads to recursion - when you take a class and set its __call__ attribute to an instance of the - class. Originally fixed for classic classes, but this fix is for new-style. - Removes the infinite_rec_3 crasher. - -- The string and unicode methods startswith() and endswith() now accept - a tuple of prefixes/suffixes to look for. Implements RFE #1491485. - -- Buffer objects, at the C level, never used the char buffer - implementation even when the char buffer for the wrapped object was - explicitly requested (originally returned the read or write buffer). - Now a TypeError is raised if the char buffer is not present but is - requested. - -- Patch #1346214: Statements like "if 0: suite" are now again optimized - away like they were in Python 2.4. - -- Builtin exceptions are now full-blown new-style classes instead of - instances pretending to be classes, which speeds up exception handling - by about 80% in comparison to 2.5a2. - -- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to - Unicode 4.1. - -- Patch #921466: sys.path_importer_cache is now used to cache valid and - invalid file paths for the built-in import machinery which leads to - fewer open calls on startup. - -- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- - of-2 bases. The largest speedup is for inputs with about 1000 decimal - digits. Conversion from non-power-of-2 bases remains quadratic-time in - the number of input digits (it was and remains linear-time for bases - 2, 4, 8, 16 and 32). - -- Bug #1334662: ``int(string, base)`` could deliver a wrong answer - when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented - an integer close to ``sys.maxint``. This was repaired by patch - #1335972, which also gives a nice speedup. - -- Patch #1337051: reduced size of frame objects. - -- PyErr_NewException now accepts a tuple of base classes as its - "base" parameter. - -- Patch #876206: function call speedup by retaining allocated frame - objects. - -- Bug #1462152: file() now checks more thoroughly for invalid mode - strings and removes a possible "U" before passing the mode to the - C library function. - -- Patch #1488312, Fix memory alignment problem on SPARC in unicode - -- Bug #1487966: Fix SystemError with conditional expression in assignment - -- WindowsError now has two error code attributes: errno, which carries - the error values from errno.h, and winerror, which carries the error - values from winerror.h. Previous versions put the winerror.h values - (from GetLastError()) into the errno attribute. - -- Patch #1475845: Raise IndentationError for unexpected indent. - -- Patch #1479181: split open() and file() from being aliases for each other. - -- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` - methods were always silently ignored by dictionaries when comparing keys. - They are now passed through (except when using the C API function - ``PyDict_GetItem()``, whose semantics did not change). - -- Bug #1456209: In some obscure cases it was possible for a class with a - custom ``__eq__()`` method to confuse dict internals when class instances - were used as a dict's keys and the ``__eq__()`` method mutated the dict. - No, you don't have any code that did this ;-) - -Extension Modules ------------------ - -- Bug #1295808: expat symbols should be namespaced in pyexpat - -- Patch #1462338: Upgrade pyexpat to expat 2.0.0 - -- Change binascii.hexlify to accept a read-only buffer instead of only a char - buffer and actually follow its documentation. - -- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. - -- Patch #1478788 (modified version): The functional extension module has - been renamed to _functools and a functools Python wrapper module added. - This provides a home for additional function related utilities that are - not specifically about functional programming. See PEP 309. - -- Patch #1493701: performance enhancements for struct module. - -- Patch #1490224: time.altzone is now set correctly on Cygwin. - -- Patch #1435422: zlib's compress and decompress objects now have a - copy() method. - -- Patch #1454481: thread stack size is now tunable at runtime for thread - enabled builds on Windows and systems with Posix threads support. - -- On Win32, os.listdir now supports arbitrarily-long Unicode path names - (up to the system limit of 32K characters). - -- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. - As a result, these functions now raise WindowsError instead of OSError. - -- ``time.clock()`` on Win64 should use the high-performance Windows - ``QueryPerformanceCounter()`` now (as was already the case on 32-bit - Windows platforms). - -- Calling Tk_Init twice is refused if the first call failed as that - may deadlock. - -- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to - accept it without potentially using an uninitialized pointer. - -- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods - assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF - patch numbers 1494885 and 1494902] - -- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. - [pybsddb project SF patch number 1466734] - -- bsddb: fix DBCursor.pget() bug with keyword argument names when no data - parameter is supplied. [SF pybsddb bug #1477863] - -- bsddb: the __len__ method of a DB object has been fixed to return correct - results. It could previously incorrectly return 0 in some cases. - Fixes SF bug 1493322 (pybsddb bug 1184012). - -- bsddb: the bsddb.dbtables Modify method now raises the proper error and - aborts the db transaction safely when a modifier callback fails. - Fixes SF python patch/bug #1408584. - -- bsddb: multithreaded DB access using the simple bsddb module interface - now works reliably. It has been updated to use automatic BerkeleyDB - deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry - database calls that would previously deadlock. [SF python bug #775414] - -- Patch #1446489: add support for the ZIP64 extensions to zipfile. - -- Patch #1506645: add Python wrappers for the curses functions - is_term_resized, resize_term and resizeterm. - -Library -------- - -- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox - functions. - -- Patch #812986: Update turtle output even if not tracing. - -- Patch #1494750: Destroy master after deleting children in - Tkinter.BaseWidget. - -- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. - -- Patch #763580: Add name and value arguments to Tkinter variable - classes. - -- Bug #1117556: SimpleHTTPServer now tries to find and use the system's - mime.types file for determining MIME types. - -- Bug #1339007: Shelf objects now don't raise an exception in their - __del__ method when initialization failed. - -- Patch #1455898: The MBCS codec now supports the incremental mode for - double-byte encodings. - -- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to - guarantee that adjacent triples in the return list always describe - non-adjacent blocks. Previously, a pair of matching blocks could end - up being described by multiple adjacent triples that formed a partition - of the matching pair. - -- Bug #1498146: fix optparse to handle Unicode strings in option help, - description, and epilog. - -- Bug #1366250: minor optparse documentation error. - -- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; - clarify docs. - -- The wsgiref package has been added to the standard library. - -- The functions update_wrapper() and wraps() have been added to the functools - module. These make it easier to copy relevant metadata from the original - function when writing wrapper functions. - -- The optional ``isprivate`` argument to ``doctest.testmod()``, and the - ``doctest.is_private()`` function, both deprecated in 2.4, were removed. - -- Patch #1359618: Speed up charmap encoder by using a trie structure - for lookup. - -- The functions in the ``pprint`` module now sort dictionaries by key - before computing the display. Before 2.5, ``pprint`` sorted a dictionary - if and only if its display required more than one line, although that - wasn't documented. The new behavior increases predictability; e.g., - using ``pprint.pprint(a_dict)`` in a doctest is now reliable. - -- Patch #1497027: try HTTP digest auth before basic auth in urllib2 - (thanks for J. J. Lee). - -- Patch #1496206: improve urllib2 handling of passwords with respect to - default HTTP and HTTPS ports. - -- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. - -- Patch #1281707: speed up gzip.readline. - -- Patch #1180296: Two new functions were added to the locale module: - format_string() to get the effect of "format % items" but locale-aware, - and currency() to format a monetary number with currency sign. - -- Patch #1486962: Several bugs in the turtle Tk demo module were fixed - and several features added, such as speed and geometry control. - -- Patch #1488881: add support for external file objects in bz2 compressed - tarfiles. - -- Patch #721464: pdb.Pdb instances can now be given explicit stdin and - stdout arguments, making it possible to redirect input and output - for remote debugging. - -- Patch #1484695: Update the tarfile module to version 0.8. This fixes - a couple of issues, notably handling of long file names using the - GNU LONGNAME extension. - -- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a - new flag when ``name`` is already the name of an option flag. - -- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler - package. - -- Patch #1472854: make the rlcompleter.Completer class usable on non- - UNIX platforms. - -- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. - -- Bug #1472827: correctly escape newlines and tabs in attribute values in - the saxutils.XMLGenerator class. - - -Build ------ - -- Bug #1502728: Correctly link against librt library on HP-UX. - -- OpenBSD 3.9 is supported now. - -- Patch #1492356: Port to Windows CE. - -- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. - -- Patch #1471883: Add --enable-universalsdk. - -C API ------ - -Tests ------ - -Tools ------ - -Documentation -------------- - - - -What's New in Python 2.5 alpha 2? -================================= - -*Release date: 27-APR-2006* - -Core and builtins ------------------ - -- Bug #1465834: 'bdist_wininst preinstall script support' was fixed - by converting these apis from macros into exported functions again: - - PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile - PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx - PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne - PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString - PyRun_String Py_CompileString - -- Under COUNT_ALLOCS, types are not necessarily immortal anymore. - -- All uses of PyStructSequence_InitType have been changed to initialize - the type objects only once, even if the interpreter is initialized - multiple times. - -- Bug #1454485, array.array('u') could crash the interpreter. This was - due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) - to unicode when it didn't make sense. 'u#' now requires a unicode string. - -- Py_UNICODE is unsigned. It was always documented as unsigned, but - due to a bug had a signed value in previous versions. - -- Patch #837242: ``id()`` of any Python object always gives a positive - number now, which might be a long integer. ``PyLong_FromVoidPtr`` and - ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has - never been correct to implement a ``__hash()__`` method that returns the - ``id()`` of an object: - - def __hash__(self): - return id(self) # WRONG - - because a hash result must be a (short) Python int but it was always - possible for ``id()`` to return a Python long. However, because ``id()`` - could return negative values before, on a 32-bit box an ``id()`` result - was always usable as a hash value before this patch. That's no longer - necessarily so. - -- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) - to load extension modules and now provides the dl module. As a result, - sys.setdlopenflags() now works correctly on these systems. (SF patch - #1454844) - -- Patch #1463867: enhanced garbage collection to allow cleanup of cycles - involving generators that have paused outside of any ``try`` or ``with`` - blocks. (In 2.5a1, a paused generator that was part of a reference - cycle could not be garbage collected, regardless of whether it was - paused in a ``try`` or ``with`` block.) - -Extension Modules ------------------ - -- Patch #1191065: Fix preprocessor problems on systems where recvfrom - is a macro. - -- Bug #1467952: os.listdir() now correctly raises an error if readdir() - fails with an error condition. - -- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. - -- Bug #1117761: bsddb.*open() no longer raises an exception when using - the cachesize parameter. - -- Bug #1149413: bsddb.*open() no longer raises an exception when using - a temporary db (file=None) with the 'n' flag to truncate on open. - -- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 - as older versions cause excessive test failures. - -- Patch #1062014: AF_UNIX sockets under Linux have a special - abstract namespace that is now fully supported. - -Library -------- - -- Bug #1223937: subprocess.CalledProcessError reports the exit status - of the process using the returncode attribute, instead of - abusing errno. - -- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes - a doctest to be skipped (the code is not run, and the expected output - or exception is ignored). - -- Fixed contextlib.nested to cope with exceptions being raised and - caught inside exit handlers. - -- Updated optparse module to Optik 1.5.1 (allow numeric constants in - hex, octal, or binary; add ``append_const`` action; keep going if - gettext cannot be imported; added ``OptionParser.destroy()`` method; - added ``epilog`` for better help generation). - -- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when - called from a thread spawned as a side effect of importing a module. - -- The pydoc module now supports documenting packages contained in - .zip or .egg files. - -- The pkgutil module now has several new utility functions, such - as ``walk_packages()`` to support working with packages that are either - in the filesystem or zip files. - -- The mailbox module can now modify and delete messages from - mailboxes, in addition to simply reading them. Thanks to Gregory - K. Johnson for writing the code, and to the 2005 Google Summer of - Code for funding his work. - -- The ``__del__`` method of class ``local`` in module ``_threading_local`` - returned before accomplishing any of its intended cleanup. - -- Patch #790710: Add breakpoint command lists in pdb. - -- Patch #1063914: Add Tkinter.Misc.clipboard_get(). - -- Patch #1191700: Adjust column alignment in bdb breakpoint lists. - -- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on - Windows. Bug #1469163. - -- The warnings, linecache, inspect, traceback, site, and doctest modules - were updated to work correctly with modules imported from zipfiles or - via other PEP 302 __loader__ objects. - -- Patch #1467770: Reduce usage of subprocess._active to processes which - the application hasn't waited on. - -- Patch #1462222: Fix Tix.Grid. - -- Fix exception when doing glob.glob('anything*/') - -- The pstats.Stats class accepts an optional stream keyword argument to - direct output to an alternate file-like object. - -Build ------ - -- The Makefile now has a reindent target, which runs reindent.py on - the library. - -- Patch #1470875: Building Python with MS Free Compiler - -- Patch #1161914: Add a python-config script. - -- Patch #1324762:Remove ccpython.cc; replace --with-cxx with - --with-cxx-main. Link with C++ compiler only if --with-cxx-main was - specified. (Can be overridden by explicitly setting LINKCC.) Decouple - CXX from --with-cxx-main, see description in README. - -- Patch #1429775: Link extension modules with the shared libpython. - -- Fixed a libffi build problem on MIPS systems. - -- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` - now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, - and "%zu" for unsigned integers of type ``size_t``. - -Tests ------ - -- test_contextlib now checks contextlib.nested can cope with exceptions - being raised and caught inside exit handlers. - -- test_cmd_line now checks operation of the -m and -c command switches - -- The test_contextlib test in 2.5a1 wasn't actually run unless you ran - it separately and by hand. It also wasn't cleaning up its changes to - the current Decimal context. - -- regrtest.py now has a -M option to run tests that test the new limits of - containers, on 64-bit architectures. Running these tests is only sensible - on 64-bit machines with more than two gigabytes of memory. The argument - passed is the maximum amount of memory for the tests to use. - -Tools ------ - -- Added the Python benchmark suite pybench to the Tools/ directory; - contributed by Marc-Andre Lemburg. - -Documentation -------------- - -- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. - -- PEP 343: Added Context Types section to the library reference - and attempted to bring other PEP 343 related documentation into - line with the implementation and/or python-dev discussions. - -- Bug #1337990: clarified that ``doctest`` does not support examples - requiring both expected output and an exception. - - -What's New in Python 2.5 alpha 1? -================================= - -*Release date: 05-APR-2006* - -Core and builtins ------------------ - -- PEP 338: -m command line switch now delegates to runpy.run_module - allowing it to support modules in packages and zipfiles - -- On Windows, .DLL is not an accepted file name extension for - extension modules anymore; extensions are only found if they - end in .PYD. - -- Bug #1421664: sys.stderr.encoding is now set to the same value as - sys.stdout.encoding. - -- __import__ accepts keyword arguments. - -- Patch #1460496: round() now accepts keyword arguments. - -- Fixed bug #1459029 - unicode reprs were double-escaped. - -- Patch #1396919: The system scope threads are reenabled on FreeBSD - 5.4 and later versions. - -- Bug #1115379: Compiling a Unicode string with an encoding declaration - now gives a SyntaxError. - -- Previously, Python code had no easy way to access the contents of a - cell object. Now, a ``cell_contents`` attribute has been added - (closes patch #1170323). - -- Patch #1123430: Python's small-object allocator now returns an arena to - the system ``free()`` when all memory within an arena becomes unused - again. Prior to Python 2.5, arenas (256KB chunks of memory) were never - freed. Some applications will see a drop in virtual memory size now, - especially long-running applications that, from time to time, temporarily - use a large number of small objects. Note that when Python returns an - arena to the platform C's ``free()``, there's no guarantee that the - platform C library will in turn return that memory to the operating system. - The effect of the patch is to stop making that impossible, and in tests it - appears to be effective at least on Microsoft C and gcc-based systems. - Thanks to Evan Jones for hard work and patience. - -- Patch #1434038: property() now uses the getter's docstring if there is - no "doc" argument given. This makes it possible to legitimately use - property() as a decorator to produce a read-only property. - -- PEP 357, patch 1436368: add an __index__ method to int/long and a matching - nb_index slot to the PyNumberMethods struct. The slot is consulted instead - of requiring an int or long in slicing and a few other contexts, enabling - other objects (e.g. Numeric Python's integers) to be used as slice indices. - -- Fixed various bugs reported by Coverity's Prevent tool. - -- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the - new exception base class, BaseException, which has a new message attribute. - KeyboardInterrupt and SystemExit to directly inherit from BaseException now. - Raising a string exception now raises a DeprecationWarning. - -- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be - explicitly relative, using 'from .module import name' to mean 'from the same - package as this module is in. Imports without dots still default to the - old relative-then-absolute, unless 'from __future__ import - absolute_import' is used. - -- Properly check if 'warnings' raises an exception (usually when a filter set - to "error" is triggered) when raising a warning for raising string - exceptions. - -- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. - The name was removed from Include/code.h. - -- PEP 308: conditional expressions were added: (x if cond else y). - -- Patch 1433928: - - The copy module now "copies" function objects (as atomic objects). - - dict.__getitem__ now looks for a __missing__ hook before raising - KeyError. - -- PEP 343: with statement implemented. Needs ``from __future__ import - with_statement``. Use of 'with' as a variable will generate a warning. - Use of 'as' as a variable will also generate a warning (unless it's - part of an import statement). - The following objects have __context__ methods: - - The built-in file type. - - The thread.LockType type. - - The following types defined by the threading module: - Lock, RLock, Condition, Semaphore, BoundedSemaphore. - - The decimal.Context class. - -- Fix the encodings package codec search function to only search - inside its own package. Fixes problem reported in patch #1433198. - - Note: Codec packages should implement and register their own - codec search function. PEP 100 has the details. - -- PEP 353: Using ``Py_ssize_t`` as the index type. - -- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging - info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) - now allow Python to make use of memory blocks exceeding 2**32 bytes for - some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited - to 4-byte allocations before. - -- Patch #1400181, fix unicode string formatting to not use the locale. - This is how string objects work. u'%f' could use , instead of . - for the decimal point. Now both strings and unicode always use periods. - -- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. - configure would break checking curses.h. - -- Bug #959576: The pwd module is now builtin. This allows Python to be - built on UNIX platforms without $HOME set. - -- Bug #1072182, fix some potential problems if characters are signed. - -- Bug #889500, fix line number on SyntaxWarning for global declarations. - -- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. - -- Support for converting hex strings to floats no longer works. - This was not portable. float('0x3') now raises a ValueError. - -- Patch #1382163: Expose Subversion revision number to Python. New C API - function Py_GetBuildNumber(). New attribute sys.subversion. Build number - is now displayed in interactive prompt banner. - -- Implementation of PEP 341 - Unification of try/except and try/finally. - "except" clauses can now be written together with a "finally" clause in - one try statement instead of two nested ones. Patch #1355913. - -- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec - now encodes backslash correctly. - -- Patch #1350409: Work around signal handling bug in Visual Studio 2005. - -- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs - and long longs. - -- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" - It was possible for dlerror() to return a NULL pointer, so - it will now use a default error message in this case. - -- Replaced most Unicode charmap codecs with new ones using the - new Unicode translate string feature in the builtin charmap - codec; the codecs were created from the mapping tables available - at ftp.unicode.org and contain a few updates (e.g. the Mac OS - encodings now include a mapping for the Apple logo) - -- Added a few more codecs for Mac OS encodings - -- Sped up some Unicode operations. - -- A new AST parser implementation was completed. The abstract - syntax tree is available for read-only (non-compile) access - to Python code; an _ast module was added. - -- SF bug #1167751: fix incorrect code being produced for generator expressions. - The following code now raises a SyntaxError: foo(a = i for i in range(10)) - -- SF Bug #976608: fix SystemError when mtime of an imported file is -1. - -- SF Bug #887946: fix segfault when redirecting stdin from a directory. - Provide a warning when a directory is passed on the command line. - -- Fix segfault with invalid coding. - -- SF bug #772896: unknown encoding results in MemoryError. - -- All iterators now have a Boolean value of True. Formerly, some iterators - supported a __len__() method which evaluated to False when the iterator - was empty. - -- On 64-bit platforms, when __len__() returns a value that cannot be - represented as a C int, raise OverflowError. - -- test__locale is skipped on OS X < 10.4 (only partial locale support is - present). - -- SF bug #893549: parsing keyword arguments was broken with a few format - codes. - -- Changes donated by Elemental Security to make it work on AIX 5.3 - with IBM's 64-bit compiler (SF patch #1284289). This also closes SF - bug #105470: test_pwd fails on 64bit system (Opteron). - -- Changes donated by Elemental Security to make it work on HP-UX 11 on - Itanium2 with HP's 64-bit compiler (SF patch #1225212). - -- Disallow keyword arguments for type constructors that don't use them - (fixes bug #1119418). - -- Forward UnicodeDecodeError into SyntaxError for source encoding errors. - -- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for - exceptions that cause a function to exit. - -- The implementation of set() and frozenset() was revised to use its - own internal data structure. Memory consumption is reduced by 1/3 - and there are modest speed-ups as well. The API is unchanged. - -- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). - -- SF bug #1229429: PyObject_CallMethod failed to decrement some - reference counts in some error exit cases. - -- SF bug #1185883: Python's small-object memory allocator took over - a block managed by the platform C library whenever a realloc specified - a small new size. However, there's no portable way to know then how - much of the address space following the pointer is valid, so there's no - portable way to copy data from the C-managed block into Python's - small-object space without risking a memory fault. Python's small-object - realloc now leaves such blocks under the control of the platform C - realloc. - -- SF bug #1232517: An overflow error was not detected properly when - attempting to convert a large float to an int in os.utime(). - -- SF bug #1224347: hex longs now print with lowercase letters just - like their int counterparts. - -- SF bug #1163563: the original fix for bug #1010677 ("thread Module - Breaks PyGILState_Ensure()") broke badly in the case of multiple - interpreter states; back out that fix and do a better job (see - http://mail.python.org/pipermail/python-dev/2005-June/054258.html - for a longer write-up of the problem). - -- SF patch #1180995: marshal now uses a binary format by default when - serializing floats. - -- SF patch #1181301: on platforms that appear to use IEEE 754 floats, - the routines that promise to produce IEEE 754 binary representations - of floats now simply copy bytes around. - -- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP - 278. - -- patch #1109424: int, long, float, complex, and unicode now check for the - proper magic slot for type conversions when subclassed. Previously the - magic slot was ignored during conversion. Semantics now match the way - subclasses of str always behaved. int/long/float, conversion of an instance - to the base class has been moved to the proper nb_* magic slot and out of - PyNumber_*(). - Thanks Walter D?rwald. - -- Descriptors defined in C with a PyGetSetDef structure, where the setter is - NULL, now raise an AttributeError when attempting to set or delete the - attribute. Previously a TypeError was raised, but this was inconsistent - with the equivalent pure-Python implementation. - -- It is now safe to call PyGILState_Release() before - PyEval_InitThreads() (note that if there is reason to believe there - are multiple threads around you still must call PyEval_InitThreads() - before using the Python API; this fix is for extension modules that - have no way of knowing if Python is multi-threaded yet). - -- Typing Ctrl-C whilst raw_input() was waiting in a build with threads - disabled caused a crash. - -- Bug #1165306: instancemethod_new allowed the creation of a method - with im_class == im_self == NULL, which caused a crash when called. - -- Move exception finalisation later in the shutdown process - this - fixes the crash seen in bug #1165761 - -- Added two new builtins, any() and all(). - -- Defining a class with empty parentheses is now allowed - (e.g., ``class C(): pass`` is no longer a syntax error). - Patch #1176012 added support to the 'parser' module and 'compiler' package - (thanks to logistix for that added support). - -- Patch #1115086: Support PY_LONGLONG in structmember. - -- Bug #1155938: new style classes did not check that __init__() was - returning None. - -- Patch #802188: Report characters after line continuation character - ('\') with a specific error message. - -- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. - -- Bug #1124295: the __name__ attribute of file objects was - inadvertently made inaccessible in restricted mode. - -- Bug #1074011: closing sys.std{out,err} now causes a flush() and - an ferror() call. - -- min() and max() now support key= arguments with the same meaning as in - list.sort(). - -- The peephole optimizer now performs simple constant folding in expressions: - (2+3) --> (5). - -- set and frozenset objects can now be marshalled. SF #1098985. - -- Bug #1077106: Poor argument checking could cause memory corruption - in calls to os.read(). - -- The parser did not complain about future statements in illegal - positions. It once again reports a syntax error if a future - statement occurs after anything other than a doc string. - -- Change the %s format specifier for str objects so that it returns a - unicode instance if the argument is not an instance of basestring and - calling __str__ on the argument returns a unicode instance. - -- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the - current thread state when the auto-GIL-state machinery knows about - it (since the thread state is being deleted, continuing to remember it - can't help, but can hurt if another thread happens to get created with - the same thread id). - -Extension Modules ------------------ - -- Patch #1380952: fix SSL objects timing out on consecutive read()s - -- Patch #1309579: wait3 and wait4 were added to the posix module. - -- Patch #1231053: The audioop module now supports encoding/decoding of alaw. - In addition, the existing ulaw code was updated. - -- RFE #567972: Socket objects' family, type and proto properties are - now exposed via new attributes. - -- Everything under lib-old was removed. This includes the following modules: - Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, - lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, - util, whatsound, whrandom, zmod - -- The following modules were removed: regsub, reconvert, regex, regex_syntax. - -- re and sre were swapped, so help(re) provides full help. importing sre - is deprecated. The undocumented re.engine variable no longer exists. - -- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle - SS2 (single-shift 2) escape sequences correctly. - -- The unicodedata module was updated to the 4.1 version of the Unicode - database. The 3.2 version is still available as unicodedata.db_3_2_0 - for applications that require this specific version (such as IDNA). - -- The timing module is no longer built by default. It was deprecated - in PEP 4 in Python 2.0 or earlier. - -- Patch 1433928: Added a new type, defaultdict, to the collections module. - This uses the new __missing__ hook behavior added to dict (see above). - -- Bug #854823: socketmodule now builds on Sun platforms even when - INET_ADDRSTRLEN is not defined. - -- Patch #1393157: os.startfile() now has an optional argument to specify - a "command verb" to invoke on the file. - -- Bug #876637, prevent stack corruption when socket descriptor - is larger than FD_SETSIZE. - -- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. - mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. - mmap.mmap(0, size) should not be used on Windows for anonymous memory. - -- Patch #1422385: The nis module now supports access to domains other - than the system default domain. - -- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps - are reported, the limit on path name lengths is removed, and stat reports - WindowsError now (instead of OSError). - -- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. - -- Bug #1413192, fix seg fault in bsddb if a transaction was deleted - before the env. - -- Patch #1103116: Basic AF_NETLINK support. - -- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) - -- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. - Also fix ungetmouse() which did not accept arguments properly. - The code now conforms to the documented signature. - -- Bug #1400115, Fix segfault when calling curses.panel.userptr() - without prior setting of the userptr. - -- Fix 64-bit problems in bsddb. - -- Patch #1365916: fix some unsafe 64-bit mmap methods. - -- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build - problem on AIX. - -- Bug #869197: os.setgroups rejects long integer arguments - -- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint - -- Bug #1344508, Fix UNIX mmap leaking file descriptors - -- Patch #1338314, Bug #1336623: fix tarfile so it can extract - REGTYPE directories from tarfiles written by old programs. - -- Patch #1407992, fixes broken bsddb module db associate when using - BerkeleyDB 3.3, 4.0 or 4.1. - -- Get bsddb module to build with BerkeleyDB version 4.4 - -- Get bsddb module to build with BerkeleyDB version 3.2 - -- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, - but Python incorrectly assumes it is in UTF-8 format - -- Fix parse errors in the readline module when compiling without threads. - -- Patch #1288833: Removed thread lock from socket.getaddrinfo on - FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). - -- Patches #1298449 and #1298499: Add some missing checks for error - returns in cStringIO.c. - -- Patch #1297028: fix segfault if call type on MultibyteCodec, - MultibyteStreamReader, or MultibyteStreamWriter - -- Fix memory leak in posix.access(). - -- Patch #1213831: Fix typo in unicodedata._getcode. - -- Bug #1007046: os.startfile() did not accept unicode strings encoded in - the file system encoding. - -- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for - platforms that don't have inet_aton(). - -- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. - -- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one - line without newlines. - -- Bug #728515: mmap.resize() now resizes the file on Unix as it did - on Windows. - -- Patch #1180695: Add nanosecond stat resolution, and st_gen, - st_birthtime for FreeBSD. - -- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for - the request code argument, which results in more C-like behaviour - for large or negative values. - -- Bug #1234979: For the argument of thread.Lock.acquire, the Windows - implementation treated all integer values except 1 as false. - -- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. - -- Patch #1212117: os.stat().st_flags is now accessible as a attribute - if available on the platform. - -- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if - available on the platform. - -- Bug #1166660: The readline module could segfault if hook functions - were set in a different thread than that which called readline. - -- collections.deque objects now support a remove() method. - -- operator.itemgetter() and operator.attrgetter() now support retrieving - multiple fields. This provides direct support for sorting on multiple - keys (primary, secondary, etc). - -- os.access now supports Unicode path names on non-Win32 systems. - -- Patches #925152, #1118602: Avoid reading after the end of the buffer - in pyexpat.GetInputContext. - -- Patches #749830, #1144555: allow UNIX mmap size to default to current - file size. - -- Added functional.partial(). See PEP309. - -- Patch #1093585: raise a ValueError for negative history items in readline. - {remove_history,replace_history} - -- The spwd module has been added, allowing access to the shadow password - database. - -- stat_float_times is now True. - -- array.array objects are now picklable. - -- the cPickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- itertools.islice() now accepts None for the start and step arguments. - This allows islice() to work more readily with slices: - islice(s.start, s.stop, s.step) - -- datetime.datetime() now has a strptime class method which can be used to - create datetime object using a string and format. - -- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc - with the implementation from http://sourceforge.net/projects/libmd5-rfc/. - -Library -------- - -- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have - been renamed to have only a single underscore prefix. This was done to - make subclassing easier. - -- PEP 338: new module runpy defines a run_module function to support - executing modules which provide access to source code or a code object - via the PEP 302 import mechanisms. - -- The email module's parsedate_tz function now sets the daylight savings - flag to -1 (unknown) since it can't tell from the date whether it should - be set. - -- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results - now sport attributes that provide access to the parts of the result. - -- Patch #1462498: sgmllib now handles entity and character references - in attribute values. - -- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides - a DB-API interface in the standard library. You'll need sqlite 3.0.8 or - later to build this - if you have an earlier version, the C extension - module will not be built. - -- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts - aren't officially supported here, and trying to use them will probably - raise an exception some day. But dicts have been allowed, and "mostly - worked", so support for them won't go away without warning. - -- Bug #1445068: getpass.getpass() can now be given an explicit stream - argument to specify where to write the prompt. - -- Patch #1462313, bug #1443328: the pickle modules now can handle classes - that have __private names in their __slots__. - -- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. - -- patch #1457316: "setup.py upload" now supports --identity to select the - key to be used for signing the uploaded code. - -- Queue.Queue objects now support .task_done() and .join() methods - to make it easier to monitor when daemon threads have completed - processing all enqueued tasks. Patch #1455676. - -- popen2.Popen objects now preserve the command in a .cmd attribute. - -- Added the ctypes ffi package. - -- email 4.0 package now integrated. This is largely the same as the email 3.0 - package that was included in Python 2.3, except that PEP 8 module names are - now used (e.g. mail.message instead of email.Message). The MIME classes - have been moved to a subpackage (e.g. email.mime.text instead of - email.MIMEText). The old names are still supported for now. Several - deprecated Message methods have been removed and lots of bugs have been - fixed. More details can be found in the email package documentation. - -- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object - (a subclass of tuple) that provides incremental decoders and encoders - (a way to use stateful codecs without the stream API). Python functions - codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well - as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() - have been added. - -- Patch #1359365: Calling next() on a closed StringIO.String object raises - a ValueError instead of a StopIteration now (like file and cString.String do). - cStringIO.StringIO.isatty() will raise a ValueError now if close() has been - called before (like file and StringIO.StringIO do). - -- A regrtest option -w was added to re-run failed tests in verbose mode. - -- Patch #1446372: quit and exit can now be called from the interactive - interpreter to exit. - -- The function get_count() has been added to the gc module, and gc.collect() - grew an optional 'generation' argument. - -- A library msilib to generate Windows Installer files, and a distutils - command bdist_msi have been added. - -- PEP 343: new module contextlib.py defines decorator @contextmanager - and helpful context managers nested() and closing(). - -- The compiler package now supports future imports after the module docstring. - -- Bug #1413790: zipfile now sanitizes absolute archive names that are - not allowed by the specs. - -- Patch #1215184: FileInput now can be given an opening hook which can - be used to control how files are opened. - -- Patch #1212287: fileinput.input() now has a mode parameter for - specifying the file mode input files should be opened with. - -- Patch #1215184: fileinput now has a fileno() function for getting the - current file number. - -- Patch #1349274: gettext.install() now optionally installs additional - translation functions other than _() in the builtin namespace. - -- Patch #1337756: fileinput now accepts Unicode filenames. - -- Patch #1373643: The chunk module can now read chunks larger than - two gigabytes. - -- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. - -- Bug #1430298: It is now possible to send a mail with an empty - return address using smtplib. - -- Bug #1432260: The names of lambda functions are now properly displayed - in pydoc. - -- Patch #1412872: zipfile now sets the creator system to 3 (Unix) - unless the system is Win32. - -- Patch #1349118: urllib now supports user:pass@ style proxy - specifications, raises IOErrors when proxies for unsupported protocols - are defined, and uses the https proxy on https redirections. - -- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. - -- Bug #1407902: Add support for sftp:// URIs to urlparse. - -- Bug #1371247: Update Windows locale identifiers in locale.py. - -- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters - any more. - -- Bug #1403410: The warnings module now doesn't get confused - when it can't find out the module name it generates a warning for. - -- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. - -- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode - -- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise - LoadError as documented, instead of IOError. For compatibility, - LoadError subclasses IOError. - -- Added the hashlib module. It provides secure hash functions for MD5 and - SHA1, 224, 256, 384, and 512. Note that recent developments make the - historic MD5 and SHA1 unsuitable for cryptographic-strength applications. - In - Ronald L. Rivest offered this advice for Python: - - "The consensus of researchers in this area (at least as - expressed at the NIST Hash Function Workshop 10/31/05), - is that SHA-256 is a good choice for the time being, but - that research should continue, and other alternatives may - arise from this research. The larger SHA's also seem OK." - -- Added a subset of Fredrik Lundh's ElementTree package. Available - modules are xml.etree.ElementTree, xml.etree.ElementPath, and - xml.etree.ElementInclude, from ElementTree 1.2.6. - -- Patch #1162825: Support non-ASCII characters in IDLE window titles. - -- Bug #1365984: urllib now opens "data:" URLs again. - -- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception - is raised within the method itself on a previous call (e.g., passing in an - illegal argument) - -- Bug #1340337: change time.strptime() to always return ValueError when there - is an error in the format string. - -- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). - -- Bug #729103: pydoc.py: Fix docother() method to accept additional - "parent" argument. - -- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes - for padding. - -- Bug #1296004: httplib.py: Limit maximal amount of data read from the - socket to avoid a MemoryError on Windows. - -- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE - to get the correct encoding. - -- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of - languages. - -- Patch #1268314: Cache lines in StreamReader.readlines for performance. - -- Bug #1290505: Fix clearing the regex cache for time.strptime(). - -- Bug #1167128: Fix size of a symlink in a tarfile to be 0. - -- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook - functionality. - -- Bug #1163178: Make IDNA return an empty string when the input is empty. - -- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output - separator and do not output trailing semicolon. - -- Patch #1062060: urllib.urlretrieve() now raises a new exception, named - ContentTooShortException, when the actually downloaded size does not - match the Content-Length header. - -- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. - -- Bug #1178484: Return complete lines from codec stream readers - even if there is an exception in later lines, resulting in - correct line numbers for decoding errors in source code. - -- Bug #1192315: Disallow negative arguments to clear() in pdb. - -- Patch #827386: Support absolute source paths in msvccompiler.py. - -- Patch #1105730: Apply the new implementation of commonprefix in posixpath - to ntpath, macpath, os2emxpath and riscospath. - -- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus - __hasattr__ and __delattr__ methods on class Tk that were breaking - Tkdnd. - -- Bug #1015140: disambiguated the term "article id" in nntplib docs and - docstrings to either "article number" or "message id". - -- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a - parameter, but uses the usual "kwargs=None". - -- textwrap now processes text chunks at O(n) speed instead of O(n**2). - Patch #1209527 (Contributed by Connelly). - -- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code - to W3C name (404 -> 'Not Found'). RFE #1216944. - -- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, - as this can cause problems with apps closing all file descriptors. - -- Bug #839151: Fix an attempt to access sys.argv in the warnings module; - it can be missing in embedded interpreters - -- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. - -- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via - error messages. - -- Bug #1108948: Cookie.py produced invalid JavaScript code. - -- The tokenize module now detects and reports indentation errors. - Bug #1224621. - -- The tokenize module has a new untokenize() function to support a full - roundtrip from lexed tokens back to Python source code. In addition, - the generate_tokens() function now accepts a callable argument that - terminates by raising StopIteration. - -- Bug #1196315: fix weakref.WeakValueDictionary constructor. - -- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first - component of the path. - -- Patch #1120353: The xmlrpclib module provides better, more transparent, - support for datetime.{datetime,date,time} objects. With use_datetime set - to True, applications shouldn't have to fiddle with the DateTime wrapper - class at all. - -- distutils.commands.upload was added to support uploading distribution - files to PyPI. - -- distutils.commands.register now encodes the data as UTF-8 before posting - them to PyPI. - -- decimal operator and comparison methods now return NotImplemented - instead of raising a TypeError when interacting with other types. This - allows other classes to implement __radd__ style methods and have them - work as expected. - -- Bug #1163325: Decimal infinities failed to hash. Attempting to - hash a NaN raised an InvalidOperation instead of a TypeError. - -- Patch #918101: Add tarfile open mode r|* for auto-detection of the - stream compression; add, for symmetry reasons, r:* as a synonym of r. - -- Patch #1043890: Add extractall method to tarfile. - -- Patch #1075887: Don't require MSVC in distutils if there is nothing - to build. - -- Patch #1103407: Properly deal with tarfile iterators when untarring - symbolic links on Windows. - -- Patch #645894: Use getrusage for computing the time consumption in - profile.py if available. - -- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. - -- Patch #1117454: Remove code to special-case cookies without values - in LWPCookieJar. - -- Patch #1117339: Add cookielib special name tests. - -- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. - -- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. - -- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. - -- Patch #1104111: Alter setup.py --help and --help-commands. - -- Patch #1121234: Properly cleanup _exit and tkerror commands. - -- Patch #1049151: xdrlib now unpacks booleans as True or False. - -- Fixed bug in a NameError bug in cookielib. Patch #1116583. - -- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This - disables recursive traversal through instance attributes, which can - be exploited in various ways. - -- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec - flags on the HTTP listening socket. - -- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. - Fixed by reading the HTTP body in chunks instead of one big socket.read(). - -- Patches #893642, #1039083: add allow_none, encoding arguments to - constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. - -- Bug #1110478: Revert os.environ.update to do putenv again. - -- Bug #1103844: fix distutils.install.dump_dirs() with negated options. - -- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. - -- Enhancements to the csv module: - - + Dialects are now validated by the underlying C code, better - reflecting its capabilities, and improving its compliance with - PEP 305. - + Dialect parameter parsing has been re-implemented to improve error - reporting. - + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 - dictates. - + the parser now removes the escapechar prefix from escaped characters. - + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric - types, rather than any object that can be represented as a numeric. - + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields - to floats. - + reader now allows \r characters to be quoted (previously it only allowed - \n to be quoted). - + writer doublequote handling improved. - + Dialect classes passed to the module are no longer instantiated by - the module before being parsed (the former validation scheme required - this, but the mechanism was unreliable). - + The dialect registry now contains instances of the internal - C-coded dialect type, rather than references to python objects. - + the internal c-coded dialect type is now immutable. - + register_dialect now accepts the same keyword dialect specifications - as the reader and writer, allowing the user to register dialects - without first creating a dialect class. - + a configurable limit to the size of parsed fields has been added - - previously, an unmatched quote character could result in the entire - file being read into the field buffer before an error was reported. - + A new module method csv.field_size_limit() has been added that sets - the parser field size limit (returning the former limit). The initial - limit is 128kB. - + A line_num attribute has been added to the reader object, which tracks - the number of lines read from the source iterator. This is not - the same as the number of records returned, as records can span - multiple lines. - + reader and writer objects were not being registered with the cyclic-GC. - This has been fixed. - -- _DummyThread objects in the threading module now delete self.__block that is - inherited from _Thread since it uses up a lock allocated by 'thread'. The - lock primitives tend to be limited in number and thus should not be wasted on - a _DummyThread object. Fixes bug #1089632. - -- The imghdr module now detects Exif files. - -- StringIO.truncate() now correctly adjusts the size attribute. - (Bug #951915). - -- locale.py now uses an updated locale alias table (built using - Tools/i18n/makelocalealias.py, a tool to parse the X11 locale - alias file); the encoding lookup was enhanced to use Python's - encoding alias table. - -- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. - -- the pickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- optparse now optionally imports gettext. This allows its use in setup.py. - -- the pickle module no longer uses the deprecated bin parameter. - -- the shelve module no longer uses the deprecated binary parameter. - -- the pstats module no longer uses the deprecated ignore() method. - -- the filecmp module no longer uses the deprecated use_statcache argument. - -- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully - extended or overridden by subclasses. Formerly, the subclassed method would - be ignored by the rest of the module. (Bug #1078905). - -- heapq.nsmallest() and heapq.nlargest() now support key= arguments with - the same meaning as in list.sort(). - -- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only - once when a size argument is given. This prevents a buffer overflow in the - tokenizer with very long source lines. - -- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called - immediately after creating the object, without any intervening - ``.decompress()`` calls. - -- The reconvert.quote function can now emit triple-quoted strings. The - reconvert module now has some simple documentation. - -- ``UserString.MutableString`` now supports negative indices in - ``__setitem__`` and ``__delitem__`` - -- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") - correctly. - -- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by - ``codecs.StreamReader.readline()`` has a trailing "\r", read one more - character even if the user has passed a size parameter to get a proper - line ending. Remove the special handling of a "\r\n" that has been split - between two lines. - -- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain - about illegal code points. The codec now supports PEP 293 style error - handlers. - -- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads - from the input stream, so that the output is a byte string in the correct - encoding instead of a unicode string. - -- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than - considering it exactly like a '*'. - -- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to - ``encodings.aliases``. - -- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. - -- Patch #1413711: Certain patterns of differences were making difflib - touch the recursion limit. - -- Bug #947906: An object oriented interface has been added to the calendar - module. It's possible to generate HTML calendar now and the module can be - called as a script (e.g. via ``python -mcalendar``). Localized month and - weekday names can be ouput (even if an exotic encoding is used) using - special classes that use unicode. - -Build ------ - -- Fix test_float, test_long, and test_struct failures on Tru64 with gcc - by using -mieee gcc option. - -- Patch #1432345: Make python compile on DragonFly. - -- Build support for Win64-AMD64 was added. - -- Patch #1428494: Prefer linking against ncursesw over ncurses library. - -- Patch #881820: look for openpty and forkpty also in libbsd. - -- The sources of zlib are now part of the Python distribution (zlib 1.2.3). - The zlib module is now builtin on Windows. - -- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. - -- Bug #1189330: configure did not correctly determine the necessary - value of LINKCC if python was built with GCC 4.0. - -- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security - vulnerability in zlib 1.2.1 and 1.2.2. - -- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler - flags that change binary compatibility. Changes were also made to - distutils.sysconfig to also use the environment variable when used during - compilation of the interpreter and of C extensions through distutils. - -- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, - and linking has changed (prebinding is now deprecated, and libcc_dynamic - no longer exists). This configure patch makes things right. - -- Bug #1158607: Build with --disable-unicode again. - -- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is - defined. Discovered as a result of not being able to build on OS X. - -- setup.py now uses the directories specified in LDFLAGS using the -L option - and in CPPFLAGS using the -I option for adding library and include - directories, respectively, for compiling extension modules against. This has - led to the core being compiled using the values in CPPFLAGS. It also removes - the need for the special-casing of both DarwinPorts and Fink for darwin since - the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, - ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for - Fink, ``-I/opt/local/include`` for DarwinPorts). - -- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone - to exist in the struct (not required by either ISO C nor the UNIX 2 spec). - Tests for sanity in tzname when HAVE_TZNAME defined were also defined. - Closes bug #1096244. Thanks Gregory Bond. - -C API ------ - -- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to - ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory - is obtained via the ``PyObject_`` family, it must be released via the - ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has - always been officially true, but when Python's small-object allocator was - introduced, an attempt was made to cater to a few extension modules - discovered at the time that obtained memory via ``PyObject_New`` but - released it via ``PyMem_DEL``. It's years later, and if such code still - exists it will fail now (probably with segfaults, but calling wrong - low-level memory management functions can yield many symptoms). - -- Added a C API for set and frozenset objects. - -- Removed PyRange_New(). - -- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the - mapping argument now. This string is used as a mapping table. Byte values - greater than the length of the string and 0xFFFE are treated as undefined - mappings. - - -Tests ------ - -- In test_os, st_?time is now truncated before comparing it with ST_?TIME. - -- Patch #1276356: New resource "urlfetch" is implemented. This enables - even impatient people to run tests that require remote files. - - -Documentation -------------- - -- Bug #1402224: Add warning to dl docs about crashes. - -- Bug #1396471: Document that Windows' ftell() can return invalid - values for text files with UNIX-style line endings. - -- Bug #1274828: Document os.path.splitunc(). - -- Bug #1190204: Clarify which directories are searched by site.py. - -- Bug #1193849: Clarify os.path.expanduser() documentation. - -- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. - -- Bug #755617: Document the effects of os.chown() on Windows. - -- Patch #1180012: The documentation for modulefinder is now in the library reference. - -- Patch #1213031: Document that os.chown() accepts argument values of -1. - -- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. - -- Bug #1175022: Correct the example code for property(). - -- Document the IterableUserDict class in the UserDict module. - Closes bug #1166582. - -- Remove all latent references for "Macintosh" that referred to semantics for - Mac OS 9 and change to reflect the state for OS X. - Closes patch #1095802. Thanks Jack Jansen. - -Mac ---- - - -New platforms -------------- - -- FreeBSD 7 support is added. - - -Tools/Demos ------------ - -- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that - directory for syntax highlighting in Vim. Vim directory was added and placed - vimrc to it (was previous up a level). - -- Added two new files to Tools/scripts: pysource.py, which recursively - finds Python source files, and findnocoding.py, which finds Python - source files that need an encoding declaration. - Patch #784089, credits to Oleg Broytmann. - -- Bug #1072853: pindent.py used an uninitialized variable. - -- Patch #1177597: Correct Complex.__init__. - -- Fixed a display glitch in Pynche, which could cause the right arrow to - wiggle over by a pixel. - ---- **(For information about older versions, consult the HISTORY file.)** Modified: python/branches/trunk-math/Misc/cheatsheet ============================================================================== --- python/branches/trunk-math/Misc/cheatsheet (original) +++ python/branches/trunk-math/Misc/cheatsheet Thu Feb 28 21:09:17 2008 @@ -565,8 +565,8 @@ i Signed integer decimal. o Unsigned octal. u Unsigned decimal. -x Unsigned hexidecimal (lowercase). -X Unsigned hexidecimal (uppercase). +x Unsigned hexadecimal (lowercase). +X Unsigned hexadecimal (uppercase). e Floating point exponential format (lowercase). E Floating point exponential format (uppercase). f Floating point decimal format. Modified: python/branches/trunk-math/Modules/_ctypes/_ctypes_test.c ============================================================================== --- python/branches/trunk-math/Modules/_ctypes/_ctypes_test.c (original) +++ python/branches/trunk-math/Modules/_ctypes/_ctypes_test.c Thu Feb 28 21:09:17 2008 @@ -411,7 +411,7 @@ return 0; } -PyMethodDef module_methods[] = { +static PyMethodDef module_methods[] = { /* {"get_last_tf_arg_s", get_last_tf_arg_s, METH_NOARGS}, {"get_last_tf_arg_u", get_last_tf_arg_u, METH_NOARGS}, */ Modified: python/branches/trunk-math/Modules/_ctypes/libffi/configure ============================================================================== --- python/branches/trunk-math/Modules/_ctypes/libffi/configure (original) +++ python/branches/trunk-math/Modules/_ctypes/libffi/configure Thu Feb 28 21:09:17 2008 @@ -1,27 +1,56 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for libffi 2.1. +# Generated by GNU Autoconf 2.61 for libffi 2.1. # # Report bugs to . # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -31,8 +60,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -46,18 +110,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -65,157 +130,388 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf at gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -224,7 +520,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -233,39 +550,27 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' @@ -276,42 +581,112 @@ # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC ac_ct_CC EXEEXT OBJEXT CFLAGS CPP CPPFLAGS EGREP ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR MKTARGET LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CPP +GREP +EGREP +ALLOCA +HAVE_LONG_DOUBLE +TARGET +TARGETDIR +MKTARGET +LIBOBJS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CPP +CPPFLAGS' + # Initialize some variables set by options. ac_init_help= @@ -338,34 +713,48 @@ # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -387,33 +776,45 @@ --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -440,6 +841,12 @@ -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -464,13 +871,16 @@ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -535,6 +945,16 @@ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -587,24 +1007,20 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -635,8 +1051,7 @@ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -656,27 +1071,19 @@ { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -703,64 +1110,78 @@ test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS - -# + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# # Report the --help message. # if test "$ac_init_help" = "long"; then @@ -787,9 +1208,6 @@ -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -807,15 +1225,22 @@ --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libffi] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -838,8 +1263,9 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -847,120 +1273,86 @@ Report bugs to . _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libffi configure 2.1 -generated by GNU Autoconf 2.59 +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -979,7 +1371,7 @@ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -993,6 +1385,7 @@ test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1014,7 +1407,6 @@ ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1025,7 +1417,7 @@ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1047,9 +1439,7 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1060,8 +1450,8 @@ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1074,20 +1464,34 @@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1098,22 +1502,28 @@ echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1125,26 +1535,24 @@ ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1175,14 +1583,17 @@ # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1198,8 +1609,8 @@ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -1211,12 +1622,11 @@ # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1241,8 +1651,7 @@ # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1259,12 +1668,6 @@ { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - @@ -1289,110 +1692,165 @@ +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_headers="$ac_config_headers fficonfig.h" +ac_config_headers="$ac_config_headers fficonfig.h" ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -1413,8 +1871,8 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1427,32 +1885,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1465,36 +1925,51 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1507,74 +1982,34 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1588,7 +2023,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -1599,6 +2034,7 @@ fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -1616,22 +2052,23 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1644,36 +2081,38 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1686,29 +2125,45 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi @@ -1721,21 +2176,35 @@ { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 +echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1760,47 +2229,77 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -1812,19 +2311,21 @@ fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1843,22 +2344,27 @@ fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1869,9 +2375,8 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1885,14 +2390,14 @@ fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1912,14 +2417,20 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -1937,12 +2448,12 @@ rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1965,49 +2476,49 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2023,37 +2534,118 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2069,12 +2661,12 @@ CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2108,12 +2700,17 @@ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2128,201 +2725,57 @@ return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2339,8 +2792,8 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2374,24 +2827,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2400,9 +2851,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2412,24 +2864,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2440,6 +2890,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2457,8 +2908,8 @@ else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -2481,24 +2932,22 @@ #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else echo "$as_me: failed program was:" >&5 @@ -2507,9 +2956,10 @@ # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2519,24 +2969,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else @@ -2547,6 +2995,7 @@ ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -2569,23 +3018,170 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2609,34 +3205,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -2692,6 +3285,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -2711,18 +3305,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2735,12 +3338,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -2763,9 +3368,9 @@ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -2779,37 +3384,35 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -2824,18 +3427,19 @@ for ac_header in sys/mman.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2846,40 +3450,37 @@ #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2888,24 +3489,22 @@ /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -2913,9 +3512,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -2939,25 +3539,24 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -2973,9 +3572,9 @@ for ac_func in mmap do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3001,67 +3600,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3072,17 +3664,17 @@ if test "${ac_cv_header_sys_mman_h+set}" = set; then - echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 -echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h usability" >&5 +echo $ECHO_N "checking sys/mman.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3093,40 +3685,37 @@ #include _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 -echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking sys/mman.h presence" >&5 +echo $ECHO_N "checking sys/mman.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3135,24 +3724,22 @@ /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -3160,9 +3747,10 @@ ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -3186,25 +3774,23 @@ echo "$as_me: WARNING: sys/mman.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: sys/mman.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to http://gcc.gnu.org/bugs.html ## ## ------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for sys/mman.h" >&5 -echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for sys/mman.h" >&5 +echo $ECHO_N "checking for sys/mman.h... $ECHO_C" >&6; } if test "${ac_cv_header_sys_mman_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_sys_mman_h=$ac_header_preproc fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mman_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_mman_h" >&6; } fi if test $ac_cv_header_sys_mman_h = yes; then @@ -3214,8 +3800,8 @@ fi -echo "$as_me:$LINENO: checking for mmap" >&5 -echo $ECHO_N "checking for mmap... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for mmap" >&5 +echo $ECHO_N "checking for mmap... $ECHO_C" >&6; } if test "${ac_cv_func_mmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3242,67 +3828,59 @@ #undef mmap -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char mmap (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_mmap) || defined (__stub___mmap) +#if defined __stub_mmap || defined __stub___mmap choke me -#else -char (*f) () = mmap; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != mmap; +return mmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_mmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_mmap=no + ac_cv_func_mmap=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 -echo "${ECHO_T}$ac_cv_func_mmap" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5 +echo "${ECHO_T}$ac_cv_func_mmap" >&6; } if test $ac_cv_func_mmap = yes; then libffi_func_mmap=yes else @@ -3315,8 +3893,8 @@ ac_cv_func_mmap_dev_zero=no ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 -echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether read-only mmap of a plain file works" >&5 +echo $ECHO_N "checking whether read-only mmap of a plain file works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_file+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3332,10 +3910,10 @@ ac_cv_func_mmap_file=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_file" >&6 - echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 -echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_file" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_file" >&6; } + { echo "$as_me:$LINENO: checking whether mmap from /dev/zero works" >&5 +echo $ECHO_N "checking whether mmap from /dev/zero works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_dev_zero+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3356,12 +3934,12 @@ ac_cv_func_mmap_dev_zero=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_dev_zero" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_dev_zero" >&6; } # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 -echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking for MAP_ANON(YMOUS)" >&5 +echo $ECHO_N "checking for MAP_ANON(YMOUS)... $ECHO_C" >&6; } if test "${ac_cv_decl_map_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3388,43 +3966,40 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_decl_map_anon=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_decl_map_anon=no + ac_cv_decl_map_anon=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 -echo "${ECHO_T}$ac_cv_decl_map_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_decl_map_anon" >&5 +echo "${ECHO_T}$ac_cv_decl_map_anon" >&6; } if test $ac_cv_decl_map_anon = no; then ac_cv_func_mmap_anon=no else - echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 -echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking whether mmap with MAP_ANON(YMOUS) works" >&5 +echo $ECHO_N "checking whether mmap with MAP_ANON(YMOUS) works... $ECHO_C" >&6; } if test "${ac_cv_func_mmap_anon+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3440,8 +4015,8 @@ ac_cv_func_mmap_anon=yes;; esac fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_anon" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_anon" >&6; } fi fi @@ -3536,8 +4111,8 @@ *) ;; esac -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3561,34 +4136,31 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3644,6 +4216,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -3663,18 +4236,27 @@ for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3687,12 +4269,14 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -3705,9 +4289,9 @@ for ac_func in memcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -3733,67 +4317,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -3804,8 +4381,8 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3820,43 +4397,42 @@ main () { char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_working_alloca_h=no + ac_cv_working_alloca_h=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -3865,8 +4441,8 @@ fi -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3883,7 +4459,7 @@ # include # define alloca _alloca # else -# if HAVE_ALLOCA_H +# ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -3901,43 +4477,42 @@ main () { char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_alloca_works=no + ac_cv_func_alloca_works=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then @@ -3951,15 +4526,15 @@ # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. -ALLOCA=alloca.$ac_objext +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3969,7 +4544,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined(CRAY) && ! defined(CRAY2) +#if defined CRAY && ! defined CRAY2 webecray #else wenotbecray @@ -3985,14 +4560,14 @@ rm -f conftest* fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4018,67 +4593,60 @@ #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -4091,8 +4659,8 @@ done fi -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4105,6 +4673,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +$ac_includes_default int find_stack_direction () { @@ -4122,17 +4691,26 @@ int main () { - exit (find_stack_direction () < 0); + return find_stack_direction () < 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4145,11 +4723,13 @@ ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction @@ -4159,8 +4739,8 @@ fi -echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6; } if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4171,60 +4751,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef double ac__type_new_; int main () { -if ((double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_double=no + ac_cv_type_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6; } -echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4234,10 +4811,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4245,26 +4823,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4274,10 +4848,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4285,55 +4860,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4341,26 +4914,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4370,10 +4939,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4381,49 +4951,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4434,10 +5003,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4445,49 +5015,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +'') if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4495,8 +5061,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (double)); } -unsigned long ulongval () { return (long) (sizeof (double)); } + typedef double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4505,35 +5072,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4544,29 +5120,32 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +if test "$ac_cv_type_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 77 +echo "$as_me: error: cannot compute sizeof (double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -echo "$as_me:$LINENO: checking for long double" >&5 -echo $ECHO_N "checking for long double... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6; } if test "${ac_cv_type_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4577,60 +5156,57 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default +typedef long double ac__type_new_; int main () { -if ((long double *) 0) +if ((ac__type_new_ *) 0) return 0; -if (sizeof (long double)) +if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_type_long_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_long_double=no + ac_cv_type_long_double=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 -echo "${ECHO_T}$ac_cv_type_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6; } -echo "$as_me:$LINENO: checking size of long double" >&5 -echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$ac_cv_type_long_double" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -4640,10 +5216,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; @@ -4651,26 +5228,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4680,10 +5253,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4691,55 +5265,53 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; @@ -4747,26 +5319,22 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -4776,10 +5344,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; @@ -4787,49 +5356,48 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= + ac_lo= ac_hi= fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -4840,10 +5408,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default + typedef long double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; @@ -4851,49 +5420,45 @@ } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr '(' $ac_mid ')' + 1` + ac_lo=`expr '(' $ac_mid ')' + 1` fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +'') if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi ;; esac else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4901,8 +5466,9 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -long longval () { return (long) (sizeof (long double)); } -unsigned long ulongval () { return (long) (sizeof (long double)); } + typedef long double ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int @@ -4911,35 +5477,44 @@ FILE *f = fopen ("conftest.val", "w"); if (! f) - exit (1); - if (((long) (sizeof (long double))) < 0) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) { - long i = longval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%ld\n", i); } else { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long double)))) - exit (1); + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; fprintf (f, "%lu\n", i); } - exit (ferror (f) || fclose (f) != 0); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4950,22 +5525,25 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +if test "$ac_cv_type_long_double" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double) See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 +echo "$as_me: error: cannot compute sizeof (long double) See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_long_double=0 + fi fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val -else - ac_cv_sizeof_long_double=0 -fi fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6; } + + + cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF @@ -4986,171 +5564,163 @@ fi -echo "$as_me:$LINENO: checking for _Bool support" >&5 -echo $ECHO_N "checking for _Bool support... $ECHO_C" >&6 -have_c99_bool=no +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +#include +#include int main () { -_Bool x; x = (_Bool)0; +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) + bogus endian macros +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_C99_BOOL 1 -_ACEOF - - have_c99_bool=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $have_c99_bool" >&5 -echo "${ECHO_T}$have_c99_bool" >&6 -if test "$have_c99_bool" = yes ; then -echo "$as_me:$LINENO: checking for _Bool" >&5 -echo $ECHO_N "checking for _Bool... $ECHO_C" >&6 -if test "${ac_cv_type__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +#include +#include + int main () { -if ((_Bool *) 0) - return 0; -if (sizeof (_Bool)) - return 0; +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type__Bool=yes + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type__Bool=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_bigendian=no fi -echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 -echo "${ECHO_T}$ac_cv_type__Bool" >&6 -echo "$as_me:$LINENO: checking size of _Bool" >&5 -echo $ECHO_N "checking size of _Bool... $ECHO_C" >&6 -if test "${ac_cv_sizeof__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else - if test "$ac_cv_type__Bool" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= 0)]; -test_array [0] = 0 - + _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5160,652 +5730,200 @@ int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_hi=$ac_mid; break + ac_cv_c_bigendian=no else - echo "$as_me: failed program was:" >&5 + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` +( exit $ac_status ) +ac_cv_c_bigendian=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + + + + +if test x$TARGET = xSPARC; then + { echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 +echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6; } +if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" + CFLAGS="$CFLAGS -fpic" + LDFLAGS="$LDFLAGS -shared" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) < 0)]; -test_array [0] = 0 ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + libffi_cv_as_sparc_ua_pcrel=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + libffi_cv_as_sparc_ua_pcrel=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + LDFLAGS="$save_LDFLAGS" +fi +{ echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 +echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6; } + if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_AS_SPARC_UA_PCREL 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 +echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6; } +if test "${libffi_cv_as_register_pseudo_op+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + libffi_cv_as_register_pseudo_op=unknown + # Check if we have .register + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +asm (".register %g2, #scratch"); int main () { -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) >= $ac_mid)]; -test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + libffi_cv_as_register_pseudo_op=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` + libffi_cv_as_register_pseudo_op=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (_Bool))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof__Bool=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (_Bool)); } -unsigned long ulongval () { return (long) (sizeof (_Bool)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (_Bool))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (_Bool)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof__Bool=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (_Bool), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof__Bool=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof__Bool" >&5 -echo "${ECHO_T}$ac_cv_sizeof__Bool" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF__BOOL $ac_cv_sizeof__Bool -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # See if sys/param.h defines the BYTE_ORDER macro. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_bigendian=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -# It does not; compile a test program. -if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -int -main () -{ - _ascii (); _ebcdic (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes -fi -if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_bigendian=yes -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -case $ac_cv_c_bigendian in - yes) - -cat >>confdefs.h <<\_ACEOF -#define WORDS_BIGENDIAN 1 -_ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianness -presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; -esac - - - - - -if test x$TARGET = xSPARC; then - echo "$as_me:$LINENO: checking assembler and linker support unaligned pc related relocs" >&5 -echo $ECHO_N "checking assembler and linker support unaligned pc related relocs... $ECHO_C" >&6 -if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_sparc_ua_pcrel=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_sparc_ua_pcrel=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_sparc_ua_pcrel" >&5 -echo "${ECHO_T}$libffi_cv_as_sparc_ua_pcrel" >&6 - if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_AS_SPARC_UA_PCREL 1 -_ACEOF - - fi - - echo "$as_me:$LINENO: checking assembler .register pseudo-op support" >&5 -echo $ECHO_N "checking assembler .register pseudo-op support... $ECHO_C" >&6 -if test "${libffi_cv_as_register_pseudo_op+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - libffi_cv_as_register_pseudo_op=unknown - # Check if we have .register - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -asm (".register %g2, #scratch"); -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - 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' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libffi_cv_as_register_pseudo_op=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -libffi_cv_as_register_pseudo_op=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 -echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_as_register_pseudo_op" >&5 +echo "${ECHO_T}$libffi_cv_as_register_pseudo_op" >&6; } if test "x$libffi_cv_as_register_pseudo_op" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5815,8 +5933,8 @@ fi fi -echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 -echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 +echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6; } if test "${libffi_cv_ro_eh_frame+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5834,8 +5952,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 -echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_ro_eh_frame" >&5 +echo "${ECHO_T}$libffi_cv_ro_eh_frame" >&6; } if test "x$libffi_cv_ro_eh_frame" = xyes; then cat >>confdefs.h <<\_ACEOF @@ -5855,8 +5973,8 @@ fi -echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 -echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for __attribute__((visibility(\"hidden\")))" >&5 +echo $ECHO_N "checking for __attribute__((visibility(\"hidden\")))... $ECHO_C" >&6; } if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5876,8 +5994,8 @@ rm -f conftest.* fi -echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 -echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6 +{ echo "$as_me:$LINENO: result: $libffi_cv_hidden_visibility_attribute" >&5 +echo "${ECHO_T}$libffi_cv_hidden_visibility_attribute" >&6; } if test $libffi_cv_hidden_visibility_attribute = yes; then cat >>confdefs.h <<\_ACEOF @@ -5901,9 +6019,9 @@ _ACEOF - ac_config_commands="$ac_config_commands include" +ac_config_commands="$ac_config_commands include" - ac_config_commands="$ac_config_commands src" +ac_config_commands="$ac_config_commands src" TARGETINCDIR=$TARGETDIR @@ -5914,12 +6032,12 @@ esac - ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" +ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" - ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" +ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" - ac_config_files="$ac_config_files include/ffi.h fficonfig.py" +ac_config_files="$ac_config_files include/ffi.h fficonfig.py" cat >confcache <<\_ACEOF @@ -5940,39 +6058,58 @@ # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -5981,32 +6118,18 @@ # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -6037,17 +6160,45 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -6057,8 +6208,43 @@ fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' @@ -6072,18 +6258,19 @@ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - $as_unset $as_var + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -6091,159 +6278,120 @@ # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi +# CDPATH. +$as_unset CDPATH - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -6252,7 +6400,28 @@ as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -6261,31 +6430,14 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by libffi $as_me 2.1, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6293,30 +6445,21 @@ CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -6324,7 +6467,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -6346,18 +6489,20 @@ $config_commands Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libffi config.status 2.1 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir + +ac_pwd='$ac_pwd' +srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -6368,39 +6513,24 @@ do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -6410,18 +6540,24 @@ $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -6437,41 +6573,53 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS section. +# INIT-COMMANDS # - TARGETDIR="$TARGETDIR" _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "include/ffi.h" ) CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "fficonfig.py" ) CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; - "include/ffitarget.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; - "include/ffi_common.h" ) CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; - "include" ) CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; - "src" ) CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "fficonfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + case $ac_config_target in + "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; + "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; + "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; + "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETINCDIR/ffitarget.h" ;; + "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; + "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; + "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -6484,308 +6632,376 @@ fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - # -# CONFIG_FILES section. +# Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s, at SHELL@,$SHELL,;t t -s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t -s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t -s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s, at exec_prefix@,$exec_prefix,;t t -s, at prefix@,$prefix,;t t -s, at program_transform_name@,$program_transform_name,;t t -s, at bindir@,$bindir,;t t -s, at sbindir@,$sbindir,;t t -s, at libexecdir@,$libexecdir,;t t -s, at datadir@,$datadir,;t t -s, at sysconfdir@,$sysconfdir,;t t -s, at sharedstatedir@,$sharedstatedir,;t t -s, at localstatedir@,$localstatedir,;t t -s, at libdir@,$libdir,;t t -s, at includedir@,$includedir,;t t -s, at oldincludedir@,$oldincludedir,;t t -s, at infodir@,$infodir,;t t -s, at mandir@,$mandir,;t t -s, at build_alias@,$build_alias,;t t -s, at host_alias@,$host_alias,;t t -s, at target_alias@,$target_alias,;t t -s, at DEFS@,$DEFS,;t t -s, at ECHO_C@,$ECHO_C,;t t -s, at ECHO_N@,$ECHO_N,;t t -s, at ECHO_T@,$ECHO_T,;t t -s, at LIBS@,$LIBS,;t t -s, at build@,$build,;t t -s, at build_cpu@,$build_cpu,;t t -s, at build_vendor@,$build_vendor,;t t -s, at build_os@,$build_os,;t t -s, at host@,$host,;t t -s, at host_cpu@,$host_cpu,;t t -s, at host_vendor@,$host_vendor,;t t -s, at host_os@,$host_os,;t t -s, at target@,$target,;t t -s, at target_cpu@,$target_cpu,;t t -s, at target_vendor@,$target_vendor,;t t -s, at target_os@,$target_os,;t t -s, at CC@,$CC,;t t -s, at ac_ct_CC@,$ac_ct_CC,;t t -s, at EXEEXT@,$EXEEXT,;t t -s, at OBJEXT@,$OBJEXT,;t t -s, at CFLAGS@,$CFLAGS,;t t -s, at CPP@,$CPP,;t t -s, at CPPFLAGS@,$CPPFLAGS,;t t -s, at EGREP@,$EGREP,;t t -s, at ALLOCA@,$ALLOCA,;t t -s, at HAVE_LONG_DOUBLE@,$HAVE_LONG_DOUBLE,;t t -s, at TARGET@,$TARGET,;t t -s, at TARGETDIR@,$TARGETDIR,;t t -s, at MKTARGET@,$MKTARGET,;t t -s, at LIBOBJS@,$LIBOBJS,;t t -s, at LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +target!$target$ac_delim +target_cpu!$target_cpu$ac_delim +target_vendor!$target_vendor$ac_delim +target_os!$target_os$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +ALLOCA!$ALLOCA$ac_delim +HAVE_LONG_DOUBLE!$HAVE_LONG_DOUBLE$ac_delim +TARGET!$TARGET$ac_delim +TARGETDIR!$TARGETDIR$ac_delim +MKTARGET!$MKTARGET$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -fi # test -n "$CONFIG_FILES" +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # 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. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + case $ac_mode in + :F) + # + # CONFIG_FILE + # - # 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. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +_ACEOF - 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 +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -6793,511 +7009,173 @@ cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s, at configure_input@,$configure_input,;t t -s, at srcdir@,$ac_srcdir,;t t -s, at abs_srcdir@,$ac_abs_srcdir,;t t -s, at top_srcdir@,$ac_top_srcdir,;t t -s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s, at builddir@,$ac_builddir,;t t -s, at abs_builddir@,$ac_abs_builddir,;t t -s, at top_builddir@,$ac_top_builddir,;t t -s, at abs_top_builddir@,$ac_abs_top_builddir,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines -# This sed command replaces #undef with comments. This is necessary, for +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null +while : do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs +rm -f conftest.defines conftest.tail +echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF - # 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. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - rm -f $ac_file - mv $tmp/config.h $ac_file + mv "$tmp/config.h" $ac_file fi else - cat $tmp/config.h - rm -f $tmp/config.h + echo "/* $configure_input */" + cat "$ac_result" fi -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_LINKS section. -# - -for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + rm -f "$tmp/out12" + ;; + :L) + # + # CONFIG_LINK + # - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_file" >&6;} - if test ! -r $srcdir/$ac_source; then + if test ! -r "$srcdir/$ac_source"; then { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} { (exit 1); exit 1; }; } fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dest_dir";; -*) - case "$ac_dest_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dest_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dest_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - + rm -f "$ac_file" + # Try a relative symlink, then a hard link, then a copy. case $srcdir in [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$srcdir/$ac_source ;; esac - - # Try a symlink, then a hard link, then a copy. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest 2>/dev/null || - cp -p $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&5 -echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&2;} + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$srcdir/$ac_source" "$ac_file" 2>/dev/null || + cp -p "$srcdir/$ac_source" "$ac_file" || + { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&2;} { (exit 1); exit 1; }; } -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + ;; + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - include ) test -d include || mkdir include ;; - src ) + case $ac_file$ac_mode in + "include":C) test -d include || mkdir include ;; + "src":C) test -d src || mkdir src test -d src/$TARGETDIR || mkdir src/$TARGETDIR ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF Modified: python/branches/trunk-math/Modules/_ctypes/libffi/configure.ac ============================================================================== --- python/branches/trunk-math/Modules/_ctypes/libffi/configure.ac (original) +++ python/branches/trunk-math/Modules/_ctypes/libffi/configure.ac Thu Feb 28 21:09:17 2008 @@ -106,17 +106,6 @@ fi AC_SUBST(HAVE_LONG_DOUBLE) -AC_MSG_CHECKING(for _Bool support) -have_c99_bool=no -AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [ - AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.]) - have_c99_bool=yes -]) -AC_MSG_RESULT($have_c99_bool) -if test "$have_c99_bool" = yes ; then -AC_CHECK_SIZEOF(_Bool, 1) -fi - AC_C_BIGENDIAN AH_VERBATIM([WORDS_BIGENDIAN], [ Modified: python/branches/trunk-math/Modules/_ctypes/libffi/fficonfig.h.in ============================================================================== --- python/branches/trunk-math/Modules/_ctypes/libffi/fficonfig.h.in (original) +++ python/branches/trunk-math/Modules/_ctypes/libffi/fficonfig.h.in Thu Feb 28 21:09:17 2008 @@ -28,9 +28,6 @@ */ #undef HAVE_AS_SPARC_UA_PCREL -/* Define this if you have the type _Bool. */ -#undef HAVE_C99_BOOL - /* Define if __attribute__((visibility("hidden"))) is supported. */ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE @@ -100,18 +97,15 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* The size of a `double', as computed by sizeof. */ +/* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE -/* The size of a `long double', as computed by sizeof. */ +/* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE -/* The size of a `_Bool', as computed by sizeof. */ -#undef SIZEOF__BOOL - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. + automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ Modified: python/branches/trunk-math/Modules/_struct.c ============================================================================== --- python/branches/trunk-math/Modules/_struct.c (original) +++ python/branches/trunk-math/Modules/_struct.c Thu Feb 28 21:09:17 2008 @@ -1471,7 +1471,7 @@ return -1; Py_INCREF(o_format); - Py_XDECREF(soself->s_format); + Py_CLEAR(soself->s_format); soself->s_format = o_format; ret = prepare_s(soself); Modified: python/branches/trunk-math/Modules/_testcapimodule.c ============================================================================== --- python/branches/trunk-math/Modules/_testcapimodule.c (original) +++ python/branches/trunk-math/Modules/_testcapimodule.c Thu Feb 28 21:09:17 2008 @@ -306,6 +306,22 @@ return Py_BuildValue("iii", a, b, c); } +/* test PyArg_ParseTupleAndKeywords */ +static PyObject *getargs_keywords(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *keywords[] = {"arg1","arg2","arg3","arg4","arg5", NULL}; + static char *fmt="(ii)i|(i(ii))(iii)i"; + int int_args[10]={-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, fmt, keywords, + &int_args[0], &int_args[1], &int_args[2], &int_args[3], &int_args[4], + &int_args[5], &int_args[6], &int_args[7], &int_args[8], &int_args[9])) + return NULL; + return Py_BuildValue("iiiiiiiiii", + int_args[0], int_args[1], int_args[2], int_args[3], int_args[4], + int_args[5], int_args[6], int_args[7], int_args[8], int_args[9]); +} + /* Functions to call PyArg_ParseTuple with integer format codes, and return the result. */ @@ -732,6 +748,8 @@ PyDoc_STR("This is a pretty normal docstring.")}, {"getargs_tuple", getargs_tuple, METH_VARARGS}, + {"getargs_keywords", (PyCFunction)getargs_keywords, + METH_VARARGS|METH_KEYWORDS}, {"getargs_b", getargs_b, METH_VARARGS}, {"getargs_B", getargs_B, METH_VARARGS}, {"getargs_H", getargs_H, METH_VARARGS}, Modified: python/branches/trunk-math/Modules/cStringIO.c ============================================================================== --- python/branches/trunk-math/Modules/cStringIO.c (original) +++ python/branches/trunk-math/Modules/cStringIO.c Thu Feb 28 21:09:17 2008 @@ -575,8 +575,7 @@ static PyObject * I_close(Iobject *self, PyObject *unused) { - Py_XDECREF(self->pbuf); - self->pbuf = NULL; + Py_CLEAR(self->pbuf); self->buf = NULL; self->pos = self->string_size = 0; Modified: python/branches/trunk-math/Modules/datetimemodule.c ============================================================================== --- python/branches/trunk-math/Modules/datetimemodule.c (original) +++ python/branches/trunk-math/Modules/datetimemodule.c Thu Feb 28 21:09:17 2008 @@ -2469,6 +2469,32 @@ return result; } +static PyObject * +date_format(PyDateTime_Date *self, PyObject *args) +{ + PyObject *format; + + if (!PyArg_ParseTuple(args, "O:__format__", &format)) + return NULL; + + /* Check for str or unicode */ + if (PyString_Check(format)) { + /* If format is zero length, return str(self) */ + if (PyString_GET_SIZE(format) == 0) + return PyObject_Str((PyObject *)self); + } else if (PyUnicode_Check(format)) { + /* If format is zero length, return str(self) */ + if (PyUnicode_GET_SIZE(format) == 0) + return PyObject_Unicode((PyObject *)self); + } else { + PyErr_Format(PyExc_ValueError, + "__format__ expects str or unicode, not %.200s", + Py_TYPE(format)->tp_name); + return NULL; + } + return PyObject_CallMethod((PyObject *)self, "strftime", "O", format); +} + /* ISO methods. */ static PyObject * @@ -2633,6 +2659,9 @@ {"strftime", (PyCFunction)date_strftime, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("format -> strftime() style string.")}, + {"__format__", (PyCFunction)date_format, METH_VARARGS, + PyDoc_STR("Formats self with strftime.")}, + {"timetuple", (PyCFunction)date_timetuple, METH_NOARGS, PyDoc_STR("Return time tuple, compatible with time.localtime().")}, @@ -3418,6 +3447,9 @@ {"strftime", (PyCFunction)time_strftime, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("format -> strftime() style string.")}, + {"__format__", (PyCFunction)date_format, METH_VARARGS, + PyDoc_STR("Formats self with strftime.")}, + {"utcoffset", (PyCFunction)time_utcoffset, METH_NOARGS, PyDoc_STR("Return self.tzinfo.utcoffset(self).")}, Modified: python/branches/trunk-math/Modules/dbmmodule.c ============================================================================== --- python/branches/trunk-math/Modules/dbmmodule.c (original) +++ python/branches/trunk-math/Modules/dbmmodule.c Thu Feb 28 21:09:17 2008 @@ -161,6 +161,37 @@ return 0; } +static int +dbm_contains(register dbmobject *dp, PyObject *v) +{ + datum key, val; + + if (PyString_AsStringAndSize(v, &key.dptr, &key.dsize)) { + return -1; + } + + /* Expand check_dbmobject_open to return -1 */ + if (dp->di_dbm == NULL) { + PyErr_SetString(DbmError, "DBM object has already been closed"); + return -1; + } + val = dbm_fetch(dp->di_dbm, key); + return val.dptr != NULL; +} + +static PySequenceMethods dbm_as_sequence = { + (lenfunc)dbm_length, /*_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + (objobjproc)dbm_contains, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0 /*sq_inplace_repeat*/ +}; + static PyMappingMethods dbm_as_mapping = { (lenfunc)dbm_length, /*mp_length*/ (binaryfunc)dbm_subscript, /*mp_subscript*/ @@ -313,8 +344,15 @@ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ + &dbm_as_sequence, /*tp_as_sequence*/ &dbm_as_mapping, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_xxx4*/ }; /* ----------------------------------------------------------------- */ Modified: python/branches/trunk-math/Modules/gdbmmodule.c ============================================================================== --- python/branches/trunk-math/Modules/gdbmmodule.c (original) +++ python/branches/trunk-math/Modules/gdbmmodule.c Thu Feb 28 21:09:17 2008 @@ -178,6 +178,40 @@ return 0; } +static int +dbm_contains(register dbmobject *dp, PyObject *arg) +{ + datum key; + + if ((dp)->di_dbm == NULL) { + PyErr_SetString(DbmError, + "GDBM object has already been closed"); + return -1; + } + if (!PyString_Check(arg)) { + PyErr_Format(PyExc_TypeError, + "gdbm key must be string, not %.100s", + arg->ob_type->tp_name); + return -1; + } + key.dptr = PyString_AS_STRING(arg); + key.dsize = PyString_GET_SIZE(arg); + return gdbm_exists(dp->di_dbm, key); +} + +static PySequenceMethods dbm_as_sequence = { + (lenfunc)dbm_length, /*_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + (objobjproc)dbm_contains, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0 /*sq_inplace_repeat*/ +}; + static PyMappingMethods dbm_as_mapping = { (lenfunc)dbm_length, /*mp_length*/ (binaryfunc)dbm_subscript, /*mp_subscript*/ @@ -381,7 +415,7 @@ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ + &dbm_as_sequence, /*tp_as_sequence*/ &dbm_as_mapping, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ @@ -389,7 +423,7 @@ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ - 0, /*tp_xxx4*/ + Py_TPFLAGS_DEFAULT, /*tp_xxx4*/ gdbm_object__doc__, /*tp_doc*/ }; Modified: python/branches/trunk-math/Modules/itertoolsmodule.c ============================================================================== --- python/branches/trunk-math/Modules/itertoolsmodule.c (original) +++ python/branches/trunk-math/Modules/itertoolsmodule.c Thu Feb 28 21:09:17 2008 @@ -1741,6 +1741,471 @@ }; +/* product object ************************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *pools; /* tuple of pool tuples */ + Py_ssize_t *maxvec; /* size of each pool */ + Py_ssize_t *indices; /* one index per pool */ + PyObject *result; /* most recently returned result tuple */ + int stopped; /* set to 1 when the product iterator is exhausted */ +} productobject; + +static PyTypeObject product_type; + +static PyObject * +product_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + productobject *lz; + Py_ssize_t npools; + PyObject *pools = NULL; + Py_ssize_t *maxvec = NULL; + Py_ssize_t *indices = NULL; + Py_ssize_t i; + + if (type == &product_type && !_PyArg_NoKeywords("product()", kwds)) + return NULL; + + assert(PyTuple_Check(args)); + npools = PyTuple_GET_SIZE(args); + + maxvec = PyMem_Malloc(npools * sizeof(Py_ssize_t)); + indices = PyMem_Malloc(npools * sizeof(Py_ssize_t)); + if (maxvec == NULL || indices == NULL) { + PyErr_NoMemory(); + goto error; + } + + pools = PyTuple_New(npools); + if (pools == NULL) + goto error; + + for (i=0; i < npools; ++i) { + PyObject *item = PyTuple_GET_ITEM(args, i); + PyObject *pool = PySequence_Tuple(item); + if (pool == NULL) + goto error; + + PyTuple_SET_ITEM(pools, i, pool); + maxvec[i] = PyTuple_GET_SIZE(pool); + indices[i] = 0; + } + + /* create productobject structure */ + lz = (productobject *)type->tp_alloc(type, 0); + if (lz == NULL) + goto error; + + lz->pools = pools; + lz->maxvec = maxvec; + lz->indices = indices; + lz->result = NULL; + lz->stopped = 0; + + return (PyObject *)lz; + +error: + if (maxvec != NULL) + PyMem_Free(maxvec); + if (indices != NULL) + PyMem_Free(indices); + Py_XDECREF(pools); + return NULL; +} + +static void +product_dealloc(productobject *lz) +{ + PyObject_GC_UnTrack(lz); + Py_XDECREF(lz->pools); + Py_XDECREF(lz->result); + PyMem_Free(lz->maxvec); + PyMem_Free(lz->indices); + Py_TYPE(lz)->tp_free(lz); +} + +static int +product_traverse(productobject *lz, visitproc visit, void *arg) +{ + Py_VISIT(lz->pools); + Py_VISIT(lz->result); + return 0; +} + +static PyObject * +product_next(productobject *lz) +{ + PyObject *pool; + PyObject *elem; + PyObject *oldelem; + PyObject *pools = lz->pools; + PyObject *result = lz->result; + Py_ssize_t npools = PyTuple_GET_SIZE(pools); + Py_ssize_t i; + + if (lz->stopped) + return NULL; + + if (result == NULL) { + /* On the first pass, return an initial tuple filled with the + first element from each pool. If any pool is empty, then + whole product is empty and we're already done */ + if (npools == 0) + goto empty; + result = PyTuple_New(npools); + if (result == NULL) + goto empty; + lz->result = result; + for (i=0; i < npools; i++) { + pool = PyTuple_GET_ITEM(pools, i); + if (PyTuple_GET_SIZE(pool) == 0) + goto empty; + elem = PyTuple_GET_ITEM(pool, 0); + Py_INCREF(elem); + PyTuple_SET_ITEM(result, i, elem); + } + } else { + Py_ssize_t *indices = lz->indices; + Py_ssize_t *maxvec = lz->maxvec; + + /* Copy the previous result tuple or re-use it if available */ + if (Py_REFCNT(result) > 1) { + PyObject *old_result = result; + result = PyTuple_New(npools); + if (result == NULL) + goto empty; + lz->result = result; + for (i=0; i < npools; i++) { + elem = PyTuple_GET_ITEM(old_result, i); + Py_INCREF(elem); + PyTuple_SET_ITEM(result, i, elem); + } + Py_DECREF(old_result); + } + /* Now, we've got the only copy so we can update it in-place */ + assert (Py_REFCNT(result) == 1); + + /* Update the pool indices right-to-left. Only advance to the + next pool when the previous one rolls-over */ + for (i=npools-1 ; i >= 0 ; i--) { + pool = PyTuple_GET_ITEM(pools, i); + indices[i]++; + if (indices[i] == maxvec[i]) { + /* Roll-over and advance to next pool */ + indices[i] = 0; + elem = PyTuple_GET_ITEM(pool, 0); + Py_INCREF(elem); + oldelem = PyTuple_GET_ITEM(result, i); + PyTuple_SET_ITEM(result, i, elem); + Py_DECREF(oldelem); + } else { + /* No rollover. Just increment and stop here. */ + elem = PyTuple_GET_ITEM(pool, indices[i]); + Py_INCREF(elem); + oldelem = PyTuple_GET_ITEM(result, i); + PyTuple_SET_ITEM(result, i, elem); + Py_DECREF(oldelem); + break; + } + } + + /* If i is negative, then the indices have all rolled-over + and we're done. */ + if (i < 0) + goto empty; + } + + Py_INCREF(result); + return result; + +empty: + lz->stopped = 1; + return NULL; +} + +PyDoc_STRVAR(product_doc, +"product(*iterables) --> product object\n\ +\n\ +Cartesian product of input iterables. Equivalent to nested for-loops.\n\n\ +For example, product(A, B) returns the same as: ((x,y) for x in A for y in B).\n\ +The leftmost iterators are in the outermost for-loop, so the output tuples\n\ +cycle in a manner similar to an odometer (with the rightmost element changing\n\ +on every iteration).\n\n\ +product('ab', range(3)) --> ('a',0) ('a',1) ('a',2) ('b',0) ('b',1) ('b',2)\n\ +product((0,1), (0,1), (0,1)) --> (0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) ..."); + +static PyTypeObject product_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "itertools.product", /* tp_name */ + sizeof(productobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)product_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + product_doc, /* tp_doc */ + (traverseproc)product_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)product_next, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + product_new, /* tp_new */ + PyObject_GC_Del, /* tp_free */ +}; + + +/* combinations object ************************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *pool; /* input converted to a tuple */ + Py_ssize_t *indices; /* one index per result element */ + PyObject *result; /* most recently returned result tuple */ + Py_ssize_t r; /* size of result tuple */ + int stopped; /* set to 1 when the combinations iterator is exhausted */ +} combinationsobject; + +static PyTypeObject combinations_type; + +static PyObject * +combinations_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + combinationsobject *co; + Py_ssize_t n; + Py_ssize_t r; + PyObject *pool = NULL; + PyObject *iterable = NULL; + Py_ssize_t *indices = NULL; + Py_ssize_t i; + static char *kwargs[] = {"iterable", "r", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "On:combinations", kwargs, + &iterable, &r)) + return NULL; + + pool = PySequence_Tuple(iterable); + if (pool == NULL) + goto error; + n = PyTuple_GET_SIZE(pool); + if (r < 0) { + PyErr_SetString(PyExc_ValueError, "r must be non-negative"); + goto error; + } + if (r > n) { + PyErr_SetString(PyExc_ValueError, "r cannot be bigger than the iterable"); + goto error; + } + + indices = PyMem_Malloc(r * sizeof(Py_ssize_t)); + if (indices == NULL) { + PyErr_NoMemory(); + goto error; + } + + for (i=0 ; itp_alloc(type, 0); + if (co == NULL) + goto error; + + co->pool = pool; + co->indices = indices; + co->result = NULL; + co->r = r; + co->stopped = 0; + + return (PyObject *)co; + +error: + if (indices != NULL) + PyMem_Free(indices); + Py_XDECREF(pool); + return NULL; +} + +static void +combinations_dealloc(combinationsobject *co) +{ + PyObject_GC_UnTrack(co); + Py_XDECREF(co->pool); + Py_XDECREF(co->result); + PyMem_Free(co->indices); + Py_TYPE(co)->tp_free(co); +} + +static int +combinations_traverse(combinationsobject *co, visitproc visit, void *arg) +{ + Py_VISIT(co->pool); + Py_VISIT(co->result); + return 0; +} + +static PyObject * +combinations_next(combinationsobject *co) +{ + PyObject *elem; + PyObject *oldelem; + PyObject *pool = co->pool; + Py_ssize_t *indices = co->indices; + PyObject *result = co->result; + Py_ssize_t n = PyTuple_GET_SIZE(pool); + Py_ssize_t r = co->r; + Py_ssize_t i, j, index; + + if (co->stopped) + return NULL; + + if (result == NULL) { + /* On the first pass, initialize result tuple using the indices */ + result = PyTuple_New(r); + if (result == NULL) + goto empty; + co->result = result; + for (i=0; i 1) { + PyObject *old_result = result; + result = PyTuple_New(r); + if (result == NULL) + goto empty; + co->result = result; + for (i=0; i= 0 && indices[i] == i+n-r ; i--) + ; + + /* If i is negative, then the indices are all at + their maximum value and we're done. */ + if (i < 0) + goto empty; + + /* Increment the current index which we know is not at its + maximum. Then move back to the right setting each index + to its lowest possible value (one higher than the index + to its left -- this maintains the sort order invariant). */ + indices[i]++; + for (j=i+1 ; jstopped = 1; + return NULL; +} + +PyDoc_STRVAR(combinations_doc, +"combinations(iterables) --> combinations object\n\ +\n\ +Return successive r-length combinations of elements in the iterable.\n\n\ +combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)"); + +static PyTypeObject combinations_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "itertools.combinations", /* tp_name */ + sizeof(combinationsobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)combinations_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_BASETYPE, /* tp_flags */ + combinations_doc, /* tp_doc */ + (traverseproc)combinations_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)combinations_next, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + combinations_new, /* tp_new */ + PyObject_GC_Del, /* tp_free */ +}; + + /* ifilter object ************************************************************/ typedef struct { @@ -1814,7 +2279,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None) { + if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; @@ -1958,7 +2423,7 @@ if (item == NULL) return NULL; - if (lz->func == Py_None) { + if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) { ok = PyObject_IsTrue(item); } else { PyObject *good; @@ -2785,6 +3250,7 @@ PyObject *m; char *name; PyTypeObject *typelist[] = { + &combinations_type, &cycle_type, &dropwhile_type, &takewhile_type, @@ -2796,7 +3262,8 @@ &ifilterfalse_type, &count_type, &izip_type, - &iziplongest_type, + &iziplongest_type, + &product_type, &repeat_type, &groupby_type, NULL Modified: python/branches/trunk-math/Modules/mmapmodule.c ============================================================================== --- python/branches/trunk-math/Modules/mmapmodule.c (original) +++ python/branches/trunk-math/Modules/mmapmodule.c Thu Feb 28 21:09:17 2008 @@ -1402,7 +1402,10 @@ dict = PyModule_GetDict(module); if (!dict) return; - mmap_module_error = PyExc_EnvironmentError; + mmap_module_error = PyErr_NewException("mmap.error", + PyExc_EnvironmentError , NULL); + if (mmap_module_error == NULL) + return; PyDict_SetItemString(dict, "error", mmap_module_error); PyDict_SetItemString(dict, "mmap", (PyObject*) &mmap_object_type); #ifdef PROT_EXEC Modified: python/branches/trunk-math/Modules/operator.c ============================================================================== --- python/branches/trunk-math/Modules/operator.c (original) +++ python/branches/trunk-math/Modules/operator.c Thu Feb 28 21:09:17 2008 @@ -496,6 +496,49 @@ } static PyObject * +dotted_getattr(PyObject *obj, PyObject *attr) +{ + char *s, *p; + +#ifdef Py_USING_UNICODE + if (PyUnicode_Check(attr)) { + attr = _PyUnicode_AsDefaultEncodedString(attr, NULL); + if (attr == NULL) + return NULL; + } +#endif + + if (!PyString_Check(attr)) { + PyErr_SetString(PyExc_TypeError, + "attribute name must be a string"); + return NULL; + } + + s = PyString_AS_STRING(attr); + Py_INCREF(obj); + for (;;) { + PyObject *newobj, *str; + p = strchr(s, '.'); + str = p ? PyString_FromStringAndSize(s, (p-s)) : + PyString_FromString(s); + if (str == NULL) { + Py_DECREF(obj); + return NULL; + } + newobj = PyObject_GetAttr(obj, str); + Py_DECREF(str); + Py_DECREF(obj); + if (newobj == NULL) + return NULL; + obj = newobj; + if (p == NULL) break; + s = p+1; + } + + return obj; +} + +static PyObject * attrgetter_call(attrgetterobject *ag, PyObject *args, PyObject *kw) { PyObject *obj, *result; @@ -504,7 +547,7 @@ if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &obj)) return NULL; if (ag->nattrs == 1) - return PyObject_GetAttr(obj, ag->attr); + return dotted_getattr(obj, ag->attr); assert(PyTuple_Check(ag->attr)); assert(PyTuple_GET_SIZE(ag->attr) == nattrs); @@ -516,7 +559,7 @@ for (i=0 ; i < nattrs ; i++) { PyObject *attr, *val; attr = PyTuple_GET_ITEM(ag->attr, i); - val = PyObject_GetAttr(obj, attr); + val = dotted_getattr(obj, attr); if (val == NULL) { Py_DECREF(result); return NULL; @@ -531,7 +574,9 @@ \n\ Return a callable object that fetches the given attribute(s) from its operand.\n\ After, f=attrgetter('name'), the call f(r) returns r.name.\n\ -After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date)."); +After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date).\n\ +After, h=attrgetter('name.first', 'name.last'), the call h(r) returns\n\ +(r.name.first, r.name.last)."); static PyTypeObject attrgetter_type = { PyVarObject_HEAD_INIT(NULL, 0) @@ -575,6 +620,139 @@ attrgetter_new, /* tp_new */ 0, /* tp_free */ }; + + +/* methodcaller object **********************************************************/ + +typedef struct { + PyObject_HEAD + PyObject *name; + PyObject *args; + PyObject *kwds; +} methodcallerobject; + +static PyTypeObject methodcaller_type; + +static PyObject * +methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + methodcallerobject *mc; + PyObject *name, *newargs; + + if (PyTuple_GET_SIZE(args) < 1) { + PyErr_SetString(PyExc_TypeError, "methodcaller needs at least " + "one argument, the method name"); + return NULL; + } + + /* create methodcallerobject structure */ + mc = PyObject_GC_New(methodcallerobject, &methodcaller_type); + if (mc == NULL) + return NULL; + + newargs = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); + if (newargs == NULL) { + Py_DECREF(mc); + return NULL; + } + mc->args = newargs; + + name = PyTuple_GET_ITEM(args, 0); + Py_INCREF(name); + mc->name = name; + + Py_XINCREF(kwds); + mc->kwds = kwds; + + PyObject_GC_Track(mc); + return (PyObject *)mc; +} + +static void +methodcaller_dealloc(methodcallerobject *mc) +{ + PyObject_GC_UnTrack(mc); + Py_XDECREF(mc->name); + Py_XDECREF(mc->args); + Py_XDECREF(mc->kwds); + PyObject_GC_Del(mc); +} + +static int +methodcaller_traverse(methodcallerobject *mc, visitproc visit, void *arg) +{ + Py_VISIT(mc->args); + Py_VISIT(mc->kwds); + return 0; +} + +static PyObject * +methodcaller_call(methodcallerobject *mc, PyObject *args, PyObject *kw) +{ + PyObject *method, *obj, *result; + + if (!PyArg_UnpackTuple(args, "methodcaller", 1, 1, &obj)) + return NULL; + method = PyObject_GetAttr(obj, mc->name); + if (method == NULL) + return NULL; + result = PyObject_Call(method, mc->args, mc->kwds); + Py_DECREF(method); + return result; +} + +PyDoc_STRVAR(methodcaller_doc, +"methodcaller(name, ...) --> methodcaller object\n\ +\n\ +Return a callable object that calls the given method on its operand.\n\ +After, f = methodcaller('name'), the call f(r) returns r.name().\n\ +After, g = methodcaller('name', 'date', foo=1), the call g(r) returns\n\ +r.name('date', foo=1)."); + +static PyTypeObject methodcaller_type = { + PyVarObject_HEAD_INIT(NULL, 0) + "operator.methodcaller", /* tp_name */ + sizeof(methodcallerobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)methodcaller_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + (ternaryfunc)methodcaller_call, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + methodcaller_doc, /* tp_doc */ + (traverseproc)methodcaller_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + methodcaller_new, /* tp_new */ + 0, /* tp_free */ +}; + + /* Initialization function for the module (*must* be called initoperator) */ PyMODINIT_FUNC @@ -597,4 +775,9 @@ return; Py_INCREF(&attrgetter_type); PyModule_AddObject(m, "attrgetter", (PyObject *)&attrgetter_type); + + if (PyType_Ready(&methodcaller_type) < 0) + return; + Py_INCREF(&methodcaller_type); + PyModule_AddObject(m, "methodcaller", (PyObject *)&methodcaller_type); } Modified: python/branches/trunk-math/Modules/parsermodule.c ============================================================================== --- python/branches/trunk-math/Modules/parsermodule.c (original) +++ python/branches/trunk-math/Modules/parsermodule.c Thu Feb 28 21:09:17 2008 @@ -1498,7 +1498,7 @@ /* compound_stmt: - * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef + * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated */ static int validate_compound_stmt(node *tree) @@ -1517,7 +1517,8 @@ || (ntype == for_stmt) || (ntype == try_stmt) || (ntype == funcdef) - || (ntype == classdef)) + || (ntype == classdef) + || (ntype == decorated)) res = validate_node(tree); else { res = 0; @@ -1527,7 +1528,6 @@ return (res); } - static int validate_yield_or_testlist(node *tree) { @@ -2558,28 +2558,40 @@ /* funcdef: * - * -6 -5 -4 -3 -2 -1 - * [decorators] 'def' NAME parameters ':' suite + * -5 -4 -3 -2 -1 + * 'def' NAME parameters ':' suite */ static int validate_funcdef(node *tree) { int nch = NCH(tree); int ok = (validate_ntype(tree, funcdef) - && ((nch == 5) || (nch == 6)) + && (nch == 5) && validate_name(RCHILD(tree, -5), "def") && validate_ntype(RCHILD(tree, -4), NAME) && validate_colon(RCHILD(tree, -2)) && validate_parameters(RCHILD(tree, -3)) && validate_suite(RCHILD(tree, -1))); - - if (ok && (nch == 6)) - ok = validate_decorators(CHILD(tree, 0)); - return ok; } +/* decorated + * decorators (classdef | funcdef) + */ +static int +validate_decorated(node *tree) +{ + int nch = NCH(tree); + int ok = (validate_ntype(tree, decorated) + && (nch == 2) + && validate_decorators(RCHILD(tree, -2)) + && (validate_funcdef(RCHILD(tree, -1)) + || validate_class(RCHILD(tree, -1))) + ); + return ok; +} + static int validate_lambdef(node *tree) { @@ -2923,6 +2935,9 @@ case classdef: res = validate_class(tree); break; + case decorated: + res = validate_decorated(tree); + break; /* * "Trivial" parse tree nodes. * (Why did I call these trivial?) Modified: python/branches/trunk-math/Modules/signalmodule.c ============================================================================== --- python/branches/trunk-math/Modules/signalmodule.c (original) +++ python/branches/trunk-math/Modules/signalmodule.c Thu Feb 28 21:09:17 2008 @@ -272,6 +272,36 @@ None -- if an unknown handler is in effect\n\ anything else -- the callable Python object used as a handler"); +#ifdef HAVE_SIGINTERRUPT +PyDoc_STRVAR(siginterrupt_doc, +"siginterrupt(sig, flag) -> None\n\ +change system call restart behaviour: if flag is False, system calls\n\ +will be restarted when interrupted by signal sig, else system calls\n\ +will be interrupted."); + +static PyObject * +signal_siginterrupt(PyObject *self, PyObject *args) +{ + int sig_num; + int flag; + + if (!PyArg_ParseTuple(args, "ii:siginterrupt", &sig_num, &flag)) + return NULL; + if (sig_num < 1 || sig_num >= NSIG) { + PyErr_SetString(PyExc_ValueError, + "signal number out of range"); + return NULL; + } + if (siginterrupt(sig_num, flag)<0) { + PyErr_SetFromErrno(PyExc_RuntimeError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +#endif static PyObject * signal_set_wakeup_fd(PyObject *self, PyObject *args) @@ -325,6 +355,9 @@ {"signal", signal_signal, METH_VARARGS, signal_doc}, {"getsignal", signal_getsignal, METH_VARARGS, getsignal_doc}, {"set_wakeup_fd", signal_set_wakeup_fd, METH_VARARGS, set_wakeup_fd_doc}, +#ifdef HAVE_SIGINTERRUPT + {"siginterrupt", signal_siginterrupt, METH_VARARGS, siginterrupt_doc}, +#endif #ifdef HAVE_PAUSE {"pause", (PyCFunction)signal_pause, METH_NOARGS,pause_doc}, Modified: python/branches/trunk-math/Modules/syslogmodule.c ============================================================================== --- python/branches/trunk-math/Modules/syslogmodule.c (original) +++ python/branches/trunk-math/Modules/syslogmodule.c Thu Feb 28 21:09:17 2008 @@ -92,7 +92,9 @@ return NULL; } + Py_BEGIN_ALLOW_THREADS; syslog(priority, "%s", message); + Py_END_ALLOW_THREADS; Py_INCREF(Py_None); return Py_None; } Modified: python/branches/trunk-math/Objects/abstract.c ============================================================================== --- python/branches/trunk-math/Objects/abstract.c (original) +++ python/branches/trunk-math/Objects/abstract.c Thu Feb 28 21:09:17 2008 @@ -348,6 +348,138 @@ return 0; } +PyObject * +PyObject_Format(PyObject* obj, PyObject *format_spec) +{ + static PyObject * str__format__ = NULL; + PyObject *empty = NULL; + PyObject *result = NULL; + int spec_is_unicode; + int result_is_unicode; + + /* Initialize cached value */ + if (str__format__ == NULL) { + /* Initialize static variable needed by _PyType_Lookup */ + str__format__ = PyString_InternFromString("__format__"); + if (str__format__ == NULL) + goto done; + } + + /* If no format_spec is provided, use an empty string */ + if (format_spec == NULL) { + empty = PyString_FromStringAndSize(NULL, 0); + format_spec = empty; + } + + /* Check the format_spec type, and make sure it's str or unicode */ + if (PyUnicode_Check(format_spec)) + spec_is_unicode = 1; + else if (PyString_Check(format_spec)) + spec_is_unicode = 0; + else { + PyErr_Format(PyExc_TypeError, + "format expects arg 2 to be string " + "or unicode, not %.100s", Py_TYPE(format_spec)->tp_name); + goto done; + } + + /* Make sure the type is initialized. float gets initialized late */ + if (Py_TYPE(obj)->tp_dict == NULL) + if (PyType_Ready(Py_TYPE(obj)) < 0) + goto done; + + /* Check for a __format__ method and call it. */ + if (PyInstance_Check(obj)) { + /* We're an instance of a classic class */ + PyObject *bound_method = PyObject_GetAttr(obj, + str__format__); + if (bound_method != NULL) { + result = PyObject_CallFunctionObjArgs(bound_method, + format_spec, + NULL); + Py_DECREF(bound_method); + } else { + PyObject *self_as_str; + PyObject *format_method; + + PyErr_Clear(); + /* Per the PEP, convert to str (or unicode, + depending on the type of the format + specifier). For new-style classes, this + logic is done by object.__format__(). */ + if (spec_is_unicode) + self_as_str = PyObject_Unicode(obj); + else + self_as_str = PyObject_Str(obj); + if (self_as_str == NULL) + goto done; + + /* Then call str.__format__ on that result */ + format_method = PyObject_GetAttr(self_as_str, + str__format__); + if (format_method == NULL) { + Py_DECREF(self_as_str); + goto done; + } + result = PyObject_CallFunctionObjArgs(format_method, + format_spec, + NULL); + Py_DECREF(self_as_str); + Py_DECREF(format_method); + if (result == NULL) + goto done; + } + } else { + /* Not an instance of a classic class, use the code + from py3k */ + + /* Find the (unbound!) __format__ method (a borrowed + reference) */ + PyObject *method = _PyType_Lookup(Py_TYPE(obj), + str__format__); + if (method == NULL) { + PyErr_Format(PyExc_TypeError, + "Type %.100s doesn't define __format__", + Py_TYPE(obj)->tp_name); + goto done; + } + /* And call it, binding it to the value */ + result = PyObject_CallFunctionObjArgs(method, obj, + format_spec, NULL); + } + + if (result == NULL) + goto done; + + /* Check the result type, and make sure it's str or unicode */ + if (PyUnicode_Check(result)) + result_is_unicode = 1; + else if (PyString_Check(result)) + result_is_unicode = 0; + else { + PyErr_Format(PyExc_TypeError, + "%.100s.__format__ must return string or " + "unicode, not %.100s", Py_TYPE(obj)->tp_name, + Py_TYPE(result)->tp_name); + Py_DECREF(result); + result = NULL; + goto done; + } + + /* Convert to unicode, if needed. Required if spec is unicode + and result is str */ + if (spec_is_unicode && !result_is_unicode) { + PyObject *tmp = PyObject_Unicode(result); + /* This logic works whether or not tmp is NULL */ + Py_DECREF(result); + result = tmp; + } + +done: + Py_XDECREF(empty); + return result; +} + /* Operations on numbers */ int Modified: python/branches/trunk-math/Objects/cellobject.c ============================================================================== --- python/branches/trunk-math/Objects/cellobject.c (original) +++ python/branches/trunk-math/Objects/cellobject.c Thu Feb 28 21:09:17 2008 @@ -31,13 +31,15 @@ int PyCell_Set(PyObject *op, PyObject *obj) { + PyObject* oldobj; if (!PyCell_Check(op)) { PyErr_BadInternalCall(); return -1; } - Py_XDECREF(((PyCellObject*)op)->ob_ref); + oldobj = PyCell_GET(op); Py_XINCREF(obj); PyCell_SET(op, obj); + Py_XDECREF(oldobj); return 0; } Modified: python/branches/trunk-math/Objects/dictobject.c ============================================================================== --- python/branches/trunk-math/Objects/dictobject.c (original) +++ python/branches/trunk-math/Objects/dictobject.c Thu Feb 28 21:09:17 2008 @@ -171,8 +171,10 @@ static void show_alloc(void) { - fprintf(stderr, "Dict allocations: %zd\n", count_alloc); - fprintf(stderr, "Dict reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "Dict allocations: %" PY_FORMAT_SIZE_T "d\n", + count_alloc); + fprintf(stderr, "Dict reuse through freelist: %" PY_FORMAT_SIZE_T + "d\n", count_reuse); fprintf(stderr, "%.2f%% reuse rate\n\n", (100.0*count_reuse/(count_alloc+count_reuse))); } Modified: python/branches/trunk-math/Objects/fileobject.c ============================================================================== --- python/branches/trunk-math/Objects/fileobject.c (original) +++ python/branches/trunk-math/Objects/fileobject.c Thu Feb 28 21:09:17 2008 @@ -1660,9 +1660,9 @@ } static PyObject * -file_exit(PyFileObject *f, PyObject *args) +file_exit(PyObject *f, PyObject *args) { - PyObject *ret = file_close(f); + PyObject *ret = PyObject_CallMethod(f, "close", NULL); if (!ret) /* If error occurred, pass through */ return NULL; Modified: python/branches/trunk-math/Objects/floatobject.c ============================================================================== --- python/branches/trunk-math/Objects/floatobject.c (original) +++ python/branches/trunk-math/Objects/floatobject.c Thu Feb 28 21:09:17 2008 @@ -9,6 +9,7 @@ #include #include +#include "formatter_string.h" /* global NAN and INF objects */ #ifdef Py_NAN @@ -1382,6 +1383,46 @@ return PyFloat_FromDouble(0.0); } +static PyObject * +float__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_float__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_float__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + +PyDoc_STRVAR(float__format__doc, +"float.__format__(format_spec) -> string\n" +"\n" +"Formats the float according to format_spec."); + + static PyMethodDef float_methods[] = { {"conjugate", (PyCFunction)float_float, METH_NOARGS, "Returns self, the complex conjugate of any float."}, @@ -1402,6 +1443,8 @@ METH_O|METH_CLASS, float_getformat_doc}, {"__setformat__", (PyCFunction)float_setformat, METH_VARARGS|METH_CLASS, float_setformat_doc}, + {"__format__", (PyCFunction)float__format__, + METH_VARARGS, float__format__doc}, {NULL, NULL} /* sentinel */ }; Modified: python/branches/trunk-math/Objects/intobject.c ============================================================================== --- python/branches/trunk-math/Objects/intobject.c (original) +++ python/branches/trunk-math/Objects/intobject.c Thu Feb 28 21:09:17 2008 @@ -3,6 +3,7 @@ #include "Python.h" #include +#include "formatter_string.h" static PyObject *int_int(PyIntObject *v); @@ -1114,6 +1115,40 @@ Py_RETURN_TRUE; } +static PyObject * +int__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_int__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_int__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + static PyMethodDef int_methods[] = { {"conjugate", (PyCFunction)int_int, METH_NOARGS, "Returns self, the complex conjugate of any int."}, @@ -1122,6 +1157,7 @@ {"__trunc__", (PyCFunction)int_int, METH_NOARGS, "Truncating an Integral returns itself."}, {"__getnewargs__", (PyCFunction)int_getnewargs, METH_NOARGS}, + {"__format__", (PyCFunction)int__format__, METH_VARARGS}, {NULL, NULL} /* sentinel */ }; Modified: python/branches/trunk-math/Objects/listobject.c ============================================================================== --- python/branches/trunk-math/Objects/listobject.c (original) +++ python/branches/trunk-math/Objects/listobject.c Thu Feb 28 21:09:17 2008 @@ -72,8 +72,10 @@ static void show_alloc(void) { - fprintf(stderr, "List allocations: %zd\n", count_alloc); - fprintf(stderr, "List reuse through freelist: %zd\n", count_reuse); + fprintf(stderr, "List allocations: %" PY_FORMAT_SIZE_T "d\n", + count_alloc); + fprintf(stderr, "List reuse through freelist: %" PY_FORMAT_SIZE_T + "d\n", count_reuse); fprintf(stderr, "%.2f%% reuse rate\n\n", (100.0*count_reuse/(count_alloc+count_reuse))); } Modified: python/branches/trunk-math/Objects/longobject.c ============================================================================== --- python/branches/trunk-math/Objects/longobject.c (original) +++ python/branches/trunk-math/Objects/longobject.c Thu Feb 28 21:09:17 2008 @@ -6,6 +6,7 @@ #include "Python.h" #include "longintrepr.h" +#include "formatter_string.h" #include @@ -3386,6 +3387,40 @@ Py_RETURN_TRUE; } +static PyObject * +long__format__(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyString_Check(format_spec)) + return string_long__format__(self, args); + if (PyUnicode_Check(format_spec)) { + /* Convert format_spec to a str */ + PyObject *result = NULL; + PyObject *newargs = NULL; + PyObject *string_format_spec = NULL; + + string_format_spec = PyObject_Str(format_spec); + if (string_format_spec == NULL) + goto done; + + newargs = Py_BuildValue("(O)", string_format_spec); + if (newargs == NULL) + goto done; + + result = string_long__format__(self, newargs); + + done: + Py_XDECREF(string_format_spec); + Py_XDECREF(newargs); + return result; + } + PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); + return NULL; +} + static PyMethodDef long_methods[] = { {"conjugate", (PyCFunction)long_long, METH_NOARGS, "Returns self, the complex conjugate of any long."}, @@ -3394,6 +3429,7 @@ {"__trunc__", (PyCFunction)long_long, METH_NOARGS, "Truncating an Integral returns itself."}, {"__getnewargs__", (PyCFunction)long_getnewargs, METH_NOARGS}, + {"__format__", (PyCFunction)long__format__, METH_VARARGS}, {NULL, NULL} /* sentinel */ }; Modified: python/branches/trunk-math/Objects/stringobject.c ============================================================================== --- python/branches/trunk-math/Objects/stringobject.c (original) +++ python/branches/trunk-math/Objects/stringobject.c Thu Feb 28 21:09:17 2008 @@ -4,6 +4,8 @@ #include "Python.h" +#include "formatter_string.h" + #include #ifdef COUNT_ALLOCS @@ -771,15 +773,7 @@ /* -------------------------------------------------------------------- */ /* Methods */ -#define STRINGLIB_CHAR char - -#define STRINGLIB_CMP memcmp -#define STRINGLIB_LEN PyString_GET_SIZE -#define STRINGLIB_NEW PyString_FromStringAndSize -#define STRINGLIB_STR PyString_AS_STRING - -#define STRINGLIB_EMPTY nullstring - +#include "stringlib/stringdefs.h" #include "stringlib/fastsearch.h" #include "stringlib/count.h" @@ -3910,6 +3904,19 @@ return Py_BuildValue("(s#)", v->ob_sval, Py_SIZE(v)); } + +#include "stringlib/string_format.h" + +PyDoc_STRVAR(format__doc__, +"S.format(*args, **kwargs) -> unicode\n\ +\n\ +"); + +PyDoc_STRVAR(p_format__doc__, +"S.__format__(format_spec) -> unicode\n\ +\n\ +"); + static PyMethodDef string_methods[] = { @@ -3954,6 +3961,10 @@ {"rjust", (PyCFunction)string_rjust, METH_VARARGS, rjust__doc__}, {"center", (PyCFunction)string_center, METH_VARARGS, center__doc__}, {"zfill", (PyCFunction)string_zfill, METH_VARARGS, zfill__doc__}, + {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__}, + {"__format__", (PyCFunction) string__format__, METH_VARARGS, p_format__doc__}, + {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS}, + {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS}, {"encode", (PyCFunction)string_encode, METH_VARARGS, encode__doc__}, {"decode", (PyCFunction)string_decode, METH_VARARGS, decode__doc__}, {"expandtabs", (PyCFunction)string_expandtabs, METH_VARARGS, @@ -4574,6 +4585,7 @@ int prec = -1; int c = '\0'; int fill; + int isnumok; PyObject *v = NULL; PyObject *temp = NULL; char *pbuf; @@ -4775,23 +4787,52 @@ case 'X': if (c == 'i') c = 'd'; - if (PyLong_Check(v)) { - int ilen; - temp = _PyString_FormatLong(v, flags, - prec, c, &pbuf, &ilen); - len = ilen; - if (!temp) - goto error; - sign = 1; + isnumok = 0; + if (PyNumber_Check(v)) { + PyObject *iobj=NULL; + + if (PyInt_Check(v) || (PyLong_Check(v))) { + iobj = v; + Py_INCREF(iobj); + } + else { + iobj = PyNumber_Int(v); + if (iobj==NULL) iobj = PyNumber_Long(v); + } + if (iobj!=NULL) { + if (PyInt_Check(iobj)) { + isnumok = 1; + pbuf = formatbuf; + len = formatint(pbuf, + sizeof(formatbuf), + flags, prec, c, iobj); + Py_DECREF(iobj); + if (len < 0) + goto error; + sign = 1; + } + else if (PyLong_Check(iobj)) { + int ilen; + + isnumok = 1; + temp = _PyString_FormatLong(iobj, flags, + prec, c, &pbuf, &ilen); + Py_DECREF(iobj); + len = ilen; + if (!temp) + goto error; + sign = 1; + } + else { + Py_DECREF(iobj); + } + } } - else { - pbuf = formatbuf; - len = formatint(pbuf, - sizeof(formatbuf), - flags, prec, c, v); - if (len < 0) - goto error; - sign = 1; + if (!isnumok) { + PyErr_Format(PyExc_TypeError, + "%%%c format: a number is required, " + "not %.200s", c, Py_TYPE(v)->tp_name); + goto error; } if (flags & F_ZERO) fill = '0'; Modified: python/branches/trunk-math/Objects/typeobject.c ============================================================================== --- python/branches/trunk-math/Objects/typeobject.c (original) +++ python/branches/trunk-math/Objects/typeobject.c Thu Feb 28 21:09:17 2008 @@ -306,6 +306,40 @@ } static PyObject * +type_abstractmethods(PyTypeObject *type, void *context) +{ + PyObject *mod = PyDict_GetItemString(type->tp_dict, + "__abstractmethods__"); + if (!mod) { + PyErr_Format(PyExc_AttributeError, "__abstractmethods__"); + return NULL; + } + Py_XINCREF(mod); + return mod; +} + +static int +type_set_abstractmethods(PyTypeObject *type, PyObject *value, void *context) +{ + /* __abstractmethods__ should only be set once on a type, in + abc.ABCMeta.__new__, so this function doesn't do anything + special to update subclasses. + */ + int res = PyDict_SetItemString(type->tp_dict, + "__abstractmethods__", value); + if (res == 0) { + type_modified(type); + if (value && PyObject_IsTrue(value)) { + type->tp_flags |= Py_TPFLAGS_IS_ABSTRACT; + } + else { + type->tp_flags &= ~Py_TPFLAGS_IS_ABSTRACT; + } + } + return res; +} + +static PyObject * type_get_bases(PyTypeObject *type, void *context) { Py_INCREF(type->tp_bases); @@ -542,6 +576,8 @@ {"__name__", (getter)type_name, (setter)type_set_name, NULL}, {"__bases__", (getter)type_get_bases, (setter)type_set_bases, NULL}, {"__module__", (getter)type_module, (setter)type_set_module, NULL}, + {"__abstractmethods__", (getter)type_abstractmethods, + (setter)type_set_abstractmethods, NULL}, {"__dict__", (getter)type_dict, NULL, NULL}, {"__doc__", (getter)type_get_doc, NULL, NULL}, {0} @@ -2749,6 +2785,56 @@ } if (err < 0) return NULL; + + if (type->tp_flags & Py_TPFLAGS_IS_ABSTRACT) { + static PyObject *comma = NULL; + PyObject *abstract_methods = NULL; + PyObject *builtins; + PyObject *sorted; + PyObject *sorted_methods = NULL; + PyObject *joined = NULL; + const char *joined_str; + + /* Compute ", ".join(sorted(type.__abstractmethods__)) + into joined. */ + abstract_methods = type_abstractmethods(type, NULL); + if (abstract_methods == NULL) + goto error; + builtins = PyEval_GetBuiltins(); + if (builtins == NULL) + goto error; + sorted = PyDict_GetItemString(builtins, "sorted"); + if (sorted == NULL) + goto error; + sorted_methods = PyObject_CallFunctionObjArgs(sorted, + abstract_methods, + NULL); + if (sorted_methods == NULL) + goto error; + if (comma == NULL) { + comma = PyString_InternFromString(", "); + if (comma == NULL) + goto error; + } + joined = PyObject_CallMethod(comma, "join", + "O", sorted_methods); + if (joined == NULL) + goto error; + joined_str = PyString_AsString(joined); + if (joined_str == NULL) + goto error; + + PyErr_Format(PyExc_TypeError, + "Can't instantiate abstract class %s " + "with abstract methods %s", + type->tp_name, + joined_str); + error: + Py_XDECREF(joined); + Py_XDECREF(sorted_methods); + Py_XDECREF(abstract_methods); + return NULL; + } return type->tp_alloc(type, 0); } @@ -3210,11 +3296,74 @@ return _common_reduce(self, proto); } +static PyObject * +object_subclasshook(PyObject *cls, PyObject *args) +{ + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; +} + +PyDoc_STRVAR(object_subclasshook_doc, +"Abstract classes can override this to customize issubclass().\n" +"\n" +"This is invoked early on by abc.ABCMeta.__subclasscheck__().\n" +"It should return True, False or NotImplemented. If it returns\n" +"NotImplemented, the normal algorithm is used. Otherwise, it\n" +"overrides the normal algorithm (and the outcome is cached).\n"); + +/* + from PEP 3101, this code implements: + + class object: + def __format__(self, format_spec): + if isinstance(format_spec, str): + return format(str(self), format_spec) + elif isinstance(format_spec, unicode): + return format(unicode(self), format_spec) +*/ +static PyObject * +object_format(PyObject *self, PyObject *args) +{ + PyObject *format_spec; + PyObject *self_as_str = NULL; + PyObject *result = NULL; + PyObject *format_meth = NULL; + + if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + return NULL; + if (PyUnicode_Check(format_spec)) { + self_as_str = PyObject_Unicode(self); + } else if (PyString_Check(format_spec)) { + self_as_str = PyObject_Str(self); + } else { + PyErr_SetString(PyExc_TypeError, "argument to __format__ must be unicode or str"); + return NULL; + } + + if (self_as_str != NULL) { + /* find the format function */ + format_meth = PyObject_GetAttrString(self_as_str, "__format__"); + if (format_meth != NULL) { + /* and call it */ + result = PyObject_CallFunctionObjArgs(format_meth, format_spec, NULL); + } + } + + Py_XDECREF(self_as_str); + Py_XDECREF(format_meth); + + return result; +} + static PyMethodDef object_methods[] = { {"__reduce_ex__", object_reduce_ex, METH_VARARGS, PyDoc_STR("helper for pickle")}, {"__reduce__", object_reduce, METH_VARARGS, PyDoc_STR("helper for pickle")}, + {"__subclasshook__", object_subclasshook, METH_CLASS | METH_VARARGS, + object_subclasshook_doc}, + {"__format__", object_format, METH_VARARGS, + PyDoc_STR("default object formatter")}, {0} }; Modified: python/branches/trunk-math/Objects/unicodeobject.c ============================================================================== --- python/branches/trunk-math/Objects/unicodeobject.c (original) +++ python/branches/trunk-math/Objects/unicodeobject.c Thu Feb 28 21:09:17 2008 @@ -42,6 +42,8 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" +#include "formatter_unicode.h" + #include "unicodeobject.h" #include "ucnhash.h" @@ -5059,21 +5061,8 @@ /* --- Helpers ------------------------------------------------------------ */ -#define STRINGLIB_CHAR Py_UNICODE - -#define STRINGLIB_LEN PyUnicode_GET_SIZE -#define STRINGLIB_NEW PyUnicode_FromUnicode -#define STRINGLIB_STR PyUnicode_AS_UNICODE - -Py_LOCAL_INLINE(int) -STRINGLIB_CMP(const Py_UNICODE* str, const Py_UNICODE* other, Py_ssize_t len) -{ - if (str[0] != other[0]) - return 1; - return memcmp((void*) str, (void*) other, len * sizeof(Py_UNICODE)); -} +#include "stringlib/unicodedefs.h" -#define STRINGLIB_EMPTY unicode_empty #define FROM_UNICODE #include "stringlib/fastsearch.h" @@ -7802,6 +7791,19 @@ } +/* Implements do_string_format, which is unicode because of stringlib */ +#include "stringlib/string_format.h" + +PyDoc_STRVAR(format__doc__, +"S.format(*args, **kwargs) -> unicode\n\ +\n\ +"); + +PyDoc_STRVAR(p_format__doc__, +"S.__format__(format_spec) -> unicode\n\ +\n\ +"); + static PyObject * unicode_getnewargs(PyUnicodeObject *v) @@ -7855,6 +7857,10 @@ {"isalpha", (PyCFunction) unicode_isalpha, METH_NOARGS, isalpha__doc__}, {"isalnum", (PyCFunction) unicode_isalnum, METH_NOARGS, isalnum__doc__}, {"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__}, + {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__}, + {"__format__", (PyCFunction) unicode__format__, METH_VARARGS, p_format__doc__}, + {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS}, + {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS}, #if 0 {"capwords", (PyCFunction) unicode_capwords, METH_NOARGS, capwords__doc__}, #endif @@ -8328,6 +8334,7 @@ int prec = -1; Py_UNICODE c = '\0'; Py_UNICODE fill; + int isnumok; PyObject *v = NULL; PyObject *temp = NULL; Py_UNICODE *pbuf; @@ -8540,21 +8547,49 @@ case 'X': if (c == 'i') c = 'd'; - if (PyLong_Check(v)) { - temp = formatlong(v, flags, prec, c); - if (!temp) - goto onError; - pbuf = PyUnicode_AS_UNICODE(temp); - len = PyUnicode_GET_SIZE(temp); - sign = 1; + isnumok = 0; + if (PyNumber_Check(v)) { + PyObject *iobj=NULL; + + if (PyInt_Check(v) || (PyLong_Check(v))) { + iobj = v; + Py_INCREF(iobj); + } + else { + iobj = PyNumber_Int(v); + if (iobj==NULL) iobj = PyNumber_Long(v); + } + if (iobj!=NULL) { + if (PyInt_Check(iobj)) { + isnumok = 1; + pbuf = formatbuf; + len = formatint(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE), + flags, prec, c, iobj); + Py_DECREF(iobj); + if (len < 0) + goto onError; + sign = 1; + } + else if (PyLong_Check(iobj)) { + isnumok = 1; + temp = formatlong(iobj, flags, prec, c); + Py_DECREF(iobj); + if (!temp) + goto onError; + pbuf = PyUnicode_AS_UNICODE(temp); + len = PyUnicode_GET_SIZE(temp); + sign = 1; + } + else { + Py_DECREF(iobj); + } + } } - else { - pbuf = formatbuf; - len = formatint(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE), - flags, prec, c, v); - if (len < 0) + if (!isnumok) { + PyErr_Format(PyExc_TypeError, + "%%%c format: a number is required, " + "not %.200s", c, Py_TYPE(v)->tp_name); goto onError; - sign = 1; } if (flags & F_ZERO) fill = '0'; Modified: python/branches/trunk-math/PC/VC6/pythoncore.dsp ============================================================================== --- python/branches/trunk-math/PC/VC6/pythoncore.dsp (original) +++ python/branches/trunk-math/PC/VC6/pythoncore.dsp Thu Feb 28 21:09:17 2008 @@ -125,6 +125,10 @@ # End Source File # Begin Source File +SOURCE=..\..\Modules\_collectionsmodule.c +# End Source File +# Begin Source File + SOURCE=..\..\Modules\_csv.c # End Source File # Begin Source File @@ -253,10 +257,6 @@ # End Source File # Begin Source File -SOURCE=..\..\Modules\collectionsmodule.c -# End Source File -# Begin Source File - SOURCE=..\..\Python\compile.c # End Source File # Begin Source File @@ -333,6 +333,14 @@ # End Source File # Begin Source File +SOURCE=..\..\Python\formatter_string.c +# End Source File +# Begin Source File + +SOURCE=..\..\Python\formatter_unicode.c +# End Source File +# Begin Source File + SOURCE=..\..\Objects\frameobject.c # End Source File # Begin Source File @@ -583,10 +591,6 @@ # End Source File # Begin Source File -SOURCE=..\..\Modules\rgbimgmodule.c -# End Source File -# Begin Source File - SOURCE=..\..\Modules\rotatingtree.c # End Source File # Begin Source File Modified: python/branches/trunk-math/PC/VS7.1/pythoncore.vcproj ============================================================================== --- python/branches/trunk-math/PC/VS7.1/pythoncore.vcproj (original) +++ python/branches/trunk-math/PC/VS7.1/pythoncore.vcproj Thu Feb 28 21:09:17 2008 @@ -515,6 +515,12 @@ RelativePath="..\..\Objects\floatobject.c"> + + + + + + + + Modified: python/branches/trunk-math/PC/config.c ============================================================================== --- python/branches/trunk-math/PC/config.c (original) +++ python/branches/trunk-math/PC/config.c Thu Feb 28 21:09:17 2008 @@ -12,6 +12,7 @@ extern void initbinascii(void); extern void initcmath(void); extern void initerrno(void); +extern void initfuture_builtins(void); extern void initgc(void); #ifndef MS_WINI64 extern void initimageop(void); @@ -84,6 +85,7 @@ {"binascii", initbinascii}, {"cmath", initcmath}, {"errno", initerrno}, + {"future_builtins", initfuture_builtins}, {"gc", initgc}, #ifndef MS_WINI64 {"imageop", initimageop}, Modified: python/branches/trunk-math/PCbuild/build_tkinter.py ============================================================================== --- python/branches/trunk-math/PCbuild/build_tkinter.py (original) +++ python/branches/trunk-math/PCbuild/build_tkinter.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,6 @@ import os import sys -import shutil here = os.path.abspath(os.path.dirname(__file__)) par = os.path.pardir Modified: python/branches/trunk-math/PCbuild/pythoncore.vcproj ============================================================================== --- python/branches/trunk-math/PCbuild/pythoncore.vcproj (original) +++ python/branches/trunk-math/PCbuild/pythoncore.vcproj Thu Feb 28 21:09:17 2008 @@ -1055,6 +1055,10 @@ > + + @@ -1631,6 +1635,14 @@ > + + + + Modified: python/branches/trunk-math/Parser/Python.asdl ============================================================================== --- python/branches/trunk-math/Parser/Python.asdl (original) +++ python/branches/trunk-math/Parser/Python.asdl Thu Feb 28 21:09:17 2008 @@ -10,8 +10,8 @@ | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorators) - | ClassDef(identifier name, expr* bases, stmt* body) + stmt* body, expr* decorator_list) + | ClassDef(identifier name, expr* bases, stmt* body, expr *decorator_list) | Return(expr? value) | Delete(expr* targets) Modified: python/branches/trunk-math/Parser/asdl_c.py ============================================================================== --- python/branches/trunk-math/Parser/asdl_c.py (original) +++ python/branches/trunk-math/Parser/asdl_c.py Thu Feb 28 21:09:17 2008 @@ -4,7 +4,7 @@ # TO DO # handle fields that have a type but no name -import os, sys, traceback +import os, sys import asdl Modified: python/branches/trunk-math/Parser/parser.h ============================================================================== --- python/branches/trunk-math/Parser/parser.h (original) +++ python/branches/trunk-math/Parser/parser.h Thu Feb 28 21:09:17 2008 @@ -7,7 +7,7 @@ /* Parser interface */ -#define MAXSTACK 500 +#define MAXSTACK 1500 typedef struct { int s_state; /* State in current DFA */ Modified: python/branches/trunk-math/Parser/spark.py ============================================================================== --- python/branches/trunk-math/Parser/spark.py (original) +++ python/branches/trunk-math/Parser/spark.py Thu Feb 28 21:09:17 2008 @@ -22,7 +22,6 @@ __version__ = 'SPARK-0.7 (pre-alpha-5)' import re -import sys import string def _namelist(instance): Modified: python/branches/trunk-math/Python/Python-ast.c ============================================================================== --- python/branches/trunk-math/Python/Python-ast.c (original) +++ python/branches/trunk-math/Python/Python-ast.c Thu Feb 28 21:09:17 2008 @@ -42,13 +42,14 @@ "name", "args", "body", - "decorators", + "decorator_list", }; static PyTypeObject *ClassDef_type; static char *ClassDef_fields[]={ "name", "bases", "body", + "decorator_list", }; static PyTypeObject *Return_type; static char *Return_fields[]={ @@ -469,7 +470,7 @@ FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields, 4); if (!FunctionDef_type) return 0; - ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 3); + ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4); if (!ClassDef_type) return 0; Return_type = make_type("Return", stmt_type, Return_fields, 1); if (!Return_type) return 0; @@ -790,7 +791,7 @@ stmt_ty FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * - decorators, int lineno, int col_offset, PyArena *arena) + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -810,15 +811,15 @@ p->v.FunctionDef.name = name; p->v.FunctionDef.args = args; p->v.FunctionDef.body = body; - p->v.FunctionDef.decorators = decorators; + p->v.FunctionDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; } stmt_ty -ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int lineno, int - col_offset, PyArena *arena) +ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq * + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -833,6 +834,7 @@ p->v.ClassDef.name = name; p->v.ClassDef.bases = bases; p->v.ClassDef.body = body; + p->v.ClassDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1906,9 +1908,11 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->v.FunctionDef.decorators, ast2obj_expr); + value = ast2obj_list(o->v.FunctionDef.decorator_list, + ast2obj_expr); if (!value) goto failed; - if (PyObject_SetAttrString(result, "decorators", value) == -1) + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) goto failed; Py_DECREF(value); break; @@ -1930,6 +1934,13 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); + value = ast2obj_list(o->v.ClassDef.decorator_list, + ast2obj_expr); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) + goto failed; + Py_DECREF(value); break; case Return_kind: result = PyType_GenericNew(Return_type, NULL, NULL); Modified: python/branches/trunk-math/Python/ast.c ============================================================================== --- python/branches/trunk-math/Python/ast.c (original) +++ python/branches/trunk-math/Python/ast.c Thu Feb 28 21:09:17 2008 @@ -29,6 +29,7 @@ static asdl_seq *ast_for_exprlist(struct compiling *, const node *, expr_context_ty); static expr_ty ast_for_testlist(struct compiling *, const node *); +static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *); static expr_ty ast_for_testlist_gexp(struct compiling *, const node *); /* Note different signature for ast_for_call */ @@ -828,27 +829,16 @@ } static stmt_ty -ast_for_funcdef(struct compiling *c, const node *n) +ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { - /* funcdef: 'def' [decorators] NAME parameters ':' suite */ + /* funcdef: 'def' NAME parameters ':' suite */ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorator_seq = NULL; - int name_i; + int name_i = 1; REQ(n, funcdef); - if (NCH(n) == 6) { /* decorators are present */ - decorator_seq = ast_for_decorators(c, CHILD(n, 0)); - if (!decorator_seq) - return NULL; - name_i = 2; - } - else { - name_i = 1; - } - name = NEW_IDENTIFIER(CHILD(n, name_i)); if (!name) return NULL; @@ -867,6 +857,36 @@ n->n_col_offset, c->c_arena); } +static stmt_ty +ast_for_decorated(struct compiling *c, const node *n) +{ + /* decorated: decorators (classdef | funcdef) */ + stmt_ty thing = NULL; + asdl_seq *decorator_seq = NULL; + + REQ(n, decorated); + + decorator_seq = ast_for_decorators(c, CHILD(n, 0)); + if (!decorator_seq) + return NULL; + + assert(TYPE(CHILD(n, 1)) == funcdef || + TYPE(CHILD(n, 1)) == classdef); + + if (TYPE(CHILD(n, 1)) == funcdef) { + thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq); + } else if (TYPE(CHILD(n, 1)) == classdef) { + thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq); + } + /* we count the decorators in when talking about the class' or + function's line number */ + if (thing) { + thing->lineno = LINENO(n); + thing->col_offset = n->n_col_offset; + } + return thing; +} + static expr_ty ast_for_lambdef(struct compiling *c, const node *n) { @@ -2968,7 +2988,7 @@ } static stmt_ty -ast_for_classdef(struct compiling *c, const node *n) +ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { /* classdef: 'class' NAME ['(' testlist ')'] ':' suite */ asdl_seq *bases, *s; @@ -2984,16 +3004,16 @@ s = ast_for_suite(c, CHILD(n, 3)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* check for empty base list */ if (TYPE(CHILD(n,3)) == RPAR) { s = ast_for_suite(c, CHILD(n,5)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* else handle the base class list */ @@ -3004,8 +3024,8 @@ s = ast_for_suite(c, CHILD(n, 6)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } static stmt_ty @@ -3054,7 +3074,7 @@ } else { /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt - | funcdef | classdef + | funcdef | classdef | decorated */ node *ch = CHILD(n, 0); REQ(n, compound_stmt); @@ -3070,9 +3090,11 @@ case with_stmt: return ast_for_with_stmt(c, ch); case funcdef: - return ast_for_funcdef(c, ch); + return ast_for_funcdef(c, ch, NULL); case classdef: - return ast_for_classdef(c, ch); + return ast_for_classdef(c, ch, NULL); + case decorated: + return ast_for_decorated(c, ch); default: PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", Modified: python/branches/trunk-math/Python/bltinmodule.c ============================================================================== --- python/branches/trunk-math/Python/bltinmodule.c (original) +++ python/branches/trunk-math/Python/bltinmodule.c Thu Feb 28 21:09:17 2008 @@ -166,7 +166,7 @@ if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "apply() not supported in 3.x") < 0) + "apply() not supported in 3.x. Use func(*args, **kwargs).") < 0) return NULL; if (!PyArg_UnpackTuple(args, "apply", 1, 3, &func, &alist, &kwdict)) @@ -209,11 +209,23 @@ static PyObject * +builtin_bin(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 2); +} + +PyDoc_STRVAR(bin_doc, +"bin(number) -> string\n\ +\n\ +Return the binary representation of an integer or long integer."); + + +static PyObject * builtin_callable(PyObject *self, PyObject *v) { if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "callable() not supported in 3.x") < 0) + "callable() not supported in 3.x. Use hasattr(o, '__call__').") < 0) return NULL; return PyBool_FromLong((long)PyCallable_Check(v)); } @@ -339,6 +351,24 @@ "or string, return the same type, else return a list."); static PyObject * +builtin_format(PyObject *self, PyObject *args) +{ + PyObject *value; + PyObject *format_spec = NULL; + + if (!PyArg_ParseTuple(args, "O|O:format", &value, &format_spec)) + return NULL; + + return PyObject_Format(value, format_spec); +} + +PyDoc_STRVAR(format_doc, +"format(value[, format_spec]) -> string\n\ +\n\ +Returns value.__format__(format_spec)\n\ +format_spec defaults to \"\""); + +static PyObject * builtin_chr(PyObject *self, PyObject *args) { long x; @@ -654,7 +684,7 @@ if (Py_Py3kWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, - "execfile() not supported in 3.x") < 0) + "execfile() not supported in 3.x. Use exec().") < 0) return NULL; if (!PyArg_ParseTuple(args, "s|O!O:execfile", @@ -879,9 +909,15 @@ func = PyTuple_GetItem(args, 0); n--; - if (func == Py_None && n == 1) { - /* map(None, S) is the same as list(S). */ - return PySequence_List(PyTuple_GetItem(args, 1)); + if (func == Py_None) { + if (Py_Py3kWarningFlag && + PyErr_Warn(PyExc_DeprecationWarning, + "map(None, ...) not supported in 3.x. Use list(...).") < 0) + return NULL; + if (n == 1) { + /* map(None, S) is the same as list(S). */ + return PySequence_List(PyTuple_GetItem(args, 1)); + } } /* Get space for sequence descriptors. Must NULL out the iterator @@ -2348,6 +2384,7 @@ {"all", builtin_all, METH_O, all_doc}, {"any", builtin_any, METH_O, any_doc}, {"apply", builtin_apply, METH_VARARGS, apply_doc}, + {"bin", builtin_bin, METH_O, bin_doc}, {"callable", builtin_callable, METH_O, callable_doc}, {"chr", builtin_chr, METH_VARARGS, chr_doc}, {"cmp", builtin_cmp, METH_VARARGS, cmp_doc}, @@ -2359,6 +2396,7 @@ {"eval", builtin_eval, METH_VARARGS, eval_doc}, {"execfile", builtin_execfile, METH_VARARGS, execfile_doc}, {"filter", builtin_filter, METH_VARARGS, filter_doc}, + {"format", builtin_format, METH_VARARGS, format_doc}, {"getattr", builtin_getattr, METH_VARARGS, getattr_doc}, {"globals", (PyCFunction)builtin_globals, METH_NOARGS, globals_doc}, {"hasattr", builtin_hasattr, METH_VARARGS, hasattr_doc}, Modified: python/branches/trunk-math/Python/compile.c ============================================================================== --- python/branches/trunk-math/Python/compile.c (original) +++ python/branches/trunk-math/Python/compile.c Thu Feb 28 21:09:17 2008 @@ -1362,7 +1362,7 @@ PyCodeObject *co; PyObject *first_const = Py_None; arguments_ty args = s->v.FunctionDef.args; - asdl_seq* decos = s->v.FunctionDef.decorators; + asdl_seq* decos = s->v.FunctionDef.decorator_list; stmt_ty st; int i, n, docstring; @@ -1413,9 +1413,14 @@ static int compiler_class(struct compiler *c, stmt_ty s) { - int n; + int n, i; PyCodeObject *co; PyObject *str; + asdl_seq* decos = s->v.ClassDef.decorator_list; + + if (!compiler_decorators(c, decos)) + return 0; + /* push class name on stack, needed by BUILD_CLASS */ ADDOP_O(c, LOAD_CONST, s->v.ClassDef.name, consts); /* push the tuple of base classes on the stack */ @@ -1461,6 +1466,10 @@ ADDOP_I(c, CALL_FUNCTION, 0); ADDOP(c, BUILD_CLASS); + /* apply decorators */ + for (i = 0; i < asdl_seq_LEN(decos); i++) { + ADDOP_I(c, CALL_FUNCTION, 1); + } if (!compiler_nameop(c, s->v.ClassDef.name, Store)) return 0; return 1; @@ -2314,7 +2323,7 @@ return compiler_error(c, "can not assign to __debug__"); } -mangled = _Py_Mangle(c->u->u_private, name); + mangled = _Py_Mangle(c->u->u_private, name); if (!mangled) return 0; Modified: python/branches/trunk-math/Python/getargs.c ============================================================================== --- python/branches/trunk-math/Python/getargs.c (original) +++ python/branches/trunk-math/Python/getargs.c Thu Feb 28 21:09:17 2008 @@ -154,7 +154,7 @@ PyMem_FREE(ptr); return -1; } - if(PyList_Append(*freelist, cobj)) { + if (PyList_Append(*freelist, cobj)) { PyMem_FREE(ptr); Py_DECREF(cobj); return -1; @@ -166,8 +166,8 @@ static int cleanreturn(int retval, PyObject *freelist) { - if(freelist) { - if((retval) == 0) { + if (freelist) { + if (retval == 0) { Py_ssize_t len = PyList_GET_SIZE(freelist), i; for (i = 0; i < len; i++) PyMem_FREE(PyCObject_AsVoidPtr( @@ -708,7 +708,7 @@ case 'L': {/* PY_LONG_LONG */ PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * ); PY_LONG_LONG ival = PyLong_AsLongLong( arg ); - if( ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { + if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { return converterr("long", arg, msgbuf, bufsize); } else { *p = ival; @@ -998,7 +998,7 @@ "(memory error)", arg, msgbuf, bufsize); } - if(addcleanup(*buffer, freelist)) { + if (addcleanup(*buffer, freelist)) { Py_DECREF(s); return converterr( "(cleanup problem)", @@ -1043,7 +1043,7 @@ return converterr("(memory error)", arg, msgbuf, bufsize); } - if(addcleanup(*buffer, freelist)) { + if (addcleanup(*buffer, freelist)) { Py_DECREF(s); return converterr("(cleanup problem)", arg, msgbuf, bufsize); @@ -1345,6 +1345,7 @@ return retval; } +#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':') static int vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, @@ -1352,13 +1353,10 @@ { char msgbuf[512]; int levels[32]; - const char *fname, *message; - int min, max; - const char *formatsave; + const char *fname, *msg, *custom_msg, *keyword; + int min = INT_MAX; int i, len, nargs, nkeywords; - const char *msg; - char **p; - PyObject *freelist = NULL; + PyObject *freelist = NULL, *current_arg; assert(args != NULL && PyTuple_Check(args)); assert(keywords == NULL || PyDict_Check(keywords)); @@ -1366,168 +1364,108 @@ assert(kwlist != NULL); assert(p_va != NULL); - /* Search the format: - message <- error msg, if any (else NULL). - fname <- routine name, if any (else NULL). - min <- # of required arguments, or -1 if all are required. - max <- most arguments (required + optional). - Check that kwlist has a non-NULL entry for each arg. - Raise error if a tuple arg spec is found. - */ - fname = message = NULL; - formatsave = format; - p = kwlist; - min = -1; - max = 0; - while ((i = *format++) != '\0') { - if (isalpha(Py_CHARMASK(i)) && i != 'e') { - max++; - if (*p == NULL) { - PyErr_SetString(PyExc_RuntimeError, - "more argument specifiers than " - "keyword list entries"); - return 0; - } - p++; - } - else if (i == '|') - min = max; - else if (i == ':') { - fname = format; - break; - } - else if (i == ';') { - message = format; - break; - } - else if (i == '(') { - PyErr_SetString(PyExc_RuntimeError, - "tuple found in format when using keyword " - "arguments"); - return 0; - } - } - format = formatsave; - if (*p != NULL) { - PyErr_SetString(PyExc_RuntimeError, - "more keyword list entries than " - "argument specifiers"); - return 0; - } - if (min < 0) { - /* All arguments are required. */ - min = max; + /* grab the function name or custom error msg first (mutually exclusive) */ + fname = strchr(format, ':'); + if (fname) { + fname++; + custom_msg = NULL; } - - nargs = PyTuple_GET_SIZE(args); - nkeywords = keywords == NULL ? 0 : PyDict_Size(keywords); - - /* make sure there are no duplicate values for an argument; - its not clear when to use the term "keyword argument vs. - keyword parameter in messages */ - if (nkeywords > 0) { - for (i = 0; i < nargs; i++) { - const char *thiskw = kwlist[i]; - if (thiskw == NULL) - break; - if (PyDict_GetItemString(keywords, thiskw)) { - PyErr_Format(PyExc_TypeError, - "keyword parameter '%s' was given " - "by position and by name", - thiskw); - return 0; - } - else if (PyErr_Occurred()) - return 0; - } + else { + custom_msg = strchr(format,';'); + if (custom_msg) + custom_msg++; } - /* required arguments missing from args can be supplied by keyword - arguments; set len to the number of positional arguments, and, - if that's less than the minimum required, add in the number of - required arguments that are supplied by keywords */ - len = nargs; - if (nkeywords > 0 && nargs < min) { - for (i = nargs; i < min; i++) { - if (PyDict_GetItemString(keywords, kwlist[i])) - len++; - else if (PyErr_Occurred()) - return 0; - } - } + /* scan kwlist and get greatest possible nbr of args */ + for (len=0; kwlist[len]; len++) + continue; - /* make sure we got an acceptable number of arguments; the message - is a little confusing with keywords since keyword arguments - which are supplied, but don't match the required arguments - are not included in the "%d given" part of the message - XXX and this isn't a bug!? */ - if (len < min || max < len) { - if (message == NULL) { - PyOS_snprintf(msgbuf, sizeof(msgbuf), - "%.200s%s takes %s %d argument%s " - "(%d given)", - fname==NULL ? "function" : fname, - fname==NULL ? "" : "()", - min==max ? "exactly" - : len < min ? "at least" : "at most", - len < min ? min : max, - (len < min ? min : max) == 1 ? "" : "s", - len); - message = msgbuf; - } - PyErr_SetString(PyExc_TypeError, message); + nargs = PyTuple_GET_SIZE(args); + nkeywords = (keywords == NULL) ? 0 : PyDict_Size(keywords); + if (nargs + nkeywords > len) { + PyErr_Format(PyExc_TypeError, "%s%s takes at most %d " + "argument%s (%d given)", + (fname == NULL) ? "function" : fname, + (fname == NULL) ? "" : "()", + len, + (len == 1) ? "" : "s", + nargs + nkeywords); return 0; } - /* convert the positional arguments */ - for (i = 0; i < nargs; i++) { - if (*format == '|') + /* convert tuple args and keyword args in same loop, using kwlist to drive process */ + for (i = 0; i < len; i++) { + keyword = kwlist[i]; + if (*format == '|') { + min = i; format++; - msg = convertitem(PyTuple_GET_ITEM(args, i), &format, p_va, - flags, levels, msgbuf, sizeof(msgbuf), - &freelist); - if (msg) { - seterror(i+1, msg, levels, fname, message); + } + if (IS_END_OF_FORMAT(*format)) { + PyErr_Format(PyExc_RuntimeError, + "More keyword list entries (%d) than " + "format specifiers (%d)", len, i); return cleanreturn(0, freelist); } - } - - /* handle no keyword parameters in call */ - if (nkeywords == 0) - return cleanreturn(1, freelist); - - /* convert the keyword arguments; this uses the format - string where it was left after processing args */ - for (i = nargs; i < max; i++) { - PyObject *item; - if (*format == '|') - format++; - item = PyDict_GetItemString(keywords, kwlist[i]); - if (item != NULL) { - Py_INCREF(item); - msg = convertitem(item, &format, p_va, flags, levels, - msgbuf, sizeof(msgbuf), &freelist); - Py_DECREF(item); - if (msg) { - seterror(i+1, msg, levels, fname, message); + current_arg = NULL; + if (nkeywords) { + current_arg = PyDict_GetItemString(keywords, keyword); + } + if (current_arg) { + --nkeywords; + if (i < nargs) { + /* arg present in tuple and in dict */ + PyErr_Format(PyExc_TypeError, + "Argument given by name ('%s') " + "and position (%d)", + keyword, i+1); return cleanreturn(0, freelist); } - --nkeywords; - if (nkeywords == 0) - break; } - else if (PyErr_Occurred()) + else if (nkeywords && PyErr_Occurred()) return cleanreturn(0, freelist); - else { - msg = skipitem(&format, p_va, flags); + else if (i < nargs) + current_arg = PyTuple_GET_ITEM(args, i); + + if (current_arg) { + msg = convertitem(current_arg, &format, p_va, flags, + levels, msgbuf, sizeof(msgbuf), &freelist); if (msg) { - levels[0] = 0; - seterror(i+1, msg, levels, fname, message); + seterror(i+1, msg, levels, fname, custom_msg); return cleanreturn(0, freelist); } + continue; + } + + if (i < min) { + PyErr_Format(PyExc_TypeError, "Required argument " + "'%s' (pos %d) not found", + keyword, i+1); + return cleanreturn(0, freelist); + } + /* current code reports success when all required args + * fulfilled and no keyword args left, with no further + * validation. XXX Maybe skip this in debug build ? + */ + if (!nkeywords) + return cleanreturn(1, freelist); + + /* We are into optional args, skip thru to any remaining + * keyword args */ + msg = skipitem(&format, p_va, flags); + if (msg) { + PyErr_Format(PyExc_RuntimeError, "%s: '%s'", msg, + format); + return cleanreturn(0, freelist); } } + if (!IS_END_OF_FORMAT(*format)) { + PyErr_Format(PyExc_RuntimeError, + "more argument specifiers than keyword list entries " + "(remaining format:'%s')", format); + return cleanreturn(0, freelist); + } + /* make sure there are no extraneous keyword arguments */ if (nkeywords > 0) { PyObject *key, *value; @@ -1541,7 +1479,7 @@ return cleanreturn(0, freelist); } ks = PyString_AsString(key); - for (i = 0; i < max; i++) { + for (i = 0; i < len; i++) { if (!strcmp(ks, kwlist[i])) { match = 1; break; @@ -1564,7 +1502,7 @@ static char * skipitem(const char **p_format, va_list *p_va, int flags) { - const char *format = *p_format; + const char *format = *p_format; char c = *format++; switch (c) { @@ -1671,16 +1609,33 @@ } break; } - + + case '(': /* bypass tuple, not handled at all previously */ + { + char *msg; + for (;;) { + if (*format==')') + break; + if (IS_END_OF_FORMAT(*format)) + return "Unmatched left paren in format " + "string"; + msg = skipitem(&format, p_va, flags); + if (msg) + return msg; + } + format++; + break; + } + + case ')': + return "Unmatched right paren in format string"; + default: err: return "impossible"; } - /* The "(...)" format code for tuples is not handled here because - * it is not allowed with keyword args. */ - *p_format = format; return NULL; } Modified: python/branches/trunk-math/Python/graminit.c ============================================================================== --- python/branches/trunk-math/Python/graminit.c (original) +++ python/branches/trunk-math/Python/graminit.c Thu Feb 28 21:09:17 2008 @@ -86,176 +86,184 @@ {1, arcs_4_0}, {2, arcs_4_1}, }; -static arc arcs_5_0[2] = { +static arc arcs_5_0[1] = { {16, 1}, - {18, 2}, }; -static arc arcs_5_1[1] = { +static arc arcs_5_1[2] = { {18, 2}, + {19, 2}, }; static arc arcs_5_2[1] = { - {19, 3}, -}; -static arc arcs_5_3[1] = { - {20, 4}, -}; -static arc arcs_5_4[1] = { - {21, 5}, -}; -static arc arcs_5_5[1] = { - {22, 6}, -}; -static arc arcs_5_6[1] = { - {0, 6}, + {0, 2}, }; -static state states_5[7] = { - {2, arcs_5_0}, - {1, arcs_5_1}, +static state states_5[3] = { + {1, arcs_5_0}, + {2, arcs_5_1}, {1, arcs_5_2}, - {1, arcs_5_3}, - {1, arcs_5_4}, - {1, arcs_5_5}, - {1, arcs_5_6}, }; static arc arcs_6_0[1] = { - {13, 1}, + {20, 1}, }; -static arc arcs_6_1[2] = { - {23, 2}, - {15, 3}, +static arc arcs_6_1[1] = { + {21, 2}, }; static arc arcs_6_2[1] = { - {15, 3}, + {22, 3}, }; static arc arcs_6_3[1] = { - {0, 3}, + {23, 4}, }; -static state states_6[4] = { +static arc arcs_6_4[1] = { + {24, 5}, +}; +static arc arcs_6_5[1] = { + {0, 5}, +}; +static state states_6[6] = { {1, arcs_6_0}, - {2, arcs_6_1}, + {1, arcs_6_1}, {1, arcs_6_2}, {1, arcs_6_3}, + {1, arcs_6_4}, + {1, arcs_6_5}, }; -static arc arcs_7_0[3] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_7_0[1] = { + {13, 1}, }; -static arc arcs_7_1[3] = { - {25, 4}, - {27, 5}, - {0, 1}, +static arc arcs_7_1[2] = { + {25, 2}, + {15, 3}, }; static arc arcs_7_2[1] = { - {19, 6}, + {15, 3}, }; static arc arcs_7_3[1] = { - {19, 7}, + {0, 3}, +}; +static state states_7[4] = { + {1, arcs_7_0}, + {2, arcs_7_1}, + {1, arcs_7_2}, + {1, arcs_7_3}, }; -static arc arcs_7_4[1] = { - {26, 8}, +static arc arcs_8_0[3] = { + {26, 1}, + {30, 2}, + {31, 3}, }; -static arc arcs_7_5[4] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_8_1[3] = { + {27, 4}, + {29, 5}, + {0, 1}, +}; +static arc arcs_8_2[1] = { + {21, 6}, +}; +static arc arcs_8_3[1] = { + {21, 7}, +}; +static arc arcs_8_4[1] = { + {28, 8}, +}; +static arc arcs_8_5[4] = { + {26, 1}, + {30, 2}, + {31, 3}, {0, 5}, }; -static arc arcs_7_6[2] = { - {27, 9}, +static arc arcs_8_6[2] = { + {29, 9}, {0, 6}, }; -static arc arcs_7_7[1] = { +static arc arcs_8_7[1] = { {0, 7}, }; -static arc arcs_7_8[2] = { - {27, 5}, +static arc arcs_8_8[2] = { + {29, 5}, {0, 8}, }; -static arc arcs_7_9[1] = { - {29, 3}, +static arc arcs_8_9[1] = { + {31, 3}, }; -static state states_7[10] = { - {3, arcs_7_0}, - {3, arcs_7_1}, - {1, arcs_7_2}, - {1, arcs_7_3}, - {1, arcs_7_4}, - {4, arcs_7_5}, - {2, arcs_7_6}, - {1, arcs_7_7}, - {2, arcs_7_8}, - {1, arcs_7_9}, +static state states_8[10] = { + {3, arcs_8_0}, + {3, arcs_8_1}, + {1, arcs_8_2}, + {1, arcs_8_3}, + {1, arcs_8_4}, + {4, arcs_8_5}, + {2, arcs_8_6}, + {1, arcs_8_7}, + {2, arcs_8_8}, + {1, arcs_8_9}, }; -static arc arcs_8_0[2] = { - {19, 1}, +static arc arcs_9_0[2] = { + {21, 1}, {13, 2}, }; -static arc arcs_8_1[1] = { +static arc arcs_9_1[1] = { {0, 1}, }; -static arc arcs_8_2[1] = { - {30, 3}, +static arc arcs_9_2[1] = { + {32, 3}, }; -static arc arcs_8_3[1] = { +static arc arcs_9_3[1] = { {15, 1}, }; -static state states_8[4] = { - {2, arcs_8_0}, - {1, arcs_8_1}, - {1, arcs_8_2}, - {1, arcs_8_3}, +static state states_9[4] = { + {2, arcs_9_0}, + {1, arcs_9_1}, + {1, arcs_9_2}, + {1, arcs_9_3}, }; -static arc arcs_9_0[1] = { - {24, 1}, +static arc arcs_10_0[1] = { + {26, 1}, }; -static arc arcs_9_1[2] = { - {27, 2}, +static arc arcs_10_1[2] = { + {29, 2}, {0, 1}, }; -static arc arcs_9_2[2] = { - {24, 1}, +static arc arcs_10_2[2] = { + {26, 1}, {0, 2}, }; -static state states_9[3] = { - {1, arcs_9_0}, - {2, arcs_9_1}, - {2, arcs_9_2}, +static state states_10[3] = { + {1, arcs_10_0}, + {2, arcs_10_1}, + {2, arcs_10_2}, }; -static arc arcs_10_0[2] = { +static arc arcs_11_0[2] = { {3, 1}, {4, 1}, }; -static arc arcs_10_1[1] = { +static arc arcs_11_1[1] = { {0, 1}, }; -static state states_10[2] = { - {2, arcs_10_0}, - {1, arcs_10_1}, +static state states_11[2] = { + {2, arcs_11_0}, + {1, arcs_11_1}, }; -static arc arcs_11_0[1] = { - {31, 1}, +static arc arcs_12_0[1] = { + {33, 1}, }; -static arc arcs_11_1[2] = { - {32, 2}, +static arc arcs_12_1[2] = { + {34, 2}, {2, 3}, }; -static arc arcs_11_2[2] = { - {31, 1}, +static arc arcs_12_2[2] = { + {33, 1}, {2, 3}, }; -static arc arcs_11_3[1] = { +static arc arcs_12_3[1] = { {0, 3}, }; -static state states_11[4] = { - {1, arcs_11_0}, - {2, arcs_11_1}, - {2, arcs_11_2}, - {1, arcs_11_3}, +static state states_12[4] = { + {1, arcs_12_0}, + {2, arcs_12_1}, + {2, arcs_12_2}, + {1, arcs_12_3}, }; -static arc arcs_12_0[9] = { - {33, 1}, - {34, 1}, +static arc arcs_13_0[9] = { {35, 1}, {36, 1}, {37, 1}, @@ -263,48 +271,48 @@ {39, 1}, {40, 1}, {41, 1}, + {42, 1}, + {43, 1}, }; -static arc arcs_12_1[1] = { +static arc arcs_13_1[1] = { {0, 1}, }; -static state states_12[2] = { - {9, arcs_12_0}, - {1, arcs_12_1}, +static state states_13[2] = { + {9, arcs_13_0}, + {1, arcs_13_1}, }; -static arc arcs_13_0[1] = { +static arc arcs_14_0[1] = { {9, 1}, }; -static arc arcs_13_1[3] = { - {42, 2}, - {25, 3}, +static arc arcs_14_1[3] = { + {44, 2}, + {27, 3}, {0, 1}, }; -static arc arcs_13_2[2] = { - {43, 4}, +static arc arcs_14_2[2] = { + {45, 4}, {9, 4}, }; -static arc arcs_13_3[2] = { - {43, 5}, +static arc arcs_14_3[2] = { + {45, 5}, {9, 5}, }; -static arc arcs_13_4[1] = { +static arc arcs_14_4[1] = { {0, 4}, }; -static arc arcs_13_5[2] = { - {25, 3}, +static arc arcs_14_5[2] = { + {27, 3}, {0, 5}, }; -static state states_13[6] = { - {1, arcs_13_0}, - {3, arcs_13_1}, - {2, arcs_13_2}, - {2, arcs_13_3}, - {1, arcs_13_4}, - {2, arcs_13_5}, +static state states_14[6] = { + {1, arcs_14_0}, + {3, arcs_14_1}, + {2, arcs_14_2}, + {2, arcs_14_3}, + {1, arcs_14_4}, + {2, arcs_14_5}, }; -static arc arcs_14_0[12] = { - {44, 1}, - {45, 1}, +static arc arcs_15_0[12] = { {46, 1}, {47, 1}, {48, 1}, @@ -315,109 +323,101 @@ {53, 1}, {54, 1}, {55, 1}, + {56, 1}, + {57, 1}, }; -static arc arcs_14_1[1] = { +static arc arcs_15_1[1] = { {0, 1}, }; -static state states_14[2] = { - {12, arcs_14_0}, - {1, arcs_14_1}, +static state states_15[2] = { + {12, arcs_15_0}, + {1, arcs_15_1}, }; -static arc arcs_15_0[1] = { - {56, 1}, +static arc arcs_16_0[1] = { + {58, 1}, }; -static arc arcs_15_1[3] = { - {26, 2}, - {57, 3}, +static arc arcs_16_1[3] = { + {28, 2}, + {59, 3}, {0, 1}, }; -static arc arcs_15_2[2] = { - {27, 4}, +static arc arcs_16_2[2] = { + {29, 4}, {0, 2}, }; -static arc arcs_15_3[1] = { - {26, 5}, +static arc arcs_16_3[1] = { + {28, 5}, }; -static arc arcs_15_4[2] = { - {26, 2}, +static arc arcs_16_4[2] = { + {28, 2}, {0, 4}, }; -static arc arcs_15_5[2] = { - {27, 6}, +static arc arcs_16_5[2] = { + {29, 6}, {0, 5}, }; -static arc arcs_15_6[1] = { - {26, 7}, +static arc arcs_16_6[1] = { + {28, 7}, }; -static arc arcs_15_7[2] = { - {27, 8}, +static arc arcs_16_7[2] = { + {29, 8}, {0, 7}, }; -static arc arcs_15_8[2] = { - {26, 7}, +static arc arcs_16_8[2] = { + {28, 7}, {0, 8}, }; -static state states_15[9] = { - {1, arcs_15_0}, - {3, arcs_15_1}, - {2, arcs_15_2}, - {1, arcs_15_3}, - {2, arcs_15_4}, - {2, arcs_15_5}, - {1, arcs_15_6}, - {2, arcs_15_7}, - {2, arcs_15_8}, -}; -static arc arcs_16_0[1] = { - {58, 1}, -}; -static arc arcs_16_1[1] = { - {59, 2}, -}; -static arc arcs_16_2[1] = { - {0, 2}, -}; -static state states_16[3] = { +static state states_16[9] = { {1, arcs_16_0}, - {1, arcs_16_1}, - {1, arcs_16_2}, + {3, arcs_16_1}, + {2, arcs_16_2}, + {1, arcs_16_3}, + {2, arcs_16_4}, + {2, arcs_16_5}, + {1, arcs_16_6}, + {2, arcs_16_7}, + {2, arcs_16_8}, }; static arc arcs_17_0[1] = { {60, 1}, }; static arc arcs_17_1[1] = { - {0, 1}, + {61, 2}, }; -static state states_17[2] = { +static arc arcs_17_2[1] = { + {0, 2}, +}; +static state states_17[3] = { {1, arcs_17_0}, {1, arcs_17_1}, + {1, arcs_17_2}, }; -static arc arcs_18_0[5] = { - {61, 1}, +static arc arcs_18_0[1] = { {62, 1}, - {63, 1}, - {64, 1}, - {65, 1}, }; static arc arcs_18_1[1] = { {0, 1}, }; static state states_18[2] = { - {5, arcs_18_0}, + {1, arcs_18_0}, {1, arcs_18_1}, }; -static arc arcs_19_0[1] = { +static arc arcs_19_0[5] = { + {63, 1}, + {64, 1}, + {65, 1}, {66, 1}, + {67, 1}, }; static arc arcs_19_1[1] = { {0, 1}, }; static state states_19[2] = { - {1, arcs_19_0}, + {5, arcs_19_0}, {1, arcs_19_1}, }; static arc arcs_20_0[1] = { - {67, 1}, + {68, 1}, }; static arc arcs_20_1[1] = { {0, 1}, @@ -427,155 +427,146 @@ {1, arcs_20_1}, }; static arc arcs_21_0[1] = { - {68, 1}, + {69, 1}, }; -static arc arcs_21_1[2] = { - {9, 2}, +static arc arcs_21_1[1] = { {0, 1}, }; -static arc arcs_21_2[1] = { - {0, 2}, -}; -static state states_21[3] = { +static state states_21[2] = { {1, arcs_21_0}, - {2, arcs_21_1}, - {1, arcs_21_2}, + {1, arcs_21_1}, }; static arc arcs_22_0[1] = { - {43, 1}, + {70, 1}, }; -static arc arcs_22_1[1] = { +static arc arcs_22_1[2] = { + {9, 2}, {0, 1}, }; -static state states_22[2] = { +static arc arcs_22_2[1] = { + {0, 2}, +}; +static state states_22[3] = { {1, arcs_22_0}, - {1, arcs_22_1}, + {2, arcs_22_1}, + {1, arcs_22_2}, }; static arc arcs_23_0[1] = { - {69, 1}, + {45, 1}, }; -static arc arcs_23_1[2] = { - {26, 2}, +static arc arcs_23_1[1] = { {0, 1}, }; -static arc arcs_23_2[2] = { - {27, 3}, - {0, 2}, +static state states_23[2] = { + {1, arcs_23_0}, + {1, arcs_23_1}, }; -static arc arcs_23_3[1] = { - {26, 4}, +static arc arcs_24_0[1] = { + {71, 1}, }; -static arc arcs_23_4[2] = { - {27, 5}, - {0, 4}, +static arc arcs_24_1[2] = { + {28, 2}, + {0, 1}, }; -static arc arcs_23_5[1] = { - {26, 6}, +static arc arcs_24_2[2] = { + {29, 3}, + {0, 2}, }; -static arc arcs_23_6[1] = { - {0, 6}, +static arc arcs_24_3[1] = { + {28, 4}, }; -static state states_23[7] = { - {1, arcs_23_0}, - {2, arcs_23_1}, - {2, arcs_23_2}, - {1, arcs_23_3}, - {2, arcs_23_4}, - {1, arcs_23_5}, - {1, arcs_23_6}, +static arc arcs_24_4[2] = { + {29, 5}, + {0, 4}, }; -static arc arcs_24_0[2] = { - {70, 1}, - {71, 1}, +static arc arcs_24_5[1] = { + {28, 6}, }; -static arc arcs_24_1[1] = { - {0, 1}, +static arc arcs_24_6[1] = { + {0, 6}, }; -static state states_24[2] = { - {2, arcs_24_0}, - {1, arcs_24_1}, +static state states_24[7] = { + {1, arcs_24_0}, + {2, arcs_24_1}, + {2, arcs_24_2}, + {1, arcs_24_3}, + {2, arcs_24_4}, + {1, arcs_24_5}, + {1, arcs_24_6}, }; -static arc arcs_25_0[1] = { +static arc arcs_25_0[2] = { {72, 1}, + {73, 1}, }; static arc arcs_25_1[1] = { - {73, 2}, -}; -static arc arcs_25_2[1] = { - {0, 2}, + {0, 1}, }; -static state states_25[3] = { - {1, arcs_25_0}, +static state states_25[2] = { + {2, arcs_25_0}, {1, arcs_25_1}, - {1, arcs_25_2}, }; static arc arcs_26_0[1] = { {74, 1}, }; -static arc arcs_26_1[2] = { +static arc arcs_26_1[1] = { {75, 2}, +}; +static arc arcs_26_2[1] = { + {0, 2}, +}; +static state states_26[3] = { + {1, arcs_26_0}, + {1, arcs_26_1}, + {1, arcs_26_2}, +}; +static arc arcs_27_0[1] = { + {76, 1}, +}; +static arc arcs_27_1[2] = { + {77, 2}, {12, 3}, }; -static arc arcs_26_2[3] = { - {75, 2}, +static arc arcs_27_2[3] = { + {77, 2}, {12, 3}, - {72, 4}, + {74, 4}, }; -static arc arcs_26_3[1] = { - {72, 4}, +static arc arcs_27_3[1] = { + {74, 4}, }; -static arc arcs_26_4[3] = { - {28, 5}, +static arc arcs_27_4[3] = { + {30, 5}, {13, 6}, - {76, 5}, + {78, 5}, }; -static arc arcs_26_5[1] = { +static arc arcs_27_5[1] = { {0, 5}, }; -static arc arcs_26_6[1] = { - {76, 7}, +static arc arcs_27_6[1] = { + {78, 7}, }; -static arc arcs_26_7[1] = { +static arc arcs_27_7[1] = { {15, 5}, }; -static state states_26[8] = { - {1, arcs_26_0}, - {2, arcs_26_1}, - {3, arcs_26_2}, - {1, arcs_26_3}, - {3, arcs_26_4}, - {1, arcs_26_5}, - {1, arcs_26_6}, - {1, arcs_26_7}, -}; -static arc arcs_27_0[1] = { - {19, 1}, -}; -static arc arcs_27_1[2] = { - {78, 2}, - {0, 1}, -}; -static arc arcs_27_2[1] = { - {19, 3}, -}; -static arc arcs_27_3[1] = { - {0, 3}, -}; -static state states_27[4] = { +static state states_27[8] = { {1, arcs_27_0}, {2, arcs_27_1}, - {1, arcs_27_2}, + {3, arcs_27_2}, {1, arcs_27_3}, + {3, arcs_27_4}, + {1, arcs_27_5}, + {1, arcs_27_6}, + {1, arcs_27_7}, }; static arc arcs_28_0[1] = { - {12, 1}, + {21, 1}, }; static arc arcs_28_1[2] = { - {78, 2}, + {80, 2}, {0, 1}, }; static arc arcs_28_2[1] = { - {19, 3}, + {21, 3}, }; static arc arcs_28_3[1] = { {0, 3}, @@ -587,37 +578,45 @@ {1, arcs_28_3}, }; static arc arcs_29_0[1] = { - {77, 1}, + {12, 1}, }; static arc arcs_29_1[2] = { - {27, 2}, + {80, 2}, {0, 1}, }; -static arc arcs_29_2[2] = { - {77, 1}, - {0, 2}, +static arc arcs_29_2[1] = { + {21, 3}, +}; +static arc arcs_29_3[1] = { + {0, 3}, }; -static state states_29[3] = { +static state states_29[4] = { {1, arcs_29_0}, {2, arcs_29_1}, - {2, arcs_29_2}, + {1, arcs_29_2}, + {1, arcs_29_3}, }; static arc arcs_30_0[1] = { {79, 1}, }; static arc arcs_30_1[2] = { - {27, 0}, + {29, 2}, {0, 1}, }; -static state states_30[2] = { +static arc arcs_30_2[2] = { + {79, 1}, + {0, 2}, +}; +static state states_30[3] = { {1, arcs_30_0}, {2, arcs_30_1}, + {2, arcs_30_2}, }; static arc arcs_31_0[1] = { - {19, 1}, + {81, 1}, }; static arc arcs_31_1[2] = { - {75, 0}, + {29, 0}, {0, 1}, }; static state states_31[2] = { @@ -625,148 +624,125 @@ {2, arcs_31_1}, }; static arc arcs_32_0[1] = { - {80, 1}, -}; -static arc arcs_32_1[1] = { - {19, 2}, + {21, 1}, }; -static arc arcs_32_2[2] = { - {27, 1}, - {0, 2}, +static arc arcs_32_1[2] = { + {77, 0}, + {0, 1}, }; -static state states_32[3] = { +static state states_32[2] = { {1, arcs_32_0}, - {1, arcs_32_1}, - {2, arcs_32_2}, + {2, arcs_32_1}, }; static arc arcs_33_0[1] = { - {81, 1}, + {82, 1}, }; static arc arcs_33_1[1] = { - {82, 2}, + {21, 2}, }; static arc arcs_33_2[2] = { - {83, 3}, + {29, 1}, {0, 2}, }; -static arc arcs_33_3[1] = { - {26, 4}, -}; -static arc arcs_33_4[2] = { - {27, 5}, - {0, 4}, -}; -static arc arcs_33_5[1] = { - {26, 6}, -}; -static arc arcs_33_6[1] = { - {0, 6}, -}; -static state states_33[7] = { +static state states_33[3] = { {1, arcs_33_0}, {1, arcs_33_1}, {2, arcs_33_2}, - {1, arcs_33_3}, - {2, arcs_33_4}, - {1, arcs_33_5}, - {1, arcs_33_6}, }; static arc arcs_34_0[1] = { - {84, 1}, + {83, 1}, }; static arc arcs_34_1[1] = { - {26, 2}, + {84, 2}, }; static arc arcs_34_2[2] = { - {27, 3}, + {85, 3}, {0, 2}, }; static arc arcs_34_3[1] = { - {26, 4}, + {28, 4}, }; -static arc arcs_34_4[1] = { +static arc arcs_34_4[2] = { + {29, 5}, {0, 4}, }; -static state states_34[5] = { +static arc arcs_34_5[1] = { + {28, 6}, +}; +static arc arcs_34_6[1] = { + {0, 6}, +}; +static state states_34[7] = { {1, arcs_34_0}, {1, arcs_34_1}, {2, arcs_34_2}, {1, arcs_34_3}, - {1, arcs_34_4}, + {2, arcs_34_4}, + {1, arcs_34_5}, + {1, arcs_34_6}, }; -static arc arcs_35_0[7] = { - {85, 1}, +static arc arcs_35_0[1] = { {86, 1}, - {87, 1}, - {88, 1}, - {89, 1}, - {17, 1}, - {90, 1}, }; static arc arcs_35_1[1] = { - {0, 1}, -}; -static state states_35[2] = { - {7, arcs_35_0}, - {1, arcs_35_1}, -}; -static arc arcs_36_0[1] = { - {91, 1}, -}; -static arc arcs_36_1[1] = { - {26, 2}, + {28, 2}, }; -static arc arcs_36_2[1] = { - {21, 3}, +static arc arcs_35_2[2] = { + {29, 3}, + {0, 2}, }; -static arc arcs_36_3[1] = { - {22, 4}, +static arc arcs_35_3[1] = { + {28, 4}, }; -static arc arcs_36_4[3] = { - {92, 1}, - {93, 5}, +static arc arcs_35_4[1] = { {0, 4}, }; -static arc arcs_36_5[1] = { - {21, 6}, +static state states_35[5] = { + {1, arcs_35_0}, + {1, arcs_35_1}, + {2, arcs_35_2}, + {1, arcs_35_3}, + {1, arcs_35_4}, }; -static arc arcs_36_6[1] = { - {22, 7}, +static arc arcs_36_0[8] = { + {87, 1}, + {88, 1}, + {89, 1}, + {90, 1}, + {91, 1}, + {19, 1}, + {18, 1}, + {17, 1}, }; -static arc arcs_36_7[1] = { - {0, 7}, +static arc arcs_36_1[1] = { + {0, 1}, }; -static state states_36[8] = { - {1, arcs_36_0}, +static state states_36[2] = { + {8, arcs_36_0}, {1, arcs_36_1}, - {1, arcs_36_2}, - {1, arcs_36_3}, - {3, arcs_36_4}, - {1, arcs_36_5}, - {1, arcs_36_6}, - {1, arcs_36_7}, }; static arc arcs_37_0[1] = { - {94, 1}, + {92, 1}, }; static arc arcs_37_1[1] = { - {26, 2}, + {28, 2}, }; static arc arcs_37_2[1] = { - {21, 3}, + {23, 3}, }; static arc arcs_37_3[1] = { - {22, 4}, + {24, 4}, }; -static arc arcs_37_4[2] = { - {93, 5}, +static arc arcs_37_4[3] = { + {93, 1}, + {94, 5}, {0, 4}, }; static arc arcs_37_5[1] = { - {21, 6}, + {23, 6}, }; static arc arcs_37_6[1] = { - {22, 7}, + {24, 7}, }; static arc arcs_37_7[1] = { {0, 7}, @@ -776,7 +752,7 @@ {1, arcs_37_1}, {1, arcs_37_2}, {1, arcs_37_3}, - {2, arcs_37_4}, + {3, arcs_37_4}, {1, arcs_37_5}, {1, arcs_37_6}, {1, arcs_37_7}, @@ -785,373 +761,397 @@ {95, 1}, }; static arc arcs_38_1[1] = { - {59, 2}, + {28, 2}, }; static arc arcs_38_2[1] = { - {83, 3}, + {23, 3}, }; static arc arcs_38_3[1] = { - {9, 4}, + {24, 4}, }; -static arc arcs_38_4[1] = { - {21, 5}, +static arc arcs_38_4[2] = { + {94, 5}, + {0, 4}, }; static arc arcs_38_5[1] = { - {22, 6}, + {23, 6}, }; -static arc arcs_38_6[2] = { - {93, 7}, - {0, 6}, +static arc arcs_38_6[1] = { + {24, 7}, }; static arc arcs_38_7[1] = { - {21, 8}, -}; -static arc arcs_38_8[1] = { - {22, 9}, -}; -static arc arcs_38_9[1] = { - {0, 9}, + {0, 7}, }; -static state states_38[10] = { +static state states_38[8] = { {1, arcs_38_0}, {1, arcs_38_1}, {1, arcs_38_2}, {1, arcs_38_3}, - {1, arcs_38_4}, + {2, arcs_38_4}, {1, arcs_38_5}, - {2, arcs_38_6}, + {1, arcs_38_6}, {1, arcs_38_7}, - {1, arcs_38_8}, - {1, arcs_38_9}, }; static arc arcs_39_0[1] = { {96, 1}, }; static arc arcs_39_1[1] = { - {21, 2}, + {61, 2}, }; static arc arcs_39_2[1] = { - {22, 3}, + {85, 3}, }; -static arc arcs_39_3[2] = { - {97, 4}, - {98, 5}, +static arc arcs_39_3[1] = { + {9, 4}, }; static arc arcs_39_4[1] = { - {21, 6}, + {23, 5}, }; static arc arcs_39_5[1] = { - {21, 7}, + {24, 6}, }; -static arc arcs_39_6[1] = { - {22, 8}, +static arc arcs_39_6[2] = { + {94, 7}, + {0, 6}, }; static arc arcs_39_7[1] = { - {22, 9}, + {23, 8}, }; -static arc arcs_39_8[4] = { - {97, 4}, - {93, 10}, - {98, 5}, - {0, 8}, +static arc arcs_39_8[1] = { + {24, 9}, }; static arc arcs_39_9[1] = { {0, 9}, }; -static arc arcs_39_10[1] = { - {21, 11}, -}; -static arc arcs_39_11[1] = { - {22, 12}, -}; -static arc arcs_39_12[2] = { - {98, 5}, - {0, 12}, -}; -static state states_39[13] = { +static state states_39[10] = { {1, arcs_39_0}, {1, arcs_39_1}, {1, arcs_39_2}, - {2, arcs_39_3}, + {1, arcs_39_3}, {1, arcs_39_4}, {1, arcs_39_5}, - {1, arcs_39_6}, + {2, arcs_39_6}, {1, arcs_39_7}, - {4, arcs_39_8}, + {1, arcs_39_8}, {1, arcs_39_9}, - {1, arcs_39_10}, - {1, arcs_39_11}, - {2, arcs_39_12}, }; static arc arcs_40_0[1] = { - {99, 1}, + {97, 1}, }; static arc arcs_40_1[1] = { - {26, 2}, + {23, 2}, }; -static arc arcs_40_2[2] = { - {100, 3}, - {21, 4}, +static arc arcs_40_2[1] = { + {24, 3}, }; -static arc arcs_40_3[1] = { - {21, 4}, +static arc arcs_40_3[2] = { + {98, 4}, + {99, 5}, }; static arc arcs_40_4[1] = { - {22, 5}, + {23, 6}, }; static arc arcs_40_5[1] = { - {0, 5}, + {23, 7}, }; -static state states_40[6] = { +static arc arcs_40_6[1] = { + {24, 8}, +}; +static arc arcs_40_7[1] = { + {24, 9}, +}; +static arc arcs_40_8[4] = { + {98, 4}, + {94, 10}, + {99, 5}, + {0, 8}, +}; +static arc arcs_40_9[1] = { + {0, 9}, +}; +static arc arcs_40_10[1] = { + {23, 11}, +}; +static arc arcs_40_11[1] = { + {24, 12}, +}; +static arc arcs_40_12[2] = { + {99, 5}, + {0, 12}, +}; +static state states_40[13] = { {1, arcs_40_0}, {1, arcs_40_1}, - {2, arcs_40_2}, - {1, arcs_40_3}, + {1, arcs_40_2}, + {2, arcs_40_3}, {1, arcs_40_4}, {1, arcs_40_5}, + {1, arcs_40_6}, + {1, arcs_40_7}, + {4, arcs_40_8}, + {1, arcs_40_9}, + {1, arcs_40_10}, + {1, arcs_40_11}, + {2, arcs_40_12}, }; static arc arcs_41_0[1] = { - {78, 1}, + {100, 1}, }; static arc arcs_41_1[1] = { - {82, 2}, + {28, 2}, }; -static arc arcs_41_2[1] = { - {0, 2}, +static arc arcs_41_2[2] = { + {101, 3}, + {23, 4}, +}; +static arc arcs_41_3[1] = { + {23, 4}, +}; +static arc arcs_41_4[1] = { + {24, 5}, +}; +static arc arcs_41_5[1] = { + {0, 5}, }; -static state states_41[3] = { +static state states_41[6] = { {1, arcs_41_0}, {1, arcs_41_1}, - {1, arcs_41_2}, + {2, arcs_41_2}, + {1, arcs_41_3}, + {1, arcs_41_4}, + {1, arcs_41_5}, }; static arc arcs_42_0[1] = { - {101, 1}, + {80, 1}, }; -static arc arcs_42_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_42_1[1] = { + {84, 2}, }; -static arc arcs_42_2[3] = { - {78, 3}, - {27, 3}, +static arc arcs_42_2[1] = { {0, 2}, }; -static arc arcs_42_3[1] = { - {26, 4}, -}; -static arc arcs_42_4[1] = { - {0, 4}, -}; -static state states_42[5] = { +static state states_42[3] = { {1, arcs_42_0}, - {2, arcs_42_1}, - {3, arcs_42_2}, - {1, arcs_42_3}, - {1, arcs_42_4}, + {1, arcs_42_1}, + {1, arcs_42_2}, }; -static arc arcs_43_0[2] = { - {3, 1}, - {2, 2}, +static arc arcs_43_0[1] = { + {102, 1}, }; -static arc arcs_43_1[1] = { +static arc arcs_43_1[2] = { + {28, 2}, {0, 1}, }; -static arc arcs_43_2[1] = { - {102, 3}, +static arc arcs_43_2[3] = { + {80, 3}, + {29, 3}, + {0, 2}, }; static arc arcs_43_3[1] = { - {6, 4}, + {28, 4}, }; -static arc arcs_43_4[2] = { - {6, 4}, - {103, 1}, +static arc arcs_43_4[1] = { + {0, 4}, }; static state states_43[5] = { - {2, arcs_43_0}, - {1, arcs_43_1}, - {1, arcs_43_2}, + {1, arcs_43_0}, + {2, arcs_43_1}, + {3, arcs_43_2}, {1, arcs_43_3}, - {2, arcs_43_4}, + {1, arcs_43_4}, }; -static arc arcs_44_0[1] = { - {105, 1}, +static arc arcs_44_0[2] = { + {3, 1}, + {2, 2}, }; -static arc arcs_44_1[2] = { - {27, 2}, +static arc arcs_44_1[1] = { {0, 1}, }; static arc arcs_44_2[1] = { - {105, 3}, + {103, 3}, }; -static arc arcs_44_3[2] = { - {27, 4}, - {0, 3}, +static arc arcs_44_3[1] = { + {6, 4}, }; static arc arcs_44_4[2] = { - {105, 3}, - {0, 4}, + {6, 4}, + {104, 1}, }; static state states_44[5] = { - {1, arcs_44_0}, - {2, arcs_44_1}, + {2, arcs_44_0}, + {1, arcs_44_1}, {1, arcs_44_2}, - {2, arcs_44_3}, + {1, arcs_44_3}, {2, arcs_44_4}, }; -static arc arcs_45_0[2] = { +static arc arcs_45_0[1] = { {106, 1}, - {107, 1}, }; -static arc arcs_45_1[1] = { +static arc arcs_45_1[2] = { + {29, 2}, {0, 1}, }; -static state states_45[2] = { - {2, arcs_45_0}, - {1, arcs_45_1}, +static arc arcs_45_2[1] = { + {106, 3}, }; -static arc arcs_46_0[1] = { - {108, 1}, +static arc arcs_45_3[2] = { + {29, 4}, + {0, 3}, }; -static arc arcs_46_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_45_4[2] = { + {106, 3}, + {0, 4}, }; -static arc arcs_46_2[1] = { - {21, 3}, +static state states_45[5] = { + {1, arcs_45_0}, + {2, arcs_45_1}, + {1, arcs_45_2}, + {2, arcs_45_3}, + {2, arcs_45_4}, }; -static arc arcs_46_3[1] = { - {105, 4}, +static arc arcs_46_0[2] = { + {107, 1}, + {108, 1}, }; -static arc arcs_46_4[1] = { - {0, 4}, +static arc arcs_46_1[1] = { + {0, 1}, }; -static state states_46[5] = { - {1, arcs_46_0}, - {2, arcs_46_1}, - {1, arcs_46_2}, - {1, arcs_46_3}, - {1, arcs_46_4}, +static state states_46[2] = { + {2, arcs_46_0}, + {1, arcs_46_1}, }; -static arc arcs_47_0[2] = { - {106, 1}, - {109, 2}, +static arc arcs_47_0[1] = { + {109, 1}, }; static arc arcs_47_1[2] = { - {91, 3}, - {0, 1}, + {25, 2}, + {23, 3}, }; static arc arcs_47_2[1] = { - {0, 2}, + {23, 3}, }; static arc arcs_47_3[1] = { {106, 4}, }; static arc arcs_47_4[1] = { - {93, 5}, -}; -static arc arcs_47_5[1] = { - {26, 2}, + {0, 4}, }; -static state states_47[6] = { - {2, arcs_47_0}, +static state states_47[5] = { + {1, arcs_47_0}, {2, arcs_47_1}, {1, arcs_47_2}, {1, arcs_47_3}, {1, arcs_47_4}, - {1, arcs_47_5}, }; -static arc arcs_48_0[1] = { - {110, 1}, +static arc arcs_48_0[2] = { + {107, 1}, + {110, 2}, }; static arc arcs_48_1[2] = { - {111, 0}, + {92, 3}, {0, 1}, }; -static state states_48[2] = { - {1, arcs_48_0}, +static arc arcs_48_2[1] = { + {0, 2}, +}; +static arc arcs_48_3[1] = { + {107, 4}, +}; +static arc arcs_48_4[1] = { + {94, 5}, +}; +static arc arcs_48_5[1] = { + {28, 2}, +}; +static state states_48[6] = { + {2, arcs_48_0}, {2, arcs_48_1}, + {1, arcs_48_2}, + {1, arcs_48_3}, + {1, arcs_48_4}, + {1, arcs_48_5}, }; static arc arcs_49_0[1] = { - {112, 1}, + {111, 1}, }; static arc arcs_49_1[2] = { - {113, 0}, + {112, 0}, {0, 1}, }; static state states_49[2] = { {1, arcs_49_0}, {2, arcs_49_1}, }; -static arc arcs_50_0[2] = { - {114, 1}, - {115, 2}, +static arc arcs_50_0[1] = { + {113, 1}, +}; +static arc arcs_50_1[2] = { + {114, 0}, + {0, 1}, }; -static arc arcs_50_1[1] = { - {112, 2}, +static state states_50[2] = { + {1, arcs_50_0}, + {2, arcs_50_1}, }; -static arc arcs_50_2[1] = { +static arc arcs_51_0[2] = { + {115, 1}, + {116, 2}, +}; +static arc arcs_51_1[1] = { + {113, 2}, +}; +static arc arcs_51_2[1] = { {0, 2}, }; -static state states_50[3] = { - {2, arcs_50_0}, - {1, arcs_50_1}, - {1, arcs_50_2}, +static state states_51[3] = { + {2, arcs_51_0}, + {1, arcs_51_1}, + {1, arcs_51_2}, }; -static arc arcs_51_0[1] = { - {82, 1}, +static arc arcs_52_0[1] = { + {84, 1}, }; -static arc arcs_51_1[2] = { - {116, 0}, +static arc arcs_52_1[2] = { + {117, 0}, {0, 1}, }; -static state states_51[2] = { - {1, arcs_51_0}, - {2, arcs_51_1}, +static state states_52[2] = { + {1, arcs_52_0}, + {2, arcs_52_1}, }; -static arc arcs_52_0[10] = { - {117, 1}, +static arc arcs_53_0[10] = { {118, 1}, {119, 1}, {120, 1}, {121, 1}, {122, 1}, {123, 1}, - {83, 1}, - {114, 2}, - {124, 3}, + {124, 1}, + {85, 1}, + {115, 2}, + {125, 3}, }; -static arc arcs_52_1[1] = { +static arc arcs_53_1[1] = { {0, 1}, }; -static arc arcs_52_2[1] = { - {83, 1}, +static arc arcs_53_2[1] = { + {85, 1}, }; -static arc arcs_52_3[2] = { - {114, 1}, +static arc arcs_53_3[2] = { + {115, 1}, {0, 3}, }; -static state states_52[4] = { - {10, arcs_52_0}, - {1, arcs_52_1}, - {1, arcs_52_2}, - {2, arcs_52_3}, -}; -static arc arcs_53_0[1] = { - {125, 1}, -}; -static arc arcs_53_1[2] = { - {126, 0}, - {0, 1}, -}; -static state states_53[2] = { - {1, arcs_53_0}, - {2, arcs_53_1}, +static state states_53[4] = { + {10, arcs_53_0}, + {1, arcs_53_1}, + {1, arcs_53_2}, + {2, arcs_53_3}, }; static arc arcs_54_0[1] = { - {127, 1}, + {126, 1}, }; static arc arcs_54_1[2] = { - {128, 0}, + {127, 0}, {0, 1}, }; static state states_54[2] = { @@ -1159,10 +1159,10 @@ {2, arcs_54_1}, }; static arc arcs_55_0[1] = { - {129, 1}, + {128, 1}, }; static arc arcs_55_1[2] = { - {130, 0}, + {129, 0}, {0, 1}, }; static state states_55[2] = { @@ -1170,23 +1170,22 @@ {2, arcs_55_1}, }; static arc arcs_56_0[1] = { - {131, 1}, + {130, 1}, }; -static arc arcs_56_1[3] = { - {132, 0}, - {57, 0}, +static arc arcs_56_1[2] = { + {131, 0}, {0, 1}, }; static state states_56[2] = { {1, arcs_56_0}, - {3, arcs_56_1}, + {2, arcs_56_1}, }; static arc arcs_57_0[1] = { - {133, 1}, + {132, 1}, }; static arc arcs_57_1[3] = { - {134, 0}, - {135, 0}, + {133, 0}, + {59, 0}, {0, 1}, }; static state states_57[2] = { @@ -1194,156 +1193,142 @@ {3, arcs_57_1}, }; static arc arcs_58_0[1] = { - {136, 1}, + {134, 1}, }; -static arc arcs_58_1[5] = { - {28, 0}, - {137, 0}, - {138, 0}, - {139, 0}, +static arc arcs_58_1[3] = { + {135, 0}, + {136, 0}, {0, 1}, }; static state states_58[2] = { {1, arcs_58_0}, - {5, arcs_58_1}, + {3, arcs_58_1}, }; -static arc arcs_59_0[4] = { - {134, 1}, +static arc arcs_59_0[1] = { + {137, 1}, +}; +static arc arcs_59_1[5] = { + {30, 0}, + {138, 0}, + {139, 0}, + {140, 0}, + {0, 1}, +}; +static state states_59[2] = { + {1, arcs_59_0}, + {5, arcs_59_1}, +}; +static arc arcs_60_0[4] = { {135, 1}, - {140, 1}, - {141, 2}, + {136, 1}, + {141, 1}, + {142, 2}, }; -static arc arcs_59_1[1] = { - {136, 2}, +static arc arcs_60_1[1] = { + {137, 2}, }; -static arc arcs_59_2[1] = { +static arc arcs_60_2[1] = { {0, 2}, }; -static state states_59[3] = { - {4, arcs_59_0}, - {1, arcs_59_1}, - {1, arcs_59_2}, -}; -static arc arcs_60_0[1] = { - {142, 1}, +static state states_60[3] = { + {4, arcs_60_0}, + {1, arcs_60_1}, + {1, arcs_60_2}, }; -static arc arcs_60_1[3] = { +static arc arcs_61_0[1] = { {143, 1}, - {29, 2}, +}; +static arc arcs_61_1[3] = { + {144, 1}, + {31, 2}, {0, 1}, }; -static arc arcs_60_2[1] = { - {136, 3}, +static arc arcs_61_2[1] = { + {137, 3}, }; -static arc arcs_60_3[1] = { +static arc arcs_61_3[1] = { {0, 3}, }; -static state states_60[4] = { - {1, arcs_60_0}, - {3, arcs_60_1}, - {1, arcs_60_2}, - {1, arcs_60_3}, +static state states_61[4] = { + {1, arcs_61_0}, + {3, arcs_61_1}, + {1, arcs_61_2}, + {1, arcs_61_3}, }; -static arc arcs_61_0[7] = { +static arc arcs_62_0[7] = { {13, 1}, - {145, 2}, - {148, 3}, - {151, 4}, - {19, 5}, - {153, 5}, - {154, 6}, + {146, 2}, + {149, 3}, + {152, 4}, + {21, 5}, + {154, 5}, + {155, 6}, }; -static arc arcs_61_1[3] = { - {43, 7}, - {144, 7}, +static arc arcs_62_1[3] = { + {45, 7}, + {145, 7}, {15, 5}, }; -static arc arcs_61_2[2] = { - {146, 8}, - {147, 5}, -}; -static arc arcs_61_3[2] = { - {149, 9}, - {150, 5}, +static arc arcs_62_2[2] = { + {147, 8}, + {148, 5}, }; -static arc arcs_61_4[1] = { - {152, 10}, +static arc arcs_62_3[2] = { + {150, 9}, + {151, 5}, +}; +static arc arcs_62_4[1] = { + {153, 10}, }; -static arc arcs_61_5[1] = { +static arc arcs_62_5[1] = { {0, 5}, }; -static arc arcs_61_6[2] = { - {154, 6}, +static arc arcs_62_6[2] = { + {155, 6}, {0, 6}, }; -static arc arcs_61_7[1] = { +static arc arcs_62_7[1] = { {15, 5}, }; -static arc arcs_61_8[1] = { - {147, 5}, +static arc arcs_62_8[1] = { + {148, 5}, }; -static arc arcs_61_9[1] = { - {150, 5}, -}; -static arc arcs_61_10[1] = { +static arc arcs_62_9[1] = { {151, 5}, }; -static state states_61[11] = { - {7, arcs_61_0}, - {3, arcs_61_1}, - {2, arcs_61_2}, - {2, arcs_61_3}, - {1, arcs_61_4}, - {1, arcs_61_5}, - {2, arcs_61_6}, - {1, arcs_61_7}, - {1, arcs_61_8}, - {1, arcs_61_9}, - {1, arcs_61_10}, -}; -static arc arcs_62_0[1] = { - {26, 1}, -}; -static arc arcs_62_1[3] = { - {155, 2}, - {27, 3}, - {0, 1}, -}; -static arc arcs_62_2[1] = { - {0, 2}, -}; -static arc arcs_62_3[2] = { - {26, 4}, - {0, 3}, -}; -static arc arcs_62_4[2] = { - {27, 3}, - {0, 4}, +static arc arcs_62_10[1] = { + {152, 5}, }; -static state states_62[5] = { - {1, arcs_62_0}, +static state states_62[11] = { + {7, arcs_62_0}, {3, arcs_62_1}, - {1, arcs_62_2}, + {2, arcs_62_2}, {2, arcs_62_3}, - {2, arcs_62_4}, + {1, arcs_62_4}, + {1, arcs_62_5}, + {2, arcs_62_6}, + {1, arcs_62_7}, + {1, arcs_62_8}, + {1, arcs_62_9}, + {1, arcs_62_10}, }; static arc arcs_63_0[1] = { - {26, 1}, + {28, 1}, }; static arc arcs_63_1[3] = { {156, 2}, - {27, 3}, + {29, 3}, {0, 1}, }; static arc arcs_63_2[1] = { {0, 2}, }; static arc arcs_63_3[2] = { - {26, 4}, + {28, 4}, {0, 3}, }; static arc arcs_63_4[2] = { - {27, 3}, + {29, 3}, {0, 4}, }; static state states_63[5] = { @@ -1354,153 +1339,163 @@ {2, arcs_63_4}, }; static arc arcs_64_0[1] = { - {108, 1}, + {28, 1}, }; -static arc arcs_64_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_64_1[3] = { + {157, 2}, + {29, 3}, + {0, 1}, }; static arc arcs_64_2[1] = { - {21, 3}, + {0, 2}, }; -static arc arcs_64_3[1] = { - {26, 4}, +static arc arcs_64_3[2] = { + {28, 4}, + {0, 3}, }; -static arc arcs_64_4[1] = { +static arc arcs_64_4[2] = { + {29, 3}, {0, 4}, }; static state states_64[5] = { {1, arcs_64_0}, - {2, arcs_64_1}, + {3, arcs_64_1}, {1, arcs_64_2}, - {1, arcs_64_3}, - {1, arcs_64_4}, + {2, arcs_64_3}, + {2, arcs_64_4}, }; -static arc arcs_65_0[3] = { - {13, 1}, - {145, 2}, - {75, 3}, +static arc arcs_65_0[1] = { + {109, 1}, }; static arc arcs_65_1[2] = { - {14, 4}, - {15, 5}, + {25, 2}, + {23, 3}, }; static arc arcs_65_2[1] = { - {157, 6}, + {23, 3}, }; static arc arcs_65_3[1] = { - {19, 5}, + {28, 4}, }; static arc arcs_65_4[1] = { - {15, 5}, -}; -static arc arcs_65_5[1] = { - {0, 5}, -}; -static arc arcs_65_6[1] = { - {147, 5}, + {0, 4}, }; -static state states_65[7] = { - {3, arcs_65_0}, +static state states_65[5] = { + {1, arcs_65_0}, {2, arcs_65_1}, {1, arcs_65_2}, {1, arcs_65_3}, {1, arcs_65_4}, - {1, arcs_65_5}, - {1, arcs_65_6}, }; -static arc arcs_66_0[1] = { - {158, 1}, +static arc arcs_66_0[3] = { + {13, 1}, + {146, 2}, + {77, 3}, }; static arc arcs_66_1[2] = { - {27, 2}, - {0, 1}, + {14, 4}, + {15, 5}, }; -static arc arcs_66_2[2] = { - {158, 1}, - {0, 2}, +static arc arcs_66_2[1] = { + {158, 6}, +}; +static arc arcs_66_3[1] = { + {21, 5}, +}; +static arc arcs_66_4[1] = { + {15, 5}, +}; +static arc arcs_66_5[1] = { + {0, 5}, }; -static state states_66[3] = { - {1, arcs_66_0}, +static arc arcs_66_6[1] = { + {148, 5}, +}; +static state states_66[7] = { + {3, arcs_66_0}, {2, arcs_66_1}, - {2, arcs_66_2}, + {1, arcs_66_2}, + {1, arcs_66_3}, + {1, arcs_66_4}, + {1, arcs_66_5}, + {1, arcs_66_6}, }; -static arc arcs_67_0[3] = { - {75, 1}, - {26, 2}, - {21, 3}, +static arc arcs_67_0[1] = { + {159, 1}, }; -static arc arcs_67_1[1] = { - {75, 4}, +static arc arcs_67_1[2] = { + {29, 2}, + {0, 1}, }; static arc arcs_67_2[2] = { - {21, 3}, + {159, 1}, {0, 2}, }; -static arc arcs_67_3[3] = { - {26, 5}, - {159, 6}, - {0, 3}, +static state states_67[3] = { + {1, arcs_67_0}, + {2, arcs_67_1}, + {2, arcs_67_2}, }; -static arc arcs_67_4[1] = { - {75, 6}, +static arc arcs_68_0[3] = { + {77, 1}, + {28, 2}, + {23, 3}, }; -static arc arcs_67_5[2] = { - {159, 6}, - {0, 5}, +static arc arcs_68_1[1] = { + {77, 4}, }; -static arc arcs_67_6[1] = { - {0, 6}, +static arc arcs_68_2[2] = { + {23, 3}, + {0, 2}, }; -static state states_67[7] = { - {3, arcs_67_0}, - {1, arcs_67_1}, - {2, arcs_67_2}, - {3, arcs_67_3}, - {1, arcs_67_4}, - {2, arcs_67_5}, - {1, arcs_67_6}, +static arc arcs_68_3[3] = { + {28, 5}, + {160, 6}, + {0, 3}, }; -static arc arcs_68_0[1] = { - {21, 1}, +static arc arcs_68_4[1] = { + {77, 6}, }; -static arc arcs_68_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_68_5[2] = { + {160, 6}, + {0, 5}, }; -static arc arcs_68_2[1] = { - {0, 2}, +static arc arcs_68_6[1] = { + {0, 6}, }; -static state states_68[3] = { - {1, arcs_68_0}, - {2, arcs_68_1}, - {1, arcs_68_2}, +static state states_68[7] = { + {3, arcs_68_0}, + {1, arcs_68_1}, + {2, arcs_68_2}, + {3, arcs_68_3}, + {1, arcs_68_4}, + {2, arcs_68_5}, + {1, arcs_68_6}, }; static arc arcs_69_0[1] = { - {82, 1}, + {23, 1}, }; static arc arcs_69_1[2] = { - {27, 2}, + {28, 2}, {0, 1}, }; -static arc arcs_69_2[2] = { - {82, 1}, +static arc arcs_69_2[1] = { {0, 2}, }; static state states_69[3] = { {1, arcs_69_0}, {2, arcs_69_1}, - {2, arcs_69_2}, + {1, arcs_69_2}, }; static arc arcs_70_0[1] = { - {26, 1}, + {84, 1}, }; static arc arcs_70_1[2] = { - {27, 2}, + {29, 2}, {0, 1}, }; static arc arcs_70_2[2] = { - {26, 1}, + {84, 1}, {0, 2}, }; static state states_70[3] = { @@ -1509,491 +1504,511 @@ {2, arcs_70_2}, }; static arc arcs_71_0[1] = { - {26, 1}, -}; -static arc arcs_71_1[1] = { - {21, 2}, + {28, 1}, }; -static arc arcs_71_2[1] = { - {26, 3}, -}; -static arc arcs_71_3[2] = { - {27, 4}, - {0, 3}, +static arc arcs_71_1[2] = { + {29, 2}, + {0, 1}, }; -static arc arcs_71_4[2] = { - {26, 1}, - {0, 4}, +static arc arcs_71_2[2] = { + {28, 1}, + {0, 2}, }; -static state states_71[5] = { +static state states_71[3] = { {1, arcs_71_0}, - {1, arcs_71_1}, - {1, arcs_71_2}, - {2, arcs_71_3}, - {2, arcs_71_4}, + {2, arcs_71_1}, + {2, arcs_71_2}, }; static arc arcs_72_0[1] = { - {160, 1}, + {28, 1}, }; static arc arcs_72_1[1] = { - {19, 2}, + {23, 2}, }; -static arc arcs_72_2[2] = { - {13, 3}, - {21, 4}, +static arc arcs_72_2[1] = { + {28, 3}, }; static arc arcs_72_3[2] = { - {9, 5}, - {15, 6}, -}; -static arc arcs_72_4[1] = { - {22, 7}, -}; -static arc arcs_72_5[1] = { - {15, 6}, -}; -static arc arcs_72_6[1] = { - {21, 4}, + {29, 4}, + {0, 3}, }; -static arc arcs_72_7[1] = { - {0, 7}, +static arc arcs_72_4[2] = { + {28, 1}, + {0, 4}, }; -static state states_72[8] = { +static state states_72[5] = { {1, arcs_72_0}, {1, arcs_72_1}, - {2, arcs_72_2}, + {1, arcs_72_2}, {2, arcs_72_3}, - {1, arcs_72_4}, - {1, arcs_72_5}, - {1, arcs_72_6}, - {1, arcs_72_7}, + {2, arcs_72_4}, }; -static arc arcs_73_0[3] = { +static arc arcs_73_0[1] = { {161, 1}, - {28, 2}, - {29, 3}, }; -static arc arcs_73_1[2] = { - {27, 4}, - {0, 1}, +static arc arcs_73_1[1] = { + {21, 2}, }; -static arc arcs_73_2[1] = { - {26, 5}, +static arc arcs_73_2[2] = { + {13, 3}, + {23, 4}, }; -static arc arcs_73_3[1] = { - {26, 6}, +static arc arcs_73_3[2] = { + {9, 5}, + {15, 6}, }; -static arc arcs_73_4[4] = { - {161, 1}, - {28, 2}, - {29, 3}, - {0, 4}, +static arc arcs_73_4[1] = { + {24, 7}, }; -static arc arcs_73_5[2] = { - {27, 7}, - {0, 5}, +static arc arcs_73_5[1] = { + {15, 6}, }; static arc arcs_73_6[1] = { - {0, 6}, + {23, 4}, }; static arc arcs_73_7[1] = { - {29, 3}, + {0, 7}, }; static state states_73[8] = { - {3, arcs_73_0}, - {2, arcs_73_1}, - {1, arcs_73_2}, - {1, arcs_73_3}, - {4, arcs_73_4}, - {2, arcs_73_5}, + {1, arcs_73_0}, + {1, arcs_73_1}, + {2, arcs_73_2}, + {2, arcs_73_3}, + {1, arcs_73_4}, + {1, arcs_73_5}, {1, arcs_73_6}, {1, arcs_73_7}, }; -static arc arcs_74_0[1] = { - {26, 1}, +static arc arcs_74_0[3] = { + {162, 1}, + {30, 2}, + {31, 3}, }; -static arc arcs_74_1[3] = { - {156, 2}, - {25, 3}, +static arc arcs_74_1[2] = { + {29, 4}, {0, 1}, }; static arc arcs_74_2[1] = { - {0, 2}, + {28, 5}, }; static arc arcs_74_3[1] = { - {26, 2}, + {28, 6}, +}; +static arc arcs_74_4[4] = { + {162, 1}, + {30, 2}, + {31, 3}, + {0, 4}, +}; +static arc arcs_74_5[2] = { + {29, 7}, + {0, 5}, +}; +static arc arcs_74_6[1] = { + {0, 6}, +}; +static arc arcs_74_7[1] = { + {31, 3}, }; -static state states_74[4] = { - {1, arcs_74_0}, - {3, arcs_74_1}, +static state states_74[8] = { + {3, arcs_74_0}, + {2, arcs_74_1}, {1, arcs_74_2}, {1, arcs_74_3}, + {4, arcs_74_4}, + {2, arcs_74_5}, + {1, arcs_74_6}, + {1, arcs_74_7}, }; -static arc arcs_75_0[2] = { - {155, 1}, - {163, 1}, +static arc arcs_75_0[1] = { + {28, 1}, }; -static arc arcs_75_1[1] = { +static arc arcs_75_1[3] = { + {157, 2}, + {27, 3}, {0, 1}, }; -static state states_75[2] = { - {2, arcs_75_0}, - {1, arcs_75_1}, -}; -static arc arcs_76_0[1] = { - {95, 1}, -}; -static arc arcs_76_1[1] = { - {59, 2}, +static arc arcs_75_2[1] = { + {0, 2}, }; -static arc arcs_76_2[1] = { - {83, 3}, +static arc arcs_75_3[1] = { + {28, 2}, }; -static arc arcs_76_3[1] = { - {104, 4}, +static state states_75[4] = { + {1, arcs_75_0}, + {3, arcs_75_1}, + {1, arcs_75_2}, + {1, arcs_75_3}, }; -static arc arcs_76_4[2] = { - {162, 5}, - {0, 4}, +static arc arcs_76_0[2] = { + {156, 1}, + {164, 1}, }; -static arc arcs_76_5[1] = { - {0, 5}, +static arc arcs_76_1[1] = { + {0, 1}, }; -static state states_76[6] = { - {1, arcs_76_0}, +static state states_76[2] = { + {2, arcs_76_0}, {1, arcs_76_1}, - {1, arcs_76_2}, - {1, arcs_76_3}, - {2, arcs_76_4}, - {1, arcs_76_5}, }; static arc arcs_77_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_77_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_77_2[2] = { - {162, 3}, - {0, 2}, +static arc arcs_77_2[1] = { + {85, 3}, }; static arc arcs_77_3[1] = { - {0, 3}, + {105, 4}, +}; +static arc arcs_77_4[2] = { + {163, 5}, + {0, 4}, }; -static state states_77[4] = { +static arc arcs_77_5[1] = { + {0, 5}, +}; +static state states_77[6] = { {1, arcs_77_0}, {1, arcs_77_1}, - {2, arcs_77_2}, + {1, arcs_77_2}, {1, arcs_77_3}, + {2, arcs_77_4}, + {1, arcs_77_5}, }; -static arc arcs_78_0[2] = { - {156, 1}, - {165, 1}, +static arc arcs_78_0[1] = { + {92, 1}, }; static arc arcs_78_1[1] = { - {0, 1}, -}; -static state states_78[2] = { - {2, arcs_78_0}, - {1, arcs_78_1}, -}; -static arc arcs_79_0[1] = { - {95, 1}, + {106, 2}, }; -static arc arcs_79_1[1] = { - {59, 2}, +static arc arcs_78_2[2] = { + {163, 3}, + {0, 2}, }; -static arc arcs_79_2[1] = { - {83, 3}, +static arc arcs_78_3[1] = { + {0, 3}, }; -static arc arcs_79_3[1] = { - {106, 4}, +static state states_78[4] = { + {1, arcs_78_0}, + {1, arcs_78_1}, + {2, arcs_78_2}, + {1, arcs_78_3}, }; -static arc arcs_79_4[2] = { - {164, 5}, - {0, 4}, +static arc arcs_79_0[2] = { + {157, 1}, + {166, 1}, }; -static arc arcs_79_5[1] = { - {0, 5}, +static arc arcs_79_1[1] = { + {0, 1}, }; -static state states_79[6] = { - {1, arcs_79_0}, +static state states_79[2] = { + {2, arcs_79_0}, {1, arcs_79_1}, - {1, arcs_79_2}, - {1, arcs_79_3}, - {2, arcs_79_4}, - {1, arcs_79_5}, }; static arc arcs_80_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_80_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_80_2[2] = { - {164, 3}, - {0, 2}, +static arc arcs_80_2[1] = { + {85, 3}, }; static arc arcs_80_3[1] = { - {0, 3}, + {107, 4}, }; -static state states_80[4] = { +static arc arcs_80_4[2] = { + {165, 5}, + {0, 4}, +}; +static arc arcs_80_5[1] = { + {0, 5}, +}; +static state states_80[6] = { {1, arcs_80_0}, {1, arcs_80_1}, - {2, arcs_80_2}, + {1, arcs_80_2}, {1, arcs_80_3}, + {2, arcs_80_4}, + {1, arcs_80_5}, }; static arc arcs_81_0[1] = { - {26, 1}, + {92, 1}, }; -static arc arcs_81_1[2] = { - {27, 0}, - {0, 1}, +static arc arcs_81_1[1] = { + {106, 2}, +}; +static arc arcs_81_2[2] = { + {165, 3}, + {0, 2}, +}; +static arc arcs_81_3[1] = { + {0, 3}, }; -static state states_81[2] = { +static state states_81[4] = { {1, arcs_81_0}, - {2, arcs_81_1}, + {1, arcs_81_1}, + {2, arcs_81_2}, + {1, arcs_81_3}, }; static arc arcs_82_0[1] = { - {19, 1}, + {28, 1}, }; -static arc arcs_82_1[1] = { +static arc arcs_82_1[2] = { + {29, 0}, {0, 1}, }; static state states_82[2] = { {1, arcs_82_0}, - {1, arcs_82_1}, + {2, arcs_82_1}, }; static arc arcs_83_0[1] = { - {167, 1}, + {21, 1}, +}; +static arc arcs_83_1[1] = { + {0, 1}, +}; +static state states_83[2] = { + {1, arcs_83_0}, + {1, arcs_83_1}, +}; +static arc arcs_84_0[1] = { + {168, 1}, }; -static arc arcs_83_1[2] = { +static arc arcs_84_1[2] = { {9, 2}, {0, 1}, }; -static arc arcs_83_2[1] = { +static arc arcs_84_2[1] = { {0, 2}, }; -static state states_83[3] = { - {1, arcs_83_0}, - {2, arcs_83_1}, - {1, arcs_83_2}, +static state states_84[3] = { + {1, arcs_84_0}, + {2, arcs_84_1}, + {1, arcs_84_2}, }; -static dfa dfas[84] = { +static dfa dfas[85] = { {256, "single_input", 0, 3, states_0, - "\004\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {257, "file_input", 0, 2, states_1, - "\204\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {258, "eval_input", 0, 3, states_2, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {259, "decorator", 0, 7, states_3, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 0, 2, states_4, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {261, "funcdef", 0, 7, states_5, - "\000\010\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {262, "parameters", 0, 4, states_6, - "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {263, "varargslist", 0, 10, states_7, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {264, "fpdef", 0, 4, states_8, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {265, "fplist", 0, 3, states_9, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {266, "stmt", 0, 2, states_10, - "\000\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, - {267, "simple_stmt", 0, 4, states_11, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {268, "small_stmt", 0, 2, states_12, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {269, "expr_stmt", 0, 6, states_13, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {270, "augassign", 0, 2, states_14, - "\000\000\000\000\000\360\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {271, "print_stmt", 0, 9, states_15, - "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {272, "del_stmt", 0, 3, states_16, - "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {273, "pass_stmt", 0, 2, states_17, - "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {274, "flow_stmt", 0, 2, states_18, - "\000\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\200"}, - {275, "break_stmt", 0, 2, states_19, - "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, - {276, "continue_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"}, - {277, "return_stmt", 0, 3, states_21, - "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "yield_stmt", 0, 2, states_22, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, - {279, "raise_stmt", 0, 7, states_23, - "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, - {280, "import_stmt", 0, 2, states_24, - "\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000"}, - {281, "import_name", 0, 3, states_25, - "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, - {282, "import_from", 0, 8, states_26, - "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, - {283, "import_as_name", 0, 4, states_27, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {284, "dotted_as_name", 0, 4, states_28, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {285, "import_as_names", 0, 3, states_29, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {286, "dotted_as_names", 0, 2, states_30, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {287, "dotted_name", 0, 2, states_31, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {288, "global_stmt", 0, 3, states_32, - "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, - {289, "exec_stmt", 0, 7, states_33, - "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"}, - {290, "assert_stmt", 0, 5, states_34, - "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {291, "compound_stmt", 0, 2, states_35, - "\000\010\004\000\000\000\000\000\000\000\000\310\011\000\000\000\000\000\000\000\001"}, - {292, "if_stmt", 0, 8, states_36, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {293, "while_stmt", 0, 8, states_37, - "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, - {294, "for_stmt", 0, 10, states_38, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {295, "try_stmt", 0, 13, states_39, - "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, - {296, "with_stmt", 0, 6, states_40, - "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"}, - {297, "with_var", 0, 3, states_41, - "\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, - {298, "except_clause", 0, 5, states_42, - "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, - {299, "suite", 0, 5, states_43, - "\004\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {300, "testlist_safe", 0, 5, states_44, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {301, "old_test", 0, 2, states_45, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {302, "old_lambdef", 0, 5, states_46, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {303, "test", 0, 6, states_47, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {304, "or_test", 0, 2, states_48, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {305, "and_test", 0, 2, states_49, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {306, "not_test", 0, 3, states_50, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {307, "comparison", 0, 2, states_51, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {308, "comp_op", 0, 4, states_52, - "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\344\037\000\000\000\000\000"}, - {309, "expr", 0, 2, states_53, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {310, "xor_expr", 0, 2, states_54, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {311, "and_expr", 0, 2, states_55, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {312, "shift_expr", 0, 2, states_56, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {313, "arith_expr", 0, 2, states_57, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {314, "term", 0, 2, states_58, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {315, "factor", 0, 3, states_59, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {316, "power", 0, 4, states_60, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {317, "atom", 0, 11, states_61, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {318, "listmaker", 0, 5, states_62, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {319, "testlist_gexp", 0, 5, states_63, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {320, "lambdef", 0, 5, states_64, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {321, "trailer", 0, 7, states_65, - "\000\040\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\002\000\000"}, - {322, "subscriptlist", 0, 3, states_66, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {323, "subscript", 0, 7, states_67, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {324, "sliceop", 0, 3, states_68, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {325, "exprlist", 0, 3, states_69, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {326, "testlist", 0, 3, states_70, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {327, "dictmaker", 0, 5, states_71, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {328, "classdef", 0, 8, states_72, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {329, "arglist", 0, 8, states_73, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {330, "argument", 0, 4, states_74, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {331, "list_iter", 0, 2, states_75, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {332, "list_for", 0, 6, states_76, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {333, "list_if", 0, 4, states_77, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {334, "gen_iter", 0, 2, states_78, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {335, "gen_for", 0, 6, states_79, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {336, "gen_if", 0, 4, states_80, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {337, "testlist1", 0, 2, states_81, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {338, "encoding_decl", 0, 2, states_82, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {339, "yield_expr", 0, 3, states_83, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {261, "decorated", 0, 3, states_5, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {262, "funcdef", 0, 6, states_6, + "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {263, "parameters", 0, 4, states_7, + "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {264, "varargslist", 0, 10, states_8, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {265, "fpdef", 0, 4, states_9, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {266, "fplist", 0, 3, states_10, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {267, "stmt", 0, 2, states_11, + "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + {268, "simple_stmt", 0, 4, states_12, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {269, "small_stmt", 0, 2, states_13, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {270, "expr_stmt", 0, 6, states_14, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {271, "augassign", 0, 2, states_15, + "\000\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {272, "print_stmt", 0, 9, states_16, + "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {273, "del_stmt", 0, 3, states_17, + "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {274, "pass_stmt", 0, 2, states_18, + "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {275, "flow_stmt", 0, 2, states_19, + "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {276, "break_stmt", 0, 2, states_20, + "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {277, "continue_stmt", 0, 2, states_21, + "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {278, "return_stmt", 0, 3, states_22, + "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {279, "yield_stmt", 0, 2, states_23, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {280, "raise_stmt", 0, 7, states_24, + "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {281, "import_stmt", 0, 2, states_25, + "\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000"}, + {282, "import_name", 0, 3, states_26, + "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, + {283, "import_from", 0, 8, states_27, + "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + {284, "import_as_name", 0, 4, states_28, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {285, "dotted_as_name", 0, 4, states_29, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {286, "import_as_names", 0, 3, states_30, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {287, "dotted_as_names", 0, 2, states_31, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {288, "dotted_name", 0, 2, states_32, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {289, "global_stmt", 0, 3, states_33, + "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, + {290, "exec_stmt", 0, 7, states_34, + "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"}, + {291, "assert_stmt", 0, 5, states_35, + "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, + {292, "compound_stmt", 0, 2, states_36, + "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\002\000"}, + {293, "if_stmt", 0, 8, states_37, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {294, "while_stmt", 0, 8, states_38, + "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, + {295, "for_stmt", 0, 10, states_39, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {296, "try_stmt", 0, 13, states_40, + "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, + {297, "with_stmt", 0, 6, states_41, + "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + {298, "with_var", 0, 3, states_42, + "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, + {299, "except_clause", 0, 5, states_43, + "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, + {300, "suite", 0, 5, states_44, + "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {301, "testlist_safe", 0, 5, states_45, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {302, "old_test", 0, 2, states_46, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {303, "old_lambdef", 0, 5, states_47, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {304, "test", 0, 6, states_48, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {305, "or_test", 0, 2, states_49, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {306, "and_test", 0, 2, states_50, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {307, "not_test", 0, 3, states_51, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {308, "comparison", 0, 2, states_52, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {309, "comp_op", 0, 4, states_53, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\310\077\000\000\000\000\000\000"}, + {310, "expr", 0, 2, states_54, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {311, "xor_expr", 0, 2, states_55, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {312, "and_expr", 0, 2, states_56, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {313, "shift_expr", 0, 2, states_57, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {314, "arith_expr", 0, 2, states_58, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {315, "term", 0, 2, states_59, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {316, "factor", 0, 3, states_60, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {317, "power", 0, 4, states_61, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {318, "atom", 0, 11, states_62, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {319, "listmaker", 0, 5, states_63, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {320, "testlist_gexp", 0, 5, states_64, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {321, "lambdef", 0, 5, states_65, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {322, "trailer", 0, 7, states_66, + "\000\040\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\004\000\000\000"}, + {323, "subscriptlist", 0, 3, states_67, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {324, "subscript", 0, 7, states_68, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {325, "sliceop", 0, 3, states_69, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {326, "exprlist", 0, 3, states_70, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {327, "testlist", 0, 3, states_71, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {328, "dictmaker", 0, 5, states_72, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {329, "classdef", 0, 8, states_73, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, + {330, "arglist", 0, 8, states_74, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {331, "argument", 0, 4, states_75, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {332, "list_iter", 0, 2, states_76, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {333, "list_for", 0, 6, states_77, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {334, "list_if", 0, 4, states_78, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {335, "gen_iter", 0, 2, states_79, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {336, "gen_for", 0, 6, states_80, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {337, "gen_if", 0, 4, states_81, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {338, "testlist1", 0, 2, states_82, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {339, "encoding_decl", 0, 2, states_83, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {340, "yield_expr", 0, 3, states_84, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, }; -static label labels[168] = { +static label labels[169] = { {0, "EMPTY"}, {256, 0}, {4, 0}, - {267, 0}, - {291, 0}, + {268, 0}, + {292, 0}, {257, 0}, - {266, 0}, + {267, 0}, {0, 0}, {258, 0}, - {326, 0}, + {327, 0}, {259, 0}, {50, 0}, - {287, 0}, + {288, 0}, {7, 0}, - {329, 0}, + {330, 0}, {8, 0}, {260, 0}, {261, 0}, + {329, 0}, + {262, 0}, {1, "def"}, {1, 0}, - {262, 0}, - {11, 0}, - {299, 0}, {263, 0}, + {11, 0}, + {300, 0}, {264, 0}, + {265, 0}, {22, 0}, - {303, 0}, + {304, 0}, {12, 0}, {16, 0}, {36, 0}, - {265, 0}, - {268, 0}, - {13, 0}, + {266, 0}, {269, 0}, - {271, 0}, + {13, 0}, + {270, 0}, {272, 0}, {273, 0}, {274, 0}, - {280, 0}, - {288, 0}, + {275, 0}, + {281, 0}, {289, 0}, {290, 0}, - {270, 0}, - {339, 0}, + {291, 0}, + {271, 0}, + {340, 0}, {37, 0}, {38, 0}, {39, 0}, @@ -2009,64 +2024,63 @@ {1, "print"}, {35, 0}, {1, "del"}, - {325, 0}, + {326, 0}, {1, "pass"}, - {275, 0}, {276, 0}, {277, 0}, - {279, 0}, {278, 0}, + {280, 0}, + {279, 0}, {1, "break"}, {1, "continue"}, {1, "return"}, {1, "raise"}, - {281, 0}, {282, 0}, + {283, 0}, {1, "import"}, - {286, 0}, + {287, 0}, {1, "from"}, {23, 0}, - {285, 0}, - {283, 0}, - {1, "as"}, + {286, 0}, {284, 0}, + {1, "as"}, + {285, 0}, {1, "global"}, {1, "exec"}, - {309, 0}, + {310, 0}, {1, "in"}, {1, "assert"}, - {292, 0}, {293, 0}, {294, 0}, {295, 0}, {296, 0}, - {328, 0}, + {297, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, {1, "while"}, {1, "for"}, {1, "try"}, - {298, 0}, + {299, 0}, {1, "finally"}, {1, "with"}, - {297, 0}, + {298, 0}, {1, "except"}, {5, 0}, {6, 0}, - {300, 0}, {301, 0}, - {304, 0}, {302, 0}, - {1, "lambda"}, - {320, 0}, {305, 0}, - {1, "or"}, + {303, 0}, + {1, "lambda"}, + {321, 0}, {306, 0}, + {1, "or"}, + {307, 0}, {1, "and"}, {1, "not"}, - {307, 0}, {308, 0}, + {309, 0}, {20, 0}, {21, 0}, {28, 0}, @@ -2075,53 +2089,53 @@ {29, 0}, {29, 0}, {1, "is"}, - {310, 0}, - {18, 0}, {311, 0}, - {33, 0}, + {18, 0}, {312, 0}, - {19, 0}, + {33, 0}, {313, 0}, - {34, 0}, + {19, 0}, {314, 0}, + {34, 0}, + {315, 0}, {14, 0}, {15, 0}, - {315, 0}, + {316, 0}, {17, 0}, {24, 0}, {48, 0}, {32, 0}, - {316, 0}, {317, 0}, - {321, 0}, - {319, 0}, - {9, 0}, {318, 0}, + {322, 0}, + {320, 0}, + {9, 0}, + {319, 0}, {10, 0}, {26, 0}, - {327, 0}, + {328, 0}, {27, 0}, {25, 0}, - {337, 0}, + {338, 0}, {2, 0}, {3, 0}, - {332, 0}, - {335, 0}, - {322, 0}, + {333, 0}, + {336, 0}, {323, 0}, {324, 0}, + {325, 0}, {1, "class"}, - {330, 0}, {331, 0}, - {333, 0}, + {332, 0}, {334, 0}, - {336, 0}, - {338, 0}, + {335, 0}, + {337, 0}, + {339, 0}, {1, "yield"}, }; grammar _PyParser_Grammar = { - 84, + 85, dfas, - {168, labels}, + {169, labels}, 256 }; Modified: python/branches/trunk-math/Python/import.c ============================================================================== --- python/branches/trunk-math/Python/import.c (original) +++ python/branches/trunk-math/Python/import.c Thu Feb 28 21:09:17 2008 @@ -22,6 +22,11 @@ extern "C" { #endif +#ifdef MS_WINDOWS +/* for stat.st_mode */ +typedef unsigned short mode_t; +#endif + extern time_t PyOS_GetLastModificationTime(char *, FILE *); /* In getmtime.c */ @@ -829,7 +834,7 @@ /* Helper to open a bytecode file for writing in exclusive mode */ static FILE * -open_exclusive(char *filename) +open_exclusive(char *filename, mode_t mode) { #if defined(O_EXCL)&&defined(O_CREAT)&&defined(O_WRONLY)&&defined(O_TRUNC) /* Use O_EXCL to avoid a race condition when another process tries to @@ -845,9 +850,9 @@ |O_BINARY /* necessary for Windows */ #endif #ifdef __VMS - , 0666, "ctxt=bin", "shr=nil" + , mode, "ctxt=bin", "shr=nil" #else - , 0666 + , mode #endif ); if (fd < 0) @@ -866,11 +871,13 @@ remove the file. */ static void -write_compiled_module(PyCodeObject *co, char *cpathname, time_t mtime) +write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat) { FILE *fp; + time_t mtime = srcstat->st_mtime; + mode_t mode = srcstat->st_mode; - fp = open_exclusive(cpathname); + fp = open_exclusive(cpathname, mode); if (fp == NULL) { if (Py_VerboseFlag) PySys_WriteStderr( @@ -907,17 +914,16 @@ static PyObject * load_source_module(char *name, char *pathname, FILE *fp) { - time_t mtime; + struct stat st; FILE *fpc; char buf[MAXPATHLEN+1]; char *cpathname; PyCodeObject *co; PyObject *m; - - mtime = PyOS_GetLastModificationTime(pathname, fp); - if (mtime == (time_t)(-1)) { + + if (fstat(fileno(fp), &st) != 0) { PyErr_Format(PyExc_RuntimeError, - "unable to get modification time from '%s'", + "unable to get file status from '%s'", pathname); return NULL; } @@ -926,7 +932,7 @@ in 4 bytes. This will be fine until sometime in the year 2038, when a 4-byte signed time_t will overflow. */ - if (mtime >> 32) { + if (st.st_mtime >> 32) { PyErr_SetString(PyExc_OverflowError, "modification time overflows a 4 byte field"); return NULL; @@ -935,7 +941,7 @@ cpathname = make_compiled_pathname(pathname, buf, (size_t)MAXPATHLEN + 1); if (cpathname != NULL && - (fpc = check_compiled_module(pathname, mtime, cpathname))) { + (fpc = check_compiled_module(pathname, st.st_mtime, cpathname))) { co = read_compiled_module(cpathname, fpc); fclose(fpc); if (co == NULL) @@ -955,7 +961,7 @@ if (cpathname) { PyObject *ro = PySys_GetObject("dont_write_bytecode"); if (ro == NULL || !PyObject_IsTrue(ro)) - write_compiled_module(co, cpathname, mtime); + write_compiled_module(co, cpathname, &st); } } m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, pathname); Modified: python/branches/trunk-math/Python/mystrtoul.c ============================================================================== --- python/branches/trunk-math/Python/mystrtoul.c (original) +++ python/branches/trunk-math/Python/mystrtoul.c Thu Feb 28 21:09:17 2008 @@ -5,14 +5,6 @@ #define _SGI_MP_SOURCE #endif -/* Convert a possibly signed character to a nonnegative int */ -/* XXX This assumes characters are 8 bits wide */ -#ifdef __CHAR_UNSIGNED__ -#define Py_CHARMASK(c) (c) -#else -#define Py_CHARMASK(c) ((c) & 0xff) -#endif - /* strtol and strtoul, renamed to avoid conflicts */ Modified: python/branches/trunk-math/Python/peephole.c ============================================================================== --- python/branches/trunk-math/Python/peephole.c (original) +++ python/branches/trunk-math/Python/peephole.c Thu Feb 28 21:09:17 2008 @@ -317,7 +317,7 @@ if (codestr == NULL) goto exitUnchanged; codestr = (unsigned char *)memcpy(codestr, - PyString_AS_STRING(code), codelen); + PyString_AS_STRING(code), codelen); /* Verify that RETURN_VALUE terminates the codestring. This allows the various transformation patterns to look ahead several Modified: python/branches/trunk-math/Python/pystrtod.c ============================================================================== --- python/branches/trunk-math/Python/pystrtod.c (original) +++ python/branches/trunk-math/Python/pystrtod.c Thu Feb 28 21:09:17 2008 @@ -186,6 +186,15 @@ } +/* From the C99 standard, section 7.19.6: +The exponent always contains at least two digits, and only as many more digits +as necessary to represent the exponent. +*/ +#define MIN_EXPONENT_DIGITS 2 + +/* see FORMATBUFLEN in unicodeobject.c */ +#define FLOAT_FORMATBUFLEN 120 + /** * PyOS_ascii_formatd: * @buffer: A buffer to place the resulting string in @@ -197,8 +206,10 @@ * Converts a #gdouble to a string, using the '.' as * decimal point. To format the number you pass in * a printf()-style format string. Allowed conversion - * specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'. + * specifiers are 'e', 'E', 'f', 'F', 'g', 'G', and 'n'. * + * 'n' is the same as 'g', except it uses the current locale. + * * Return value: The pointer to the buffer with the converted string. **/ char * @@ -207,17 +218,23 @@ const char *format, double d) { - struct lconv *locale_data; - const char *decimal_point; - size_t decimal_point_len, rest_len; char *p; char format_char; + size_t format_len = strlen(format); + + /* For type 'n', we need to make a copy of the format string, because + we're going to modify 'n' -> 'g', and format is const char*, so we + can't modify it directly. FLOAT_FORMATBUFLEN should be longer than + we ever need this to be. There's an upcoming check to ensure it's + big enough. */ + char tmp_format[FLOAT_FORMATBUFLEN]; /* g_return_val_if_fail (buffer != NULL, NULL); */ /* g_return_val_if_fail (format[0] == '%', NULL); */ /* g_return_val_if_fail (strpbrk (format + 1, "'l%") == NULL, NULL); */ - format_char = format[strlen(format) - 1]; + /* The last character in the format string must be the format char */ + format_char = format[format_len - 1]; /* g_return_val_if_fail (format_char == 'e' || format_char == 'E' || */ /* format_char == 'f' || format_char == 'F' || */ @@ -227,43 +244,126 @@ if (format[0] != '%') return NULL; + /* I'm not sure why this test is here. It's ensuring that the format + string after the first character doesn't have a single quote, a + lowercase l, or a percent. This is the reverse of the commented-out + test about 10 lines ago. */ if (strpbrk(format + 1, "'l%")) return NULL; if (!(format_char == 'e' || format_char == 'E' || format_char == 'f' || format_char == 'F' || - format_char == 'g' || format_char == 'G')) + format_char == 'g' || format_char == 'G' || + format_char == 'n')) return NULL; + /* Map 'n' format_char to 'g', by copying the format string and + replacing the final 'n' with a 'g' */ + if (format_char == 'n') { + if (format_len + 1 >= sizeof(tmp_format)) { + /* The format won't fit in our copy. Error out. In + practice, this will never happen and will be detected + by returning NULL */ + return NULL; + } + strcpy(tmp_format, format); + tmp_format[format_len - 1] = 'g'; + format = tmp_format; + } + /* Have PyOS_snprintf do the hard work */ PyOS_snprintf(buffer, buf_len, format, d); - locale_data = localeconv(); - decimal_point = locale_data->decimal_point; - decimal_point_len = strlen(decimal_point); - - assert(decimal_point_len != 0); - - if (decimal_point[0] != '.' || - decimal_point[1] != 0) - { - p = buffer; - - if (*p == '+' || *p == '-') - p++; - - while (isdigit((unsigned char)*p)) - p++; - - if (strncmp(p, decimal_point, decimal_point_len) == 0) - { - *p = '.'; - p++; - if (decimal_point_len > 1) { - rest_len = strlen(p + (decimal_point_len - 1)); - memmove(p, p + (decimal_point_len - 1), - rest_len); - p[rest_len] = 0; + /* Get the current local, and find the decimal point character (or + string?). Convert that string back to a dot. Do not do this if + using the 'n' (number) format code. */ + if (format_char != 'n') { + struct lconv *locale_data = localeconv(); + const char *decimal_point = locale_data->decimal_point; + size_t decimal_point_len = strlen(decimal_point); + size_t rest_len; + + assert(decimal_point_len != 0); + + if (decimal_point[0] != '.' || decimal_point[1] != 0) { + p = buffer; + + if (*p == '+' || *p == '-') + p++; + + while (isdigit(Py_CHARMASK(*p))) + p++; + + if (strncmp(p, decimal_point, decimal_point_len) == 0) { + *p = '.'; + p++; + if (decimal_point_len > 1) { + rest_len = strlen(p + + (decimal_point_len - 1)); + memmove(p, p + (decimal_point_len - 1), + rest_len); + p[rest_len] = 0; + } + } + } + } + + /* If an exponent exists, ensure that the exponent is at least + MIN_EXPONENT_DIGITS digits, providing the buffer is large enough + for the extra zeros. Also, if there are more than + MIN_EXPONENT_DIGITS, remove as many zeros as possible until we get + back to MIN_EXPONENT_DIGITS */ + p = strpbrk(buffer, "eE"); + if (p && (*(p + 1) == '-' || *(p + 1) == '+')) { + char *start = p + 2; + int exponent_digit_cnt = 0; + int leading_zero_cnt = 0; + int in_leading_zeros = 1; + int significant_digit_cnt; + + p += 2; + while (*p && isdigit(Py_CHARMASK(*p))) { + if (in_leading_zeros && *p == '0') + ++leading_zero_cnt; + if (*p != '0') + in_leading_zeros = 0; + ++p; + ++exponent_digit_cnt; + } + + significant_digit_cnt = exponent_digit_cnt - leading_zero_cnt; + if (exponent_digit_cnt == MIN_EXPONENT_DIGITS) { + /* If there are 2 exactly digits, we're done, + regardless of what they contain */ + } + else if (exponent_digit_cnt > MIN_EXPONENT_DIGITS) { + int extra_zeros_cnt; + + /* There are more than 2 digits in the exponent. See + if we can delete some of the leading zeros */ + if (significant_digit_cnt < MIN_EXPONENT_DIGITS) + significant_digit_cnt = MIN_EXPONENT_DIGITS; + extra_zeros_cnt = exponent_digit_cnt - significant_digit_cnt; + + /* Delete extra_zeros_cnt worth of characters from the + front of the exponent */ + assert(extra_zeros_cnt >= 0); + + /* Add one to significant_digit_cnt to copy the + trailing 0 byte, thus setting the length */ + memmove(start, + start + extra_zeros_cnt, + significant_digit_cnt + 1); + } + else { + /* If there are fewer than 2 digits, add zeros + until there are 2, if there's enough room */ + int zeros = MIN_EXPONENT_DIGITS - exponent_digit_cnt; + if (start + zeros + exponent_digit_cnt + 1 + < buffer + buf_len) { + memmove(start + zeros, start, + exponent_digit_cnt + 1); + memset(start, '0', zeros); } } } Modified: python/branches/trunk-math/Python/pythonrun.c ============================================================================== --- python/branches/trunk-math/Python/pythonrun.c (original) +++ python/branches/trunk-math/Python/pythonrun.c Thu Feb 28 21:09:17 2008 @@ -1701,8 +1701,14 @@ not enough space left on the stack */ alloca(PYOS_STACK_MARGIN * sizeof(void*)); return 0; - } __except (EXCEPTION_EXECUTE_HANDLER) { - /* just ignore all errors */ + } __except (GetExceptionCode() == STATUS_STACK_OVERFLOW ? + EXCEPTION_EXECUTE_HANDLER : + EXCEPTION_CONTINUE_SEARCH) { + int errcode = _resetstkoflw(); + if (errcode) + { + Py_FatalError("Could not reset the stack!"); + } } return 1; } Modified: python/branches/trunk-math/Python/symtable.c ============================================================================== --- python/branches/trunk-math/Python/symtable.c (original) +++ python/branches/trunk-math/Python/symtable.c Thu Feb 28 21:09:17 2008 @@ -931,8 +931,8 @@ return 0; if (s->v.FunctionDef.args->defaults) VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults); - if (s->v.FunctionDef.decorators) - VISIT_SEQ(st, expr, s->v.FunctionDef.decorators); + if (s->v.FunctionDef.decorator_list) + VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list); if (!symtable_enter_block(st, s->v.FunctionDef.name, FunctionBlock, (void *)s, s->lineno)) return 0; @@ -946,6 +946,8 @@ if (!symtable_add_def(st, s->v.ClassDef.name, DEF_LOCAL)) return 0; VISIT_SEQ(st, expr, s->v.ClassDef.bases); + if (s->v.ClassDef.decorator_list) + VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list); if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock, (void *)s, s->lineno)) return 0; Modified: python/branches/trunk-math/Tools/compiler/ast.txt ============================================================================== --- python/branches/trunk-math/Tools/compiler/ast.txt (original) +++ python/branches/trunk-math/Tools/compiler/ast.txt Thu Feb 28 21:09:17 2008 @@ -14,7 +14,7 @@ Decorators: nodes! Function: decorators&, name*, argnames*, defaults!, flags*, doc*, code Lambda: argnames*, defaults!, flags*, code -Class: name*, bases!, doc*, code +Class: name*, bases!, doc*, code, decorators& = None Pass: Break: Continue: @@ -97,7 +97,7 @@ self.kwargs = 1 init(GenExpr): - self.argnames = ['[outmost-iterable]'] + self.argnames = ['.0'] self.varargs = self.kwargs = None init(GenExprFor): Modified: python/branches/trunk-math/Tools/compiler/astgen.py ============================================================================== --- python/branches/trunk-math/Tools/compiler/astgen.py (original) +++ python/branches/trunk-math/Tools/compiler/astgen.py Thu Feb 28 21:09:17 2008 @@ -8,7 +8,6 @@ """ import fileinput -import getopt import re import sys from StringIO import StringIO Modified: python/branches/trunk-math/Tools/compiler/dumppyc.py ============================================================================== --- python/branches/trunk-math/Tools/compiler/dumppyc.py (original) +++ python/branches/trunk-math/Tools/compiler/dumppyc.py Thu Feb 28 21:09:17 2008 @@ -1,7 +1,6 @@ #! /usr/bin/env python import marshal -import os import dis import types Modified: python/branches/trunk-math/Tools/faqwiz/faqw.py ============================================================================== --- python/branches/trunk-math/Tools/faqwiz/faqw.py (original) +++ python/branches/trunk-math/Tools/faqwiz/faqw.py Thu Feb 28 21:09:17 2008 @@ -20,7 +20,7 @@ try: FAQDIR = "/usr/people/guido/python/FAQ" SRCDIR = "/usr/people/guido/python/src/Tools/faqwiz" - import os, sys, time, operator + import os, sys os.chdir(FAQDIR) sys.path.insert(0, SRCDIR) import faqwiz Modified: python/branches/trunk-math/Tools/modulator/Tkextra.py ============================================================================== --- python/branches/trunk-math/Tools/modulator/Tkextra.py (original) +++ python/branches/trunk-math/Tools/modulator/Tkextra.py Thu Feb 28 21:09:17 2008 @@ -218,7 +218,6 @@ 0, 'Save', 'Save as text') def _test(): - import sys global mainWidget mainWidget = Frame() Pack.config(mainWidget) Modified: python/branches/trunk-math/Tools/pybench/systimes.py ============================================================================== --- python/branches/trunk-math/Tools/pybench/systimes.py (original) +++ python/branches/trunk-math/Tools/pybench/systimes.py Thu Feb 28 21:09:17 2008 @@ -31,7 +31,7 @@ the author. All Rights Reserved. """ -import time, sys, struct +import time, sys # # Note: Please keep this module compatible to Python 1.5.2. Modified: python/branches/trunk-math/Tools/pynche/ChipViewer.py ============================================================================== --- python/branches/trunk-math/Tools/pynche/ChipViewer.py (original) +++ python/branches/trunk-math/Tools/pynche/ChipViewer.py Thu Feb 28 21:09:17 2008 @@ -13,7 +13,6 @@ selected and nearest ChipWidgets. """ -from types import StringType from Tkinter import * import ColorDB Modified: python/branches/trunk-math/Tools/pynche/TypeinViewer.py ============================================================================== --- python/branches/trunk-math/Tools/pynche/TypeinViewer.py (original) +++ python/branches/trunk-math/Tools/pynche/TypeinViewer.py Thu Feb 28 21:09:17 2008 @@ -12,8 +12,6 @@ you must hit Return or Tab to select the color. """ -import sys -import re from Tkinter import * Modified: python/branches/trunk-math/Tools/scripts/logmerge.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/logmerge.py (original) +++ python/branches/trunk-math/Tools/scripts/logmerge.py Thu Feb 28 21:09:17 2008 @@ -34,7 +34,7 @@ from their output. """ -import os, sys, errno, getopt, re +import sys, errno, getopt, re sep1 = '='*77 + '\n' # file separator sep2 = '-'*28 + '\n' # revision separator Modified: python/branches/trunk-math/Tools/scripts/nm2def.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/nm2def.py (original) +++ python/branches/trunk-math/Tools/scripts/nm2def.py Thu Feb 28 21:09:17 2008 @@ -34,7 +34,7 @@ option to produce this format (since it is the original v7 Unix format). """ -import os,re,sys +import os, sys PYTHONLIB = 'libpython'+sys.version[:3]+'.a' PC_PYTHONLIB = 'Python'+sys.version[0]+sys.version[2]+'.dll' Modified: python/branches/trunk-math/Tools/scripts/pindent.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/pindent.py (original) +++ python/branches/trunk-math/Tools/scripts/pindent.py Thu Feb 28 21:09:17 2008 @@ -81,7 +81,6 @@ TABSIZE = 8 EXPANDTABS = 0 -import os import re import sys Modified: python/branches/trunk-math/Tools/scripts/pysource.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/pysource.py (original) +++ python/branches/trunk-math/Tools/scripts/pysource.py Thu Feb 28 21:09:17 2008 @@ -20,7 +20,7 @@ __all__ = ["has_python_ext", "looks_like_python", "can_be_compiled", "walk_python_files"] -import sys, os, re +import os, re binary_re = re.compile('[\x00-\x08\x0E-\x1F\x7F]') Modified: python/branches/trunk-math/Tools/scripts/reindent.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/reindent.py (original) +++ python/branches/trunk-math/Tools/scripts/reindent.py Thu Feb 28 21:09:17 2008 @@ -4,10 +4,11 @@ """reindent [-d][-r][-v] [ path ... ] --d (--dryrun) Dry run. Analyze, but don't make any changes to, files. --r (--recurse) Recurse. Search for all .py files in subdirectories too. --v (--verbose) Verbose. Print informative msgs; else no output. --h (--help) Help. Print this usage information and exit. +-d (--dryrun) Dry run. Analyze, but don't make any changes to, files. +-r (--recurse) Recurse. Search for all .py files in subdirectories too. +-n (--nobackup) No backup. Does not make a ".bak" file before reindenting. +-v (--verbose) Verbose. Print informative msgs; else no output. +-h (--help) Help. Print this usage information and exit. Change Python (.py) files to use 4-space indents and no hard tab characters. Also trim excess spaces and tabs from ends of lines, and remove empty lines @@ -31,17 +32,23 @@ The hard part of reindenting is figuring out what to do with comment lines. So long as the input files get a clean bill of health from tabnanny.py, reindent should do a good job. + +The backup file is a copy of the one that is being reindented. The ".bak" +file is generated with shutil.copy(), but some corner cases regarding +user/group and permissions could leave the backup file more readable that +you'd prefer. You can always use the --nobackup option to prevent this. """ __version__ = "1" import tokenize -import os +import os, shutil import sys -verbose = 0 -recurse = 0 -dryrun = 0 +verbose = 0 +recurse = 0 +dryrun = 0 +makebackup = True def usage(msg=None): if msg is not None: @@ -57,10 +64,10 @@ def main(): import getopt - global verbose, recurse, dryrun + global verbose, recurse, dryrun, makebackup try: - opts, args = getopt.getopt(sys.argv[1:], "drvh", - ["dryrun", "recurse", "verbose", "help"]) + opts, args = getopt.getopt(sys.argv[1:], "drnvh", + ["dryrun", "recurse", "nobackup", "verbose", "help"]) except getopt.error, msg: usage(msg) return @@ -69,6 +76,8 @@ dryrun += 1 elif o in ('-r', '--recurse'): recurse += 1 + elif o in ('-n', '--nobackup'): + makebackup = False elif o in ('-v', '--verbose'): verbose += 1 elif o in ('-h', '--help'): @@ -112,11 +121,10 @@ print "But this is a dry run, so leaving it alone." if not dryrun: bak = file + ".bak" - if os.path.exists(bak): - os.remove(bak) - os.rename(file, bak) - if verbose: - print "renamed", file, "to", bak + if makebackup: + shutil.copyfile(file, bak) + if verbose: + print "backed up", file, "to", bak f = open(file, "w") r.write(f) f.close() Modified: python/branches/trunk-math/Tools/scripts/xxci.py ============================================================================== --- python/branches/trunk-math/Tools/scripts/xxci.py (original) +++ python/branches/trunk-math/Tools/scripts/xxci.py Thu Feb 28 21:09:17 2008 @@ -7,7 +7,6 @@ import sys import os from stat import * -import commands import fnmatch EXECMAGIC = '\001\140\000\010' Modified: python/branches/trunk-math/Tools/ssl/get-remote-certificate.py ============================================================================== --- python/branches/trunk-math/Tools/ssl/get-remote-certificate.py (original) +++ python/branches/trunk-math/Tools/ssl/get-remote-certificate.py Thu Feb 28 21:09:17 2008 @@ -6,7 +6,7 @@ # # By Bill Janssen. -import sys, os +import sys def fetch_server_certificate (host, port): Modified: python/branches/trunk-math/Tools/unicode/gencodec.py ============================================================================== --- python/branches/trunk-math/Tools/unicode/gencodec.py (original) +++ python/branches/trunk-math/Tools/unicode/gencodec.py Thu Feb 28 21:09:17 2008 @@ -26,7 +26,7 @@ """#" -import re, os, time, marshal, codecs +import re, os, marshal, codecs # Maximum allowed size of charmap tables MAX_TABLE_SIZE = 8192 Modified: python/branches/trunk-math/Tools/webchecker/wcgui.py ============================================================================== --- python/branches/trunk-math/Tools/webchecker/wcgui.py (original) +++ python/branches/trunk-math/Tools/webchecker/wcgui.py Thu Feb 28 21:09:17 2008 @@ -63,7 +63,6 @@ from Tkinter import * import tktools import webchecker -import random # Override some for a weaker platform if sys.platform == 'mac': Modified: python/branches/trunk-math/Tools/webchecker/wsgui.py ============================================================================== --- python/branches/trunk-math/Tools/webchecker/wsgui.py (original) +++ python/branches/trunk-math/Tools/webchecker/wsgui.py Thu Feb 28 21:09:17 2008 @@ -7,9 +7,7 @@ """ from Tkinter import * -import Tkinter import websucker -import sys import os import threading import Queue Modified: python/branches/trunk-math/setup.py ============================================================================== --- python/branches/trunk-math/setup.py (original) +++ python/branches/trunk-math/setup.py Thu Feb 28 21:09:17 2008 @@ -417,6 +417,9 @@ libraries=math_libs) ) exts.append( Extension('datetime', ['datetimemodule.c', 'timemodule.c'], libraries=math_libs) ) + # code that will be builtins in the future, but conflict with the + # current builtins + exts.append( Extension('future_builtins', ['future_builtins.c']) ) # random number generator implemented in C exts.append( Extension("_random", ["_randommodule.c"]) ) # fast iterator tools implemented in C From buildbot at python.org Thu Feb 28 21:36:42 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 20:36:42 +0000 Subject: [Python-checkins] buildbot failure in 2.6.msi Message-ID: <20080228203642.F38F71E4020@bag.python.org> The Buildbot has detected a new failure of 2.6.msi. Full details are available at: http://www.python.org/dev/buildbot/all/2.6.msi/builds/184 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: The web-page 'force build' button was pressed by 'Martin v. L??wis': check new MSI generator Build Source Stamp: [branch trunk] HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From python-checkins at python.org Thu Feb 28 22:00:45 2008 From: python-checkins at python.org (christian.heimes) Date: Thu, 28 Feb 2008 22:00:45 +0100 (CET) Subject: [Python-checkins] r61113 - python/trunk/Lib/test/test_signal.py Message-ID: <20080228210045.C78641E4020@bag.python.org> Author: christian.heimes Date: Thu Feb 28 22:00:45 2008 New Revision: 61113 Modified: python/trunk/Lib/test/test_signal.py Log: Windows fix for signal test - skip it earlier Modified: python/trunk/Lib/test/test_signal.py ============================================================================== --- python/trunk/Lib/test/test_signal.py (original) +++ python/trunk/Lib/test/test_signal.py Thu Feb 28 22:00:45 2008 @@ -1,7 +1,12 @@ import unittest from test import test_support import signal -import os, sys, time, errno +import sys, os, time, errno + +if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos': + raise test_support.TestSkipped("Can't test signal on %s" % \ + sys.platform) + class HandlerBCalled(Exception): pass @@ -256,10 +261,6 @@ self.assertEquals(i, False) def test_main(): - if sys.platform[:3] in ('win', 'os2') or sys.platform == 'riscos': - raise test_support.TestSkipped("Can't test signal on %s" % \ - sys.platform) - test_support.run_unittest(BasicSignalTests, InterProcessSignalTests, WakeupSignalTests, SiginterruptTest) From buildbot at python.org Thu Feb 28 22:19:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 21:19:10 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080228211910.8A7FD1E4029@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/965 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Thu Feb 28 22:33:06 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 21:33:06 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080228213306.818311E4011@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/667 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From buildbot at python.org Thu Feb 28 22:35:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 21:35:10 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080228213510.D355C1E4011@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/566 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Thu Feb 28 23:20:51 2008 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 28 Feb 2008 23:20:51 +0100 (CET) Subject: [Python-checkins] r61116 - python/trunk/Tools/msi/msi.py Message-ID: <20080228222051.403BC1E4011@bag.python.org> Author: martin.v.loewis Date: Thu Feb 28 23:20:50 2008 New Revision: 61116 Modified: python/trunk/Tools/msi/msi.py Log: Locate VS installation dir from environment, so that it works with the express edition. Modified: python/trunk/Tools/msi/msi.py ============================================================================== --- python/trunk/Tools/msi/msi.py (original) +++ python/trunk/Tools/msi/msi.py Thu Feb 28 23:20:50 2008 @@ -836,17 +836,11 @@ installer.FileVersion("msvcr71.dll", 1) def extract_msvcr90(): - import _winreg - # Find the location of the merge modules - k = _winreg.OpenKey( - _winreg.HKEY_LOCAL_MACHINE, - r"Software\Microsoft\VisualStudio\9.0\Setup\VS") - prod_dir = _winreg.QueryValueEx(k, "ProductDir")[0] - _winreg.CloseKey(k) + # Find the redistributable files + dir = os.path.join(os.environ['VS90COMNTOOLS'], r"..\..\VC\redist\x86\Microsoft.VC90.CRT") result = [] installer = msilib.MakeInstaller() - dir = os.path.join(prod_dir, r'VC\redist\x86\Microsoft.VC90.CRT') # omit msvcm90 and msvcp90, as they aren't really needed files = ["Microsoft.VC90.CRT.manifest", "msvcr90.dll"] for f in files: From buildbot at python.org Thu Feb 28 23:24:18 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 22:24:18 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-4 3.0 Message-ID: <20080228222418.BFEF91E4011@bag.python.org> The Buildbot has detected a new failure of x86 XP-4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-4%203.0/builds/548 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Thu Feb 28 23:30:43 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 28 Feb 2008 23:30:43 +0100 (CET) Subject: [Python-checkins] r61118 - in python/trunk: Lib/test/test_itertools.py Modules/itertoolsmodule.c Message-ID: <20080228223043.440211E4011@bag.python.org> Author: raymond.hettinger Date: Thu Feb 28 23:30:42 2008 New Revision: 61118 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Modules/itertoolsmodule.c Log: Have itertools.chain() consume its inputs lazily instead of building a tuple of iterators at the outset. Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Thu Feb 28 23:30:42 2008 @@ -50,7 +50,7 @@ self.assertEqual(list(chain('abc')), list('abc')) self.assertEqual(list(chain('')), []) self.assertEqual(take(4, chain('abc', 'def')), list('abcd')) - self.assertRaises(TypeError, chain, 2, 3) + self.assertRaises(TypeError, list,chain(2, 3)) def test_combinations(self): self.assertRaises(TypeError, combinations, 'abc') # missing r argument @@ -670,7 +670,7 @@ for g in (G, I, Ig, S, L, R): self.assertEqual(list(chain(g(s))), list(g(s))) self.assertEqual(list(chain(g(s), g(s))), list(g(s))+list(g(s))) - self.assertRaises(TypeError, chain, X(s)) + self.assertRaises(TypeError, list, chain(X(s))) self.assertRaises(TypeError, list, chain(N(s))) self.assertRaises(ZeroDivisionError, list, chain(E(s))) Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Thu Feb 28 23:30:42 2008 @@ -1601,92 +1601,92 @@ typedef struct { PyObject_HEAD - Py_ssize_t tuplesize; - Py_ssize_t iternum; /* which iterator is active */ - PyObject *ittuple; /* tuple of iterators */ + PyObject *source; /* Iterator over input iterables */ + PyObject *active; /* Currently running input iterator */ } chainobject; static PyTypeObject chain_type; -static PyObject * -chain_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +static PyObject * +chain_new_internal(PyTypeObject *type, PyObject *source) { chainobject *lz; - Py_ssize_t tuplesize = PySequence_Length(args); - Py_ssize_t i; - PyObject *ittuple; - - if (type == &chain_type && !_PyArg_NoKeywords("chain()", kwds)) - return NULL; - - /* obtain iterators */ - assert(PyTuple_Check(args)); - ittuple = PyTuple_New(tuplesize); - if (ittuple == NULL) - return NULL; - for (i=0; i < tuplesize; ++i) { - PyObject *item = PyTuple_GET_ITEM(args, i); - PyObject *it = PyObject_GetIter(item); - if (it == NULL) { - if (PyErr_ExceptionMatches(PyExc_TypeError)) - PyErr_Format(PyExc_TypeError, - "chain argument #%zd must support iteration", - i+1); - Py_DECREF(ittuple); - return NULL; - } - PyTuple_SET_ITEM(ittuple, i, it); - } - /* create chainobject structure */ lz = (chainobject *)type->tp_alloc(type, 0); if (lz == NULL) { - Py_DECREF(ittuple); + Py_DECREF(source); return NULL; } + + lz->source = source; + lz->active = NULL; + return (PyObject *)lz; +} - lz->ittuple = ittuple; - lz->iternum = 0; - lz->tuplesize = tuplesize; +static PyObject * +chain_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *source; - return (PyObject *)lz; + if (type == &chain_type && !_PyArg_NoKeywords("chain()", kwds)) + return NULL; + + source = PyObject_GetIter(args); + if (source == NULL) + return NULL; + + return chain_new_internal(type, source); } static void chain_dealloc(chainobject *lz) { PyObject_GC_UnTrack(lz); - Py_XDECREF(lz->ittuple); + Py_XDECREF(lz->active); + Py_XDECREF(lz->source); Py_TYPE(lz)->tp_free(lz); } static int chain_traverse(chainobject *lz, visitproc visit, void *arg) { - Py_VISIT(lz->ittuple); + Py_VISIT(lz->source); + Py_VISIT(lz->active); return 0; } static PyObject * chain_next(chainobject *lz) { - PyObject *it; PyObject *item; - while (lz->iternum < lz->tuplesize) { - it = PyTuple_GET_ITEM(lz->ittuple, lz->iternum); - item = PyIter_Next(it); - if (item != NULL) - return item; - if (PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_StopIteration)) - PyErr_Clear(); - else - return NULL; + if (lz->source == NULL) + return NULL; /* already stopped */ + + if (lz->active == NULL) { + PyObject *iterable = PyIter_Next(lz->source); + if (iterable == NULL) { + Py_CLEAR(lz->source); + return NULL; /* no more input sources */ + } + lz->active = PyObject_GetIter(iterable); + if (lz->active == NULL) { + Py_DECREF(iterable); + Py_CLEAR(lz->source); + return NULL; /* input not iterable */ } - lz->iternum++; } - return NULL; + item = PyIter_Next(lz->active); + if (item != NULL) + return item; + if (PyErr_Occurred()) { + if (PyErr_ExceptionMatches(PyExc_StopIteration)) + PyErr_Clear(); + else + return NULL; /* input raised an exception */ + } + Py_CLEAR(lz->active); + return chain_next(lz); /* recurse and use next active */ } PyDoc_STRVAR(chain_doc, From python-checkins at python.org Thu Feb 28 23:46:41 2008 From: python-checkins at python.org (raymond.hettinger) Date: Thu, 28 Feb 2008 23:46:41 +0100 (CET) Subject: [Python-checkins] r61119 - in python/trunk: Lib/test/test_itertools.py Misc/NEWS Modules/itertoolsmodule.c Message-ID: <20080228224641.E1AFD1E401E@bag.python.org> Author: raymond.hettinger Date: Thu Feb 28 23:46:41 2008 New Revision: 61119 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Misc/NEWS python/trunk/Modules/itertoolsmodule.c Log: Add alternate constructor for itertools.chain(). Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Thu Feb 28 23:46:41 2008 @@ -52,6 +52,13 @@ self.assertEqual(take(4, chain('abc', 'def')), list('abcd')) self.assertRaises(TypeError, list,chain(2, 3)) + def test_chain_from_iterable(self): + self.assertEqual(list(chain.from_iterable(['abc', 'def'])), list('abcdef')) + self.assertEqual(list(chain.from_iterable(['abc'])), list('abc')) + self.assertEqual(list(chain.from_iterable([''])), []) + self.assertEqual(take(4, chain.from_iterable(['abc', 'def'])), list('abcd')) + self.assertRaises(TypeError, list, chain.from_iterable([2, 3])) + def test_combinations(self): self.assertRaises(TypeError, combinations, 'abc') # missing r argument self.assertRaises(TypeError, combinations, 'abc', 2, 1) # too many arguments Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Feb 28 23:46:41 2008 @@ -1247,6 +1247,8 @@ - itertools.starmap() now accepts any iterable input. Previously, it required the function inputs to be tuples. +- itertools.chain() now has an alterate constructor, chain.from_iterable(). + - Issue #1646: Make socket support TIPC. The socket module now has support for TIPC under Linux, see http://tipc.sf.net/ for more information. Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Thu Feb 28 23:46:41 2008 @@ -1638,6 +1638,18 @@ return chain_new_internal(type, source); } +static PyObject * +chain_new_from_iterable(PyTypeObject *type, PyObject *arg) +{ + PyObject *source; + + source = PyObject_GetIter(arg); + if (source == NULL) + return NULL; + + return chain_new_internal(type, source); +} + static void chain_dealloc(chainobject *lz) { @@ -1696,6 +1708,18 @@ first iterable until it is exhausted, then elements from the next\n\ iterable, until all of the iterables are exhausted."); +PyDoc_STRVAR(chain_from_iterable_doc, +"chain.from_iterable(iterable) --> chain object\n\ +\n\ +Alternate chain() contructor taking a single iterable argument\n\ +that evaluates lazily."); + +static PyMethodDef chain_methods[] = { + {"from_iterable", (PyCFunction) chain_new_from_iterable, METH_O | METH_CLASS, + chain_from_iterable_doc}, + {NULL, NULL} /* sentinel */ +}; + static PyTypeObject chain_type = { PyVarObject_HEAD_INIT(NULL, 0) "itertools.chain", /* tp_name */ @@ -1726,7 +1750,7 @@ 0, /* tp_weaklistoffset */ PyObject_SelfIter, /* tp_iter */ (iternextfunc)chain_next, /* tp_iternext */ - 0, /* tp_methods */ + chain_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ From buildbot at python.org Fri Feb 29 00:21:21 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 23:21:21 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 3.0 Message-ID: <20080228232121.9C4D61E4029@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%203.0/builds/569 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 00:32:41 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 23:32:41 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20080228233242.299091E4025@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: nelson-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: andrew.kuchling,christian.heimes,jeffrey.yasskin,martin.v.loewis,raymond.hettinger BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 00:35:31 2008 From: buildbot at python.org (buildbot at python.org) Date: Thu, 28 Feb 2008 23:35:31 +0000 Subject: [Python-checkins] buildbot failure in x86 XP 3.0 Message-ID: <20080228233531.9A2911E4011@bag.python.org> The Buildbot has detected a new failure of x86 XP 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%203.0/builds/0 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: nelson-windows Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes,martin.v.loewis BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 01:04:57 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 00:04:57 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080229000457.90DE51E4028@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2617 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,martin.v.loewis,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: 2 tests failed: test_asynchat test_smtplib sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 02:42:25 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 01:42:25 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080229014225.47DF31E401F@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/666 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: christian.heimes,martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 576, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 318, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 301, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 2 tests failed: test_smtplib test_threading sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 02:58:53 2008 From: python-checkins at python.org (brett.cannon) Date: Fri, 29 Feb 2008 02:58:53 +0100 (CET) Subject: [Python-checkins] r61122 - peps/trunk/pep-3108.txt Message-ID: <20080229015853.5E13A1E4013@bag.python.org> Author: brett.cannon Date: Fri Feb 29 02:58:53 2008 New Revision: 61122 Modified: peps/trunk/pep-3108.txt Log: Add a note that removed modules can be made available outside of Python if so desired. Modified: peps/trunk/pep-3108.txt ============================================================================== --- peps/trunk/pep-3108.txt (original) +++ peps/trunk/pep-3108.txt Fri Feb 29 02:58:53 2008 @@ -68,6 +68,14 @@ all the changes to 2.6, merge the changes into the 3k branch, then perform the procedure above. This will avoid some merge conflicts. +In certain cases, a removed module might be used by enough people +that it is worth making the code available on PyPI_. In those cases +the code will be ported to 3.0, moved outside of Python 3.0's trunk, +and then put up on PyPI. In such cases the code is not expected to be +maintained beyond the discretion of any core developer. + +.. _PyPI: http://pypi.python.org/ + Previously deprecated --------------------- From python-checkins at python.org Fri Feb 29 03:16:37 2008 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Feb 2008 03:16:37 +0100 (CET) Subject: [Python-checkins] r61123 - in python/trunk: Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS Message-ID: <20080229021637.7AFAD1E4013@bag.python.org> Author: mark.dickinson Date: Fri Feb 29 03:16:37 2008 New Revision: 61123 Modified: python/trunk/Lib/decimal.py python/trunk/Lib/test/test_decimal.py python/trunk/Misc/NEWS Log: Add __format__ method to Decimal, to support PEP 3101 Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Fri Feb 29 03:16:37 2008 @@ -2380,6 +2380,29 @@ coeff = str(int(coeff)+1) return _dec_from_triple(self._sign, coeff, exp) + def _round(self, places, rounding): + """Round a nonzero, nonspecial Decimal to a fixed number of + significant figures, using the given rounding mode. + + Infinities, NaNs and zeros are returned unaltered. + + This operation is quiet: it raises no flags, and uses no + information from the context. + + """ + if places <= 0: + raise ValueError("argument should be at least 1 in _round") + if self._is_special or not self: + return Decimal(self) + ans = self._rescale(self.adjusted()+1-places, rounding) + # it can happen that the rescale alters the adjusted exponent; + # for example when rounding 99.97 to 3 significant figures. + # When this happens we end up with an extra 0 at the end of + # the number; a second rescale fixes this. + if ans.adjusted() != self.adjusted(): + ans = ans._rescale(ans.adjusted()+1-places, rounding) + return ans + def to_integral_exact(self, rounding=None, context=None): """Rounds to a nearby integer. @@ -3431,6 +3454,95 @@ return self # My components are also immutable return self.__class__(str(self)) + # PEP 3101 support. See also _parse_format_specifier and _format_align + def __format__(self, specifier, context=None): + """Format a Decimal class according to the given specifier. + + The specifier should be a standard format specifier, with the + form described in PEP 3101. Formatting types 'e', 'E', 'f', + 'F', 'g', 'G', and '%' are supported. If the formatting type + is omitted it defaults to 'g' or 'G', depending on the value + of context.capitals. + + At this time the 'n' format specifier type (which is supposed + to use the current locale) is not supported. + """ + + # Note: PEP 3101 says that if the type is not present then + # there should be at least one digit after the decimal point. + # We take the liberty of ignoring this requirement for + # Decimal---it's presumably there to make sure that + # format(float, '') behaves similarly to str(float). + if context is None: + context = getcontext() + + spec = _parse_format_specifier(specifier) + + # special values don't care about the type or precision... + if self._is_special: + return _format_align(str(self), spec) + + # a type of None defaults to 'g' or 'G', depending on context + # if type is '%', adjust exponent of self accordingly + if spec['type'] is None: + spec['type'] = ['g', 'G'][context.capitals] + elif spec['type'] == '%': + self = _dec_from_triple(self._sign, self._int, self._exp+2) + + # round if necessary, taking rounding mode from the context + rounding = context.rounding + precision = spec['precision'] + if precision is not None: + if spec['type'] in 'eE': + self = self._round(precision+1, rounding) + elif spec['type'] in 'gG': + if len(self._int) > precision: + self = self._round(precision, rounding) + elif spec['type'] in 'fF%': + self = self._rescale(-precision, rounding) + # special case: zeros with a positive exponent can't be + # represented in fixed point; rescale them to 0e0. + elif not self and self._exp > 0 and spec['type'] in 'fF%': + self = self._rescale(0, rounding) + + # figure out placement of the decimal point + leftdigits = self._exp + len(self._int) + if spec['type'] in 'fF%': + dotplace = leftdigits + elif spec['type'] in 'eE': + if not self and precision is not None: + dotplace = 1 - precision + else: + dotplace = 1 + elif spec['type'] in 'gG': + if self._exp <= 0 and leftdigits > -6: + dotplace = leftdigits + else: + dotplace = 1 + + # figure out main part of numeric string... + if dotplace <= 0: + num = '0.' + '0'*(-dotplace) + self._int + elif dotplace >= len(self._int): + # make sure we're not padding a '0' with extra zeros on the right + assert dotplace==len(self._int) or self._int != '0' + num = self._int + '0'*(dotplace-len(self._int)) + else: + num = self._int[:dotplace] + '.' + self._int[dotplace:] + + # ...then the trailing exponent, or trailing '%' + if leftdigits != dotplace or spec['type'] in 'eE': + echar = {'E': 'E', 'e': 'e', 'G': 'E', 'g': 'e'}[spec['type']] + num = num + "{0}{1:+}".format(echar, leftdigits-dotplace) + elif spec['type'] == '%': + num = num + '%' + + # add sign + if self._sign == 1: + num = '-' + num + return _format_align(num, spec) + + def _dec_from_triple(sign, coefficient, exponent, special=False): """Create a decimal instance directly, without any validation, normalization (e.g. removal of leading zeros) or argument @@ -5250,8 +5362,136 @@ _all_zeros = re.compile('0*$').match _exact_half = re.compile('50*$').match + +##### PEP3101 support functions ############################################## +# The functions parse_format_specifier and format_align have little to do +# with the Decimal class, and could potentially be reused for other pure +# Python numeric classes that want to implement __format__ +# +# A format specifier for Decimal looks like: +# +# [[fill]align][sign][0][minimumwidth][.precision][type] +# + +_parse_format_specifier_regex = re.compile(r"""\A +(?: + (?P.)? + (?P[<>=^]) +)? +(?P[-+ ])? +(?P0)? +(?P(?!0)\d+)? +(?:\.(?P0|(?!0)\d+))? +(?P[eEfFgG%])? +\Z +""", re.VERBOSE) + del re +def _parse_format_specifier(format_spec): + """Parse and validate a format specifier. + + Turns a standard numeric format specifier into a dict, with the + following entries: + + fill: fill character to pad field to minimum width + align: alignment type, either '<', '>', '=' or '^' + sign: either '+', '-' or ' ' + minimumwidth: nonnegative integer giving minimum width + precision: nonnegative integer giving precision, or None + type: one of the characters 'eEfFgG%', or None + unicode: either True or False (always True for Python 3.x) + + """ + m = _parse_format_specifier_regex.match(format_spec) + if m is None: + raise ValueError("Invalid format specifier: " + format_spec) + + # get the dictionary + format_dict = m.groupdict() + + # defaults for fill and alignment + fill = format_dict['fill'] + align = format_dict['align'] + if format_dict.pop('zeropad') is not None: + # in the face of conflict, refuse the temptation to guess + if fill is not None and fill != '0': + raise ValueError("Fill character conflicts with '0'" + " in format specifier: " + format_spec) + if align is not None and align != '=': + raise ValueError("Alignment conflicts with '0' in " + "format specifier: " + format_spec) + fill = '0' + align = '=' + format_dict['fill'] = fill or ' ' + format_dict['align'] = align or '<' + + if format_dict['sign'] is None: + format_dict['sign'] = '-' + + # turn minimumwidth and precision entries into integers. + # minimumwidth defaults to 0; precision remains None if not given + format_dict['minimumwidth'] = int(format_dict['minimumwidth'] or '0') + if format_dict['precision'] is not None: + format_dict['precision'] = int(format_dict['precision']) + + # if format type is 'g' or 'G' then a precision of 0 makes little + # sense; convert it to 1. Same if format type is unspecified. + if format_dict['precision'] == 0: + if format_dict['type'] in 'gG' or format_dict['type'] is None: + format_dict['precision'] = 1 + + # record whether return type should be str or unicode + format_dict['unicode'] = isinstance(format_spec, unicode) + + return format_dict + +def _format_align(body, spec_dict): + """Given an unpadded, non-aligned numeric string, add padding and + aligment to conform with the given format specifier dictionary (as + output from parse_format_specifier). + + It's assumed that if body is negative then it starts with '-'. + Any leading sign ('-' or '+') is stripped from the body before + applying the alignment and padding rules, and replaced in the + appropriate position. + + """ + # figure out the sign; we only examine the first character, so if + # body has leading whitespace the results may be surprising. + if len(body) > 0 and body[0] in '-+': + sign = body[0] + body = body[1:] + else: + sign = '' + + if sign != '-': + if spec_dict['sign'] in ' +': + sign = spec_dict['sign'] + else: + sign = '' + + # how much extra space do we have to play with? + minimumwidth = spec_dict['minimumwidth'] + fill = spec_dict['fill'] + padding = fill*(max(minimumwidth - (len(sign+body)), 0)) + + align = spec_dict['align'] + if align == '<': + result = padding + sign + body + elif align == '>': + result = sign + body + padding + elif align == '=': + result = sign + padding + body + else: #align == '^' + half = len(padding)//2 + result = padding[:half] + sign + body + padding[half:] + + # make sure that result is unicode if necessary + if spec_dict['unicode']: + result = unicode(result) + + return result ##### Useful Constants (internal use only) ################################ Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Fri Feb 29 03:16:37 2008 @@ -615,6 +615,98 @@ self.assertEqual(eval('Decimal(10)' + sym + 'E()'), '10' + rop + 'str') +class DecimalFormatTest(unittest.TestCase): + '''Unit tests for the format function.''' + def test_formatting(self): + # triples giving a format, a Decimal, and the expected result + test_values = [ + ('e', '0E-15', '0e-15'), + ('e', '2.3E-15', '2.3e-15'), + ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros + ('e', '2.30000E-15', '2.30000e-15'), + ('e', '1.23456789123456789e40', '1.23456789123456789e+40'), + ('e', '1.5', '1.5e+0'), + ('e', '0.15', '1.5e-1'), + ('e', '0.015', '1.5e-2'), + ('e', '0.0000000000015', '1.5e-12'), + ('e', '15.0', '1.50e+1'), + ('e', '-15', '-1.5e+1'), + ('e', '0', '0e+0'), + ('e', '0E1', '0e+1'), + ('e', '0.0', '0e-1'), + ('e', '0.00', '0e-2'), + ('.6e', '0E-15', '0.000000e-9'), + ('.6e', '0', '0.000000e+6'), + ('.6e', '9.999999', '9.999999e+0'), + ('.6e', '9.9999999', '1.000000e+1'), + ('.6e', '-1.23e5', '-1.230000e+5'), + ('.6e', '1.23456789e-3', '1.234568e-3'), + ('f', '0', '0'), + ('f', '0.0', '0.0'), + ('f', '0E-2', '0.00'), + ('f', '0.00E-8', '0.0000000000'), + ('f', '0E1', '0'), # loses exponent information + ('f', '3.2E1', '32'), + ('f', '3.2E2', '320'), + ('f', '3.20E2', '320'), + ('f', '3.200E2', '320.0'), + ('f', '3.2E-6', '0.0000032'), + ('.6f', '0E-15', '0.000000'), # all zeros treated equally + ('.6f', '0E1', '0.000000'), + ('.6f', '0', '0.000000'), + ('.0f', '0', '0'), # no decimal point + ('.0f', '0e-2', '0'), + ('.0f', '3.14159265', '3'), + ('.1f', '3.14159265', '3.1'), + ('.4f', '3.14159265', '3.1416'), + ('.6f', '3.14159265', '3.141593'), + ('.7f', '3.14159265', '3.1415926'), # round-half-even! + ('.8f', '3.14159265', '3.14159265'), + ('.9f', '3.14159265', '3.141592650'), + + ('g', '0', '0'), + ('g', '0.0', '0.0'), + ('g', '0E1', '0e+1'), + ('G', '0E1', '0E+1'), + ('g', '0E-5', '0.00000'), + ('g', '0E-6', '0.000000'), + ('g', '0E-7', '0e-7'), + ('g', '-0E2', '-0e+2'), + ('.0g', '3.14159265', '3'), # 0 sig fig -> 1 sig fig + ('.1g', '3.14159265', '3'), + ('.2g', '3.14159265', '3.1'), + ('.5g', '3.14159265', '3.1416'), + ('.7g', '3.14159265', '3.141593'), + ('.8g', '3.14159265', '3.1415926'), # round-half-even! + ('.9g', '3.14159265', '3.14159265'), + ('.10g', '3.14159265', '3.14159265'), # don't pad + + ('%', '0E1', '0%'), + ('%', '0E0', '0%'), + ('%', '0E-1', '0%'), + ('%', '0E-2', '0%'), + ('%', '0E-3', '0.0%'), + ('%', '0E-4', '0.00%'), + + ('.3%', '0', '0.000%'), # all zeros treated equally + ('.3%', '0E10', '0.000%'), + ('.3%', '0E-10', '0.000%'), + ('.3%', '2.34', '234.000%'), + ('.3%', '1.234567', '123.457%'), + ('.0%', '1.23', '123%'), + + ('e', 'NaN', 'NaN'), + ('f', '-NaN123', '-NaN123'), + ('+g', 'NaN456', '+NaN456'), + ('.3e', 'Inf', 'Infinity'), + ('.16f', '-Inf', '-Infinity'), + ('.0g', '-sNaN', '-sNaN'), + + ('', '1.00', '1.00'), + ] + for fmt, d, result in test_values: + self.assertEqual(format(Decimal(d), fmt), result) + class DecimalArithmeticOperatorsTest(unittest.TestCase): '''Unit tests for all arithmetic operators, binary and unary.''' @@ -1363,6 +1455,7 @@ DecimalExplicitConstructionTest, DecimalImplicitConstructionTest, DecimalArithmeticOperatorsTest, + DecimalFormatTest, DecimalUseOfContextTest, DecimalUsabilityTest, DecimalPythonAPItests, Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Feb 29 03:16:37 2008 @@ -441,6 +441,8 @@ Library ------- +- Add a __format__ method to Decimal, to support PEP 3101. + - Add a timing parameter when using trace.Trace to print out timestamps. - #1627: httplib now ignores negative Content-Length headers. From python-checkins at python.org Fri Feb 29 03:21:48 2008 From: python-checkins at python.org (raymond.hettinger) Date: Fri, 29 Feb 2008 03:21:48 +0100 (CET) Subject: [Python-checkins] r61124 - in python/trunk: Lib/test/test_itertools.py Modules/itertoolsmodule.c Message-ID: <20080229022148.B1CF01E4013@bag.python.org> Author: raymond.hettinger Date: Fri Feb 29 03:21:48 2008 New Revision: 61124 Modified: python/trunk/Lib/test/test_itertools.py python/trunk/Modules/itertoolsmodule.c Log: Handle the repeat keyword argument for itertools.product(). Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Fri Feb 29 03:21:48 2008 @@ -296,6 +296,9 @@ ([range(2), range(3), range(0)], []), # last iterable with zero length ]: self.assertEqual(list(product(*args)), result) + for r in range(4): + self.assertEqual(list(product(*(args*r))), + list(product(*args, **dict(repeat=r)))) self.assertEqual(len(list(product(*[range(7)]*6))), 7**6) self.assertRaises(TypeError, product, range(6), None) argtypes = ['', 'abc', '', xrange(0), xrange(4), dict(a=1, b=2, c=3), Modified: python/trunk/Modules/itertoolsmodule.c ============================================================================== --- python/trunk/Modules/itertoolsmodule.c (original) +++ python/trunk/Modules/itertoolsmodule.c Fri Feb 29 03:21:48 2008 @@ -1782,17 +1782,32 @@ product_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { productobject *lz; - Py_ssize_t npools; + Py_ssize_t nargs, npools, repeat=1; PyObject *pools = NULL; Py_ssize_t *maxvec = NULL; Py_ssize_t *indices = NULL; Py_ssize_t i; - if (type == &product_type && !_PyArg_NoKeywords("product()", kwds)) - return NULL; + if (kwds != NULL) { + char *kwlist[] = {"repeat", 0}; + PyObject *tmpargs = PyTuple_New(0); + if (tmpargs == NULL) + return NULL; + if (!PyArg_ParseTupleAndKeywords(tmpargs, kwds, "|n:product", kwlist, &repeat)) { + Py_DECREF(tmpargs); + return NULL; + } + Py_DECREF(tmpargs); + if (repeat < 0) { + PyErr_SetString(PyExc_ValueError, + "repeat argument cannot be negative"); + return NULL; + } + } assert(PyTuple_Check(args)); - npools = PyTuple_GET_SIZE(args); + nargs = (repeat == 0) ? 0 : PyTuple_GET_SIZE(args); + npools = nargs * repeat; maxvec = PyMem_Malloc(npools * sizeof(Py_ssize_t)); indices = PyMem_Malloc(npools * sizeof(Py_ssize_t)); @@ -1805,7 +1820,7 @@ if (pools == NULL) goto error; - for (i=0; i < npools; ++i) { + for (i=0; i < nargs ; ++i) { PyObject *item = PyTuple_GET_ITEM(args, i); PyObject *pool = PySequence_Tuple(item); if (pool == NULL) @@ -1815,6 +1830,13 @@ maxvec[i] = PyTuple_GET_SIZE(pool); indices[i] = 0; } + for ( ; i < npools; ++i) { + PyObject *pool = PyTuple_GET_ITEM(pools, i - nargs); + Py_INCREF(pool); + PyTuple_SET_ITEM(pools, i, pool); + maxvec[i] = maxvec[i - nargs]; + indices[i] = 0; + } /* create productobject structure */ lz = (productobject *)type->tp_alloc(type, 0); From python at rcn.com Fri Feb 29 03:36:35 2008 From: python at rcn.com (Raymond Hettinger) Date: Thu, 28 Feb 2008 21:36:35 -0500 (EST) Subject: [Python-checkins] r61123 - in python/trunk: Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS Message-ID: <20080228213635.AHU23029@ms19.lnh.mail.rcn.net> > Add __format__ method to Decimal, to support PEP 3101 Wow, the decimal module has grown to 5500 lines. Raymond From dickinsm at gmail.com Fri Feb 29 03:43:10 2008 From: dickinsm at gmail.com (Mark Dickinson) Date: Fri, 29 Feb 2008 02:43:10 +0000 (UTC) Subject: [Python-checkins] =?utf-8?q?r61123_-_in_python/trunk=3A_Lib/decim?= =?utf-8?q?al=2Epy=09Lib/test/test=5Fdecimal=2Epy_Misc/NEWS?= References: <20080228213635.AHU23029@ms19.lnh.mail.rcn.net> Message-ID: Raymond Hettinger rcn.com> writes: > > Wow, the decimal module has grown to 5500 lines. > > Raymond > It would be really great if the code for parsing the format specifier and padding and aligning the formatted value could be put elsewhere in the std. lib.; it's really not decimal specific, and it could be potentially useful to other modules. Any suggestions for places to move it to? Mark From buildbot at python.org Fri Feb 29 03:46:37 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 02:46:37 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080229024637.5CEAF1E4015@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2941 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.dickinson BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 04:29:17 2008 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Feb 2008 04:29:17 +0100 (CET) Subject: [Python-checkins] r61125 - python/trunk/Lib/decimal.py Message-ID: <20080229032917.7026B1E4015@bag.python.org> Author: mark.dickinson Date: Fri Feb 29 04:29:17 2008 New Revision: 61125 Modified: python/trunk/Lib/decimal.py Log: Fix docstring typo. Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Fri Feb 29 04:29:17 2008 @@ -3456,7 +3456,7 @@ # PEP 3101 support. See also _parse_format_specifier and _format_align def __format__(self, specifier, context=None): - """Format a Decimal class according to the given specifier. + """Format a Decimal instance according to the given specifier. The specifier should be a standard format specifier, with the form described in PEP 3101. Formatting types 'e', 'E', 'f', From buildbot at python.org Fri Feb 29 07:16:55 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 06:16:55 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080229061655.DB4841E4015@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2620 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.dickinson BUILD FAILED: failed test Excerpt from the test logfile: 3 tests failed: test_asynchat test_smtplib test_socket ====================================================================== FAIL: testInterruptedTimeout (test.test_socket.TCPTimeoutTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_socket.py", line 994, in testInterruptedTimeout self.fail("got Alarm in wrong place") AssertionError: got Alarm in wrong place sincerely, -The Buildbot From nnorwitz at gmail.com Fri Feb 29 07:46:09 2008 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 28 Feb 2008 22:46:09 -0800 Subject: [Python-checkins] r61106 - in python/trunk/Lib: SocketServer.py test/test_socketserver.py In-Reply-To: <20080228180316.3AF6E1E400B@bag.python.org> References: <20080228180316.3AF6E1E400B@bag.python.org> Message-ID: On Thu, Feb 28, 2008 at 10:03 AM, jeffrey.yasskin wrote: > Author: jeffrey.yasskin > Date: Thu Feb 28 19:03:15 2008 > New Revision: 61106 > > Modified: > python/trunk/Lib/SocketServer.py > python/trunk/Lib/test/test_socketserver.py > Log: > Prevent SocketServer.ForkingMixIn from waiting on child processes that it > didn't create, in most cases. When there are max_children handlers running, it > will still wait for any child process, not just handler processes. > > > Modified: python/trunk/Lib/SocketServer.py > ============================================================================== > --- python/trunk/Lib/SocketServer.py (original) > +++ python/trunk/Lib/SocketServer.py Thu Feb 28 19:03:15 2008 > @@ -440,18 +440,30 @@ > > def collect_children(self): > """Internal routine to wait for children that have exited.""" > - while self.active_children: > - if len(self.active_children) < self.max_children: > - options = os.WNOHANG > - else: > - # If the maximum number of children are already > - # running, block while waiting for a child to exit > - options = 0 > + if self.active_children is None: return > + while len(self.active_children) >= self.max_children: > + # XXX: This will wait for any child process, not just ones > + # spawned by this library. This could confuse other > + # libraries that expect to be able to wait for their own > + # children. > try: > - pid, status = os.waitpid(0, options) > + pid, status = os.waitpid(0, options=0) > except os.error: > pid = None > - if not pid: break > + if pid not in self.active_children: continue > + self.active_children.remove(pid) > + > + # XXX: This loop runs more system calls than it ought > + # to. There should be a way to put the active_children into a > + # process group and then use os.waitpid(-pgid) to wait for any > + # of that set, but I couldn't find a way to allocate pgids > + # that couldn't collide. > + for child in self.active_children: > + try: > + pid, status = os.waitpid(child, os.WNOHANG) > + except os.error: > + pid = None > + if not pid: continue > try: > self.active_children.remove(pid) > except ValueError, e: The handling of the exception when removing from active_children seems backwards to me. In the first loop where we wait on any child, that can return a pid that we might not be expecting. ISTM there should be a try/except around that one. It probably should swallow the error. I suppose a nicer API would keep the pid and status and make it available (even though no one will ever check it). In the second loop (the for loop), we only wait on children we know should be in the list. If they aren't in the list, this code has a bug. I think the try/except was added for additional debugging. Hopefully the problem has been fixed, so the extra debugging should no longer be necessary. n From buildbot at python.org Fri Feb 29 07:56:02 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 06:56:02 +0000 Subject: [Python-checkins] buildbot failure in x86 FreeBSD trunk Message-ID: <20080229065602.D44F51E401E@bag.python.org> The Buildbot has detected a new failure of x86 FreeBSD trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20FreeBSD%20trunk/builds/668 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: bolen-freebsd Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: mark.dickinson,raymond.hettinger BUILD FAILED: failed test Excerpt from the test logfile: Traceback (most recent call last): File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 227, in handle_request self.process_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 268, in process_request self.finish_request(request, client_address) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 281, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/SocketServer.py", line 576, in __init__ self.handle() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 318, in handle self.handle_one_request() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/BaseHTTPServer.py", line 301, in handle_one_request self.raw_requestline = self.rfile.readline() File "/usr/home/db3l/buildarea/trunk.bolen-freebsd/build/Lib/socket.py", line 369, in readline data = self._sock.recv(self._rbufsize) error: [Errno 35] Resource temporarily unavailable 1 test failed: test_xmlrpc sincerely, -The Buildbot From jyasskin at gmail.com Fri Feb 29 07:57:50 2008 From: jyasskin at gmail.com (Jeffrey Yasskin) Date: Thu, 28 Feb 2008 22:57:50 -0800 Subject: [Python-checkins] r61106 - in python/trunk/Lib: SocketServer.py test/test_socketserver.py In-Reply-To: References: <20080228180316.3AF6E1E400B@bag.python.org> Message-ID: <5d44f72f0802282257y212c23d5o1f433b9f15a0892d@mail.gmail.com> On Thu, Feb 28, 2008 at 10:46 PM, Neal Norwitz wrote: > > On Thu, Feb 28, 2008 at 10:03 AM, jeffrey.yasskin > wrote: > > Author: jeffrey.yasskin > > Date: Thu Feb 28 19:03:15 2008 > > New Revision: 61106 > > > > Modified: > > python/trunk/Lib/SocketServer.py > > python/trunk/Lib/test/test_socketserver.py > > Log: > > Prevent SocketServer.ForkingMixIn from waiting on child processes that it > > didn't create, in most cases. When there are max_children handlers running, it > > will still wait for any child process, not just handler processes. > > > > > > Modified: python/trunk/Lib/SocketServer.py > > ============================================================================== > > --- python/trunk/Lib/SocketServer.py (original) > > +++ python/trunk/Lib/SocketServer.py Thu Feb 28 19:03:15 2008 > > @@ -440,18 +440,30 @@ > > > > def collect_children(self): > > """Internal routine to wait for children that have exited.""" > > - while self.active_children: > > - if len(self.active_children) < self.max_children: > > - options = os.WNOHANG > > - else: > > - # If the maximum number of children are already > > - # running, block while waiting for a child to exit > > - options = 0 > > + if self.active_children is None: return > > + while len(self.active_children) >= self.max_children: > > + # XXX: This will wait for any child process, not just ones > > + # spawned by this library. This could confuse other > > + # libraries that expect to be able to wait for their own > > + # children. > > try: > > - pid, status = os.waitpid(0, options) > > + pid, status = os.waitpid(0, options=0) > > except os.error: > > pid = None > > - if not pid: break > > + if pid not in self.active_children: continue > > + self.active_children.remove(pid) > > + > > + # XXX: This loop runs more system calls than it ought > > + # to. There should be a way to put the active_children into a > > + # process group and then use os.waitpid(-pgid) to wait for any > > + # of that set, but I couldn't find a way to allocate pgids > > + # that couldn't collide. > > + for child in self.active_children: > > + try: > > + pid, status = os.waitpid(child, os.WNOHANG) > > + except os.error: > > + pid = None > > + if not pid: continue > > try: > > self.active_children.remove(pid) > > except ValueError, e: > > The handling of the exception when removing from active_children seems > backwards to me. In the first loop where we wait on any child, that > can return a pid that we might not be expecting. ISTM there should be > a try/except around that one. It probably should swallow the error. > I suppose a nicer API would keep the pid and status and make it > available (even though no one will ever check it). That's what the "if pid not in self.active_children: continue" is for. Once that passes, if there's no race, the pid can definitely be removed with no exception. It's an expected situation, so using the exception to ignore it doesn't seem appropriate. > In the second loop (the for loop), we only wait on children we know > should be in the list. If they aren't in the list, this code has a > bug. I think the try/except was added for additional debugging. > Hopefully the problem has been fixed, so the extra debugging should no > longer be necessary. Perhaps the ValueError thrown by list.remove() should include that information. It'd be reasonable to remove this try/except anyway. -- Namast?, Jeffrey Yasskin From ncoghlan at gmail.com Fri Feb 29 13:52:00 2008 From: ncoghlan at gmail.com (Nick Coghlan) Date: Fri, 29 Feb 2008 22:52:00 +1000 Subject: [Python-checkins] r61100 - python/trunk/Lib/threading.py In-Reply-To: <20080228060920.3EE801E4002@bag.python.org> References: <20080228060920.3EE801E4002@bag.python.org> Message-ID: <47C7FFF0.3090808@gmail.com> jeffrey.yasskin wrote: > To be fair, the 10ms isn't CPU time, and other threads including the spawned > one get to run during it. There are also some slightly more complicated ways to > get back the .4us in isAlive() if we want. Would one of those 'slightly more complicated' ways be to keep the old boolean flag around and set it to true before signalling the new event object? Then __repr__ and isAlive could just continue to query the boolean flag, with the event used only in thread.start() Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org From ncoghlan at gmail.com Fri Feb 29 14:05:07 2008 From: ncoghlan at gmail.com (Nick Coghlan) Date: Fri, 29 Feb 2008 23:05:07 +1000 Subject: [Python-checkins] r61123 - in python/trunk: Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS In-Reply-To: References: <20080228213635.AHU23029@ms19.lnh.mail.rcn.net> Message-ID: <47C80303.8040708@gmail.com> Mark Dickinson wrote: > Raymond Hettinger rcn.com> writes: > >> Wow, the decimal module has grown to 5500 lines. >> >> Raymond >> > > It would be really great if the code for parsing the > format specifier and padding and aligning the > formatted value could be put elsewhere in the > std. lib.; it's really not decimal specific, and > it could be potentially useful to other modules. > > Any suggestions for places to move it to? As the parsing functions are specifically for numeric formatting support, the numbers module seems like a reasonable option to me. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org From lists at cheimes.de Fri Feb 29 14:29:21 2008 From: lists at cheimes.de (Christian Heimes) Date: Fri, 29 Feb 2008 14:29:21 +0100 Subject: [Python-checkins] r61100 - python/trunk/Lib/threading.py In-Reply-To: <47C7FFF0.3090808@gmail.com> References: <20080228060920.3EE801E4002@bag.python.org> <47C7FFF0.3090808@gmail.com> Message-ID: <47C808B1.6000702@cheimes.de> Nick Coghlan wrote: > Would one of those 'slightly more complicated' ways be to keep the old > boolean flag around and set it to true before signalling the new event > object? How about adding __nonzero__ to threading._Event? Christian From eric+python-dev at trueblade.com Fri Feb 29 14:26:10 2008 From: eric+python-dev at trueblade.com (Eric Smith) Date: Fri, 29 Feb 2008 08:26:10 -0500 Subject: [Python-checkins] r61123 - in python/trunk: Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS In-Reply-To: References: <20080228213635.AHU23029@ms19.lnh.mail.rcn.net> Message-ID: <47C807F2.8090503@trueblade.com> Mark Dickinson wrote: > Raymond Hettinger rcn.com> writes: > >> Wow, the decimal module has grown to 5500 lines. >> >> Raymond >> > > It would be really great if the code for parsing the > format specifier and padding and aligning the > formatted value could be put elsewhere in the > std. lib.; it's really not decimal specific, and > it could be potentially useful to other modules. Similarly, the C code to do the same thing could be made visible. Both of these could be used by non-builtin numeric types that want to implement __format__. > Any suggestions for places to move it to? No particular suggestion, but if we create (for example) a formatlib, we could also create a _formatlib to hold the C implementations, and we would harmonize the interfaces. Although the fact that it's needed by the builtin types float and int make it tough to put it all in a loadable module. From eric+python-dev at trueblade.com Fri Feb 29 17:04:35 2008 From: eric+python-dev at trueblade.com (Eric Smith) Date: Fri, 29 Feb 2008 11:04:35 -0500 Subject: [Python-checkins] r61123 - in python/trunk: Lib/decimal.py Lib/test/test_decimal.py Misc/NEWS In-Reply-To: <47C80303.8040708@gmail.com> References: <20080228213635.AHU23029@ms19.lnh.mail.rcn.net> <47C80303.8040708@gmail.com> Message-ID: <47C82D13.9050300@trueblade.com> Nick Coghlan wrote: > Mark Dickinson wrote: >> Raymond Hettinger rcn.com> writes: >> >>> Wow, the decimal module has grown to 5500 lines. >>> >>> Raymond >>> >> It would be really great if the code for parsing the >> format specifier and padding and aligning the >> formatted value could be put elsewhere in the >> std. lib.; it's really not decimal specific, and >> it could be potentially useful to other modules. >> >> Any suggestions for places to move it to? > > As the parsing functions are specifically for numeric formatting > support, the numbers module seems like a reasonable option to me. The int, long, and str formatters use the same parsing routine, then they each check that what they got was valid for their type. I went back and forth on this, but it ended up being less code if they shared the parsing routing. So, this doesn't apply exclusively to numbers, although I agree that will be the most common usage. Eric. From buildbot at python.org Fri Feb 29 17:06:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 16:06:35 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 3.0 Message-ID: <20080229160636.1912B1E4022@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 3.0. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%203.0/builds/672 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch branches/py3k] HEAD Blamelist: christian.heimes BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 17:59:21 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 17:59:21 +0100 (CET) Subject: [Python-checkins] r61128 - python/trunk/PCbuild/_hashlib.vcproj python/trunk/PCbuild/_ssl.vcproj python/trunk/PCbuild/pcbuild.sln Message-ID: <20080229165921.C944E1E4003@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 17:59:21 2008 New Revision: 61128 Added: python/trunk/PCbuild/_hashlib.vcproj - copied, changed from r61106, python/trunk/PCbuild/_ssl.vcproj Modified: python/trunk/PCbuild/_ssl.vcproj python/trunk/PCbuild/pcbuild.sln Log: Make _hashlib a separate project. Copied: python/trunk/PCbuild/_hashlib.vcproj (from r61106, python/trunk/PCbuild/_ssl.vcproj) ============================================================================== --- python/trunk/PCbuild/_ssl.vcproj (original) +++ python/trunk/PCbuild/_hashlib.vcproj Fri Feb 29 17:59:21 2008 @@ -2,9 +2,9 @@ @@ -27,7 +27,7 @@ > - - Modified: python/trunk/PCbuild/_ssl.vcproj ============================================================================== --- python/trunk/PCbuild/_ssl.vcproj (original) +++ python/trunk/PCbuild/_ssl.vcproj Fri Feb 29 17:59:21 2008 @@ -27,7 +27,7 @@ > - - Modified: python/trunk/PCbuild/pcbuild.sln ============================================================================== --- python/trunk/PCbuild/pcbuild.sln (original) +++ python/trunk/PCbuild/pcbuild.sln Fri Feb 29 17:59:21 2008 @@ -108,6 +108,8 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -464,6 +466,22 @@ {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|Win32 {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32 {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.ActiveCfg = Debug|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.Build.0 = Debug|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.ActiveCfg = Debug|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.Build.0 = Debug|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.ActiveCfg = Release|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From python-checkins at python.org Fri Feb 29 18:48:03 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 18:48:03 +0100 (CET) Subject: [Python-checkins] r61129 - external/db-4.4.20-vs9 Message-ID: <20080229174803.AC7E61E4003@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 18:48:03 2008 New Revision: 61129 Added: external/db-4.4.20-vs9/ - copied from r61128, external/db-4.4.20/ Log: Create copy for use with VS9 From python-checkins at python.org Fri Feb 29 18:55:57 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 18:55:57 +0100 (CET) Subject: [Python-checkins] r61130 - external/db-4.4.20-vs9/build_win32/Berkeley_DB.sln external/db-4.4.20-vs9/build_win32/build_all.vcproj external/db-4.4.20-vs9/build_win32/db_archive.vcproj external/db-4.4.20-vs9/build_win32/db_checkpoint.vcproj external/db-4.4.20-vs9/build_win32/db_deadlock.vcproj external/db-4.4.20-vs9/build_win32/db_dll.vcproj external/db-4.4.20-vs9/build_win32/db_dump.vcproj external/db-4.4.20-vs9/build_win32/db_hotbackup.vcproj external/db-4.4.20-vs9/build_win32/db_java.vcproj external/db-4.4.20-vs9/build_win32/db_load.vcproj external/db-4.4.20-vs9/build_win32/db_printlog.vcproj external/db-4.4.20-vs9/build_win32/db_recover.vcproj external/db-4.4.20-vs9/build_win32/db_small.vcproj external/db-4.4.20-vs9/build_win32/db_stat.vcproj external/db-4.4.20-vs9/build_win32/db_static.vcproj external/db-4.4.20-vs9/build_win32/db_tcl.vcproj external/db-4.4.20-vs9/build_win32/db_test.vcproj external/db-4.4.20-vs9/build_win32/db_upgrade.vcproj external/db-4.4.20-vs9/build_win32/db_verify.vcproj external/db-4.4.20-vs9/build_win32/ex_access.vcproj external/db-4.4.20-vs9/build_win32/ex_btrec.vcproj external/db-4.4.20-vs9/build_win32/ex_csvcode.vcproj external/db-4.4.20-vs9/build_win32/ex_csvload.vcproj external/db-4.4.20-vs9/build_win32/ex_csvquery.vcproj external/db-4.4.20-vs9/build_win32/ex_env.vcproj external/db-4.4.20-vs9/build_win32/ex_lock.vcproj external/db-4.4.20-vs9/build_win32/ex_mpool.vcproj external/db-4.4.20-vs9/build_win32/ex_repquote.vcproj external/db-4.4.20-vs9/build_win32/ex_sequence.vcproj external/db-4.4.20-vs9/build_win32/ex_tpcb.vcproj external/db-4.4.20-vs9/build_win32/ex_txnguide.vcproj external/db-4.4.20-vs9/build_win32/ex_txnguide_inmem.vcproj external/db-4.4.20-vs9/build_win32/example_database_load.vcproj external/db-4.4.20-vs9/build_win32/example_database_read.vcproj external/db-4.4.20-vs9/build_win32/excxx_access.vcproj external/db-4.4.20-vs9/build_win32/excxx_btrec.vcproj external/db-4.4.20-vs9/build_win32/excxx_env.vcproj external/db-4.4.20-vs9/build_win32/excxx_example_database_load.vcproj external/db-4.4.20-vs9/build_win32/excxx_example_database_read.vcproj external/db-4.4.20-vs9/build_win32/excxx_lock.vcproj external/db-4.4.20-vs9/build_win32/excxx_mpool.vcproj external/db-4.4.20-vs9/build_win32/excxx_sequence.vcproj external/db-4.4.20-vs9/build_win32/excxx_tpcb.vcproj external/db-4.4.20-vs9/build_win32/excxx_txnguide.vcproj external/db-4.4.20-vs9/build_win32/excxx_txnguide_inmem.vcproj Message-ID: <20080229175557.2FAA61E401D@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 18:55:50 2008 New Revision: 61130 Modified: external/db-4.4.20-vs9/build_win32/Berkeley_DB.sln external/db-4.4.20-vs9/build_win32/build_all.vcproj external/db-4.4.20-vs9/build_win32/db_archive.vcproj external/db-4.4.20-vs9/build_win32/db_checkpoint.vcproj external/db-4.4.20-vs9/build_win32/db_deadlock.vcproj external/db-4.4.20-vs9/build_win32/db_dll.vcproj external/db-4.4.20-vs9/build_win32/db_dump.vcproj external/db-4.4.20-vs9/build_win32/db_hotbackup.vcproj external/db-4.4.20-vs9/build_win32/db_java.vcproj external/db-4.4.20-vs9/build_win32/db_load.vcproj external/db-4.4.20-vs9/build_win32/db_printlog.vcproj external/db-4.4.20-vs9/build_win32/db_recover.vcproj external/db-4.4.20-vs9/build_win32/db_small.vcproj external/db-4.4.20-vs9/build_win32/db_stat.vcproj external/db-4.4.20-vs9/build_win32/db_static.vcproj external/db-4.4.20-vs9/build_win32/db_tcl.vcproj external/db-4.4.20-vs9/build_win32/db_test.vcproj external/db-4.4.20-vs9/build_win32/db_upgrade.vcproj external/db-4.4.20-vs9/build_win32/db_verify.vcproj external/db-4.4.20-vs9/build_win32/ex_access.vcproj external/db-4.4.20-vs9/build_win32/ex_btrec.vcproj external/db-4.4.20-vs9/build_win32/ex_csvcode.vcproj external/db-4.4.20-vs9/build_win32/ex_csvload.vcproj external/db-4.4.20-vs9/build_win32/ex_csvquery.vcproj external/db-4.4.20-vs9/build_win32/ex_env.vcproj external/db-4.4.20-vs9/build_win32/ex_lock.vcproj external/db-4.4.20-vs9/build_win32/ex_mpool.vcproj external/db-4.4.20-vs9/build_win32/ex_repquote.vcproj external/db-4.4.20-vs9/build_win32/ex_sequence.vcproj external/db-4.4.20-vs9/build_win32/ex_tpcb.vcproj external/db-4.4.20-vs9/build_win32/ex_txnguide.vcproj external/db-4.4.20-vs9/build_win32/ex_txnguide_inmem.vcproj external/db-4.4.20-vs9/build_win32/example_database_load.vcproj external/db-4.4.20-vs9/build_win32/example_database_read.vcproj external/db-4.4.20-vs9/build_win32/excxx_access.vcproj external/db-4.4.20-vs9/build_win32/excxx_btrec.vcproj external/db-4.4.20-vs9/build_win32/excxx_env.vcproj external/db-4.4.20-vs9/build_win32/excxx_example_database_load.vcproj external/db-4.4.20-vs9/build_win32/excxx_example_database_read.vcproj external/db-4.4.20-vs9/build_win32/excxx_lock.vcproj external/db-4.4.20-vs9/build_win32/excxx_mpool.vcproj external/db-4.4.20-vs9/build_win32/excxx_sequence.vcproj external/db-4.4.20-vs9/build_win32/excxx_tpcb.vcproj external/db-4.4.20-vs9/build_win32/excxx_txnguide.vcproj external/db-4.4.20-vs9/build_win32/excxx_txnguide_inmem.vcproj Log: Upgrade project files to VS9. Modified: external/db-4.4.20-vs9/build_win32/Berkeley_DB.sln ============================================================================== --- external/db-4.4.20-vs9/build_win32/Berkeley_DB.sln (original) +++ external/db-4.4.20-vs9/build_win32/Berkeley_DB.sln Fri Feb 29 18:55:50 2008 @@ -1,4 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build_all", "build_all.vcproj", "{5BE6A7BC-7CE3-48C6-B855-D90E545FD625}" ProjectSection(ProjectDependencies) = postProject {F7F26B95-3624-49CF-9A79-6C6F69B72078} = {F7F26B95-3624-49CF-9A79-6C6F69B72078} @@ -55,8 +56,6 @@ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_dll", "db_dll.vcproj", "{BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_dump", "db_dump.vcproj", "{5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}" ProjectSection(ProjectDependencies) = postProject @@ -89,8 +88,6 @@ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_small", "db_small.vcproj", "{171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_stat", "db_stat.vcproj", "{B44968C4-3243-4D6D-9A59-4C0F9F875C4E}" ProjectSection(ProjectDependencies) = postProject @@ -98,8 +95,6 @@ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_static", "db_static.vcproj", "{C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_tcl", "db_tcl.vcproj", "{F7C5312E-EB20-411F-AC5B-A463D3DE028F}" ProjectSection(ProjectDependencies) = postProject @@ -255,724 +250,723 @@ EndProjectSection EndProject Global - GlobalSection(SolutionConfiguration) = preSolution - ASCII Debug = ASCII Debug - ASCII Release = ASCII Release - Debug = Debug - Debug AMD64 = Debug AMD64 - Debug IA64 = Debug IA64 - Release = Release - Release AMD64 = Release AMD64 - Release IA64 = Release IA64 - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Release.Build.0 = ASCII Release|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug.ActiveCfg = Debug|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug.Build.0 = Debug|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug IA64.Build.0 = Debug IA64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release.ActiveCfg = Release|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release.Build.0 = Release|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release AMD64.Build.0 = Release AMD64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release IA64.ActiveCfg = Release IA64|Win32 - {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release IA64.Build.0 = Release IA64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Release.Build.0 = ASCII Release|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug.ActiveCfg = Debug|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug.Build.0 = Debug|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug IA64.Build.0 = Debug IA64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release.ActiveCfg = Release|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release.Build.0 = Release|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release AMD64.Build.0 = Release AMD64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release IA64.ActiveCfg = Release IA64|Win32 - {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release IA64.Build.0 = Release IA64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Release.Build.0 = ASCII Release|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug.ActiveCfg = Debug|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug.Build.0 = Debug|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug IA64.Build.0 = Debug IA64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release.ActiveCfg = Release|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release.Build.0 = Release|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release AMD64.Build.0 = Release AMD64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release IA64.ActiveCfg = Release IA64|Win32 - {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release IA64.Build.0 = Release IA64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Release.Build.0 = ASCII Release|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug.ActiveCfg = Debug|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug.Build.0 = Debug|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug IA64.Build.0 = Debug IA64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release.ActiveCfg = Release|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release.Build.0 = Release|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release AMD64.Build.0 = Release AMD64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release IA64.ActiveCfg = Release IA64|Win32 - {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release IA64.Build.0 = Release IA64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Release.Build.0 = ASCII Release|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug.ActiveCfg = Debug|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug.Build.0 = Debug|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug IA64.Build.0 = Debug IA64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release.ActiveCfg = Release|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release.Build.0 = Release|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release AMD64.Build.0 = Release AMD64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release IA64.ActiveCfg = Release IA64|Win32 - {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release IA64.Build.0 = Release IA64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Release.Build.0 = ASCII Release|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug.ActiveCfg = Debug|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug.Build.0 = Debug|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug IA64.Build.0 = Debug IA64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release.ActiveCfg = Release|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release.Build.0 = Release|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release AMD64.Build.0 = Release AMD64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release IA64.ActiveCfg = Release IA64|Win32 - {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release IA64.Build.0 = Release IA64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Release.Build.0 = ASCII Release|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug.ActiveCfg = Debug|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug.Build.0 = Debug|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug IA64.Build.0 = Debug IA64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release.ActiveCfg = Release|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release.Build.0 = Release|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release AMD64.Build.0 = Release AMD64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release IA64.ActiveCfg = Release IA64|Win32 - {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release IA64.Build.0 = Release IA64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Release.Build.0 = ASCII Release|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug.ActiveCfg = Debug|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug.Build.0 = Debug|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug IA64.Build.0 = Debug IA64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release.ActiveCfg = Release|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release.Build.0 = Release|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release AMD64.Build.0 = Release AMD64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release IA64.ActiveCfg = Release IA64|Win32 - {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release IA64.Build.0 = Release IA64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Release.Build.0 = ASCII Release|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug.ActiveCfg = Debug|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug.Build.0 = Debug|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug IA64.Build.0 = Debug IA64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release.ActiveCfg = Release|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release.Build.0 = Release|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release AMD64.Build.0 = Release AMD64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release IA64.ActiveCfg = Release IA64|Win32 - {23394132-218F-4F7A-BA9F-37C7F7007765}.Release IA64.Build.0 = Release IA64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Release.Build.0 = ASCII Release|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug.ActiveCfg = Debug|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug.Build.0 = Debug|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug IA64.Build.0 = Debug IA64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release.ActiveCfg = Release|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release.Build.0 = Release|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release AMD64.Build.0 = Release AMD64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release IA64.ActiveCfg = Release IA64|Win32 - {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release IA64.Build.0 = Release IA64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Release.Build.0 = ASCII Release|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug.ActiveCfg = Debug|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug.Build.0 = Debug|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug IA64.Build.0 = Debug IA64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release.ActiveCfg = Release|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release.Build.0 = Release|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release AMD64.Build.0 = Release AMD64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release IA64.ActiveCfg = Release IA64|Win32 - {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release IA64.Build.0 = Release IA64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Release.Build.0 = ASCII Release|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug.ActiveCfg = Debug|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug.Build.0 = Debug|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug IA64.Build.0 = Debug IA64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release.ActiveCfg = Release|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release.Build.0 = Release|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release AMD64.Build.0 = Release AMD64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release IA64.ActiveCfg = Release IA64|Win32 - {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release IA64.Build.0 = Release IA64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Release.Build.0 = ASCII Release|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug.ActiveCfg = Debug|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug.Build.0 = Debug|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug IA64.Build.0 = Debug IA64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release.ActiveCfg = Release|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release.Build.0 = Release|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release AMD64.Build.0 = Release AMD64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release IA64.ActiveCfg = Release IA64|Win32 - {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release IA64.Build.0 = Release IA64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Release.Build.0 = ASCII Release|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug.ActiveCfg = Debug|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug.Build.0 = Debug|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug IA64.Build.0 = Debug IA64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release.ActiveCfg = Release|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release.Build.0 = Release|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release AMD64.Build.0 = Release AMD64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release IA64.ActiveCfg = Release IA64|Win32 - {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release IA64.Build.0 = Release IA64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Release.Build.0 = ASCII Release|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug.ActiveCfg = Debug|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug.Build.0 = Debug|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug IA64.Build.0 = Debug IA64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release.ActiveCfg = Release|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release.Build.0 = Release|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release AMD64.Build.0 = Release AMD64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release IA64.ActiveCfg = Release IA64|Win32 - {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release IA64.Build.0 = Release IA64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Release.Build.0 = ASCII Release|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug.ActiveCfg = Debug|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug.Build.0 = Debug|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug IA64.Build.0 = Debug IA64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release.ActiveCfg = Release|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release.Build.0 = Release|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release AMD64.Build.0 = Release AMD64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release IA64.ActiveCfg = Release IA64|Win32 - {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release IA64.Build.0 = Release IA64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Release.Build.0 = ASCII Release|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug.ActiveCfg = Debug|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug.Build.0 = Debug|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug IA64.Build.0 = Debug IA64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release.ActiveCfg = Release|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release.Build.0 = Release|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release AMD64.Build.0 = Release AMD64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release IA64.ActiveCfg = Release IA64|Win32 - {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release IA64.Build.0 = Release IA64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Release.Build.0 = ASCII Release|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug.ActiveCfg = Debug|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug.Build.0 = Debug|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug IA64.Build.0 = Debug IA64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release.ActiveCfg = Release|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release.Build.0 = Release|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release AMD64.Build.0 = Release AMD64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release IA64.ActiveCfg = Release IA64|Win32 - {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release IA64.Build.0 = Release IA64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Release.Build.0 = ASCII Release|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug.ActiveCfg = Debug|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug.Build.0 = Debug|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug IA64.Build.0 = Debug IA64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release.ActiveCfg = Release|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release.Build.0 = Release|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release AMD64.Build.0 = Release AMD64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release IA64.ActiveCfg = Release IA64|Win32 - {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release IA64.Build.0 = Release IA64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Release.Build.0 = ASCII Release|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug.ActiveCfg = Debug|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug.Build.0 = Debug|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug IA64.Build.0 = Debug IA64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release.ActiveCfg = Release|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release.Build.0 = Release|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release AMD64.Build.0 = Release AMD64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release IA64.ActiveCfg = Release IA64|Win32 - {3E497868-A70B-45BE-B113-1F04D368DA93}.Release IA64.Build.0 = Release IA64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Release.Build.0 = ASCII Release|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug.ActiveCfg = Debug|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug.Build.0 = Debug|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Debug IA64.Build.0 = Debug IA64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release.ActiveCfg = Release|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release.Build.0 = Release|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release AMD64.Build.0 = Release AMD64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release IA64.ActiveCfg = Release IA64|Win32 - {894E4674-B620-44CF-915C-EA171C279B0B}.Release IA64.Build.0 = Release IA64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Release.Build.0 = ASCII Release|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug.ActiveCfg = Debug|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug.Build.0 = Debug|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug IA64.Build.0 = Debug IA64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release.ActiveCfg = Release|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release.Build.0 = Release|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release AMD64.Build.0 = Release AMD64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release IA64.ActiveCfg = Release IA64|Win32 - {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release IA64.Build.0 = Release IA64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Release.Build.0 = ASCII Release|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug.ActiveCfg = Debug|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug.Build.0 = Debug|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug IA64.Build.0 = Debug IA64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release.ActiveCfg = Release|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release.Build.0 = Release|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release AMD64.Build.0 = Release AMD64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release IA64.ActiveCfg = Release IA64|Win32 - {207C3746-0D9C-4ADB-AF4D-876039022870}.Release IA64.Build.0 = Release IA64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Release.Build.0 = ASCII Release|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug.ActiveCfg = Debug|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug.Build.0 = Debug|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Debug IA64.Build.0 = Debug IA64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release.ActiveCfg = Release|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release.Build.0 = Release|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release AMD64.Build.0 = Release AMD64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release IA64.ActiveCfg = Release IA64|Win32 - {14301406-3348-4D7A-A47B-EC6180017F50}.Release IA64.Build.0 = Release IA64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Release.Build.0 = ASCII Release|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug.ActiveCfg = Debug|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug.Build.0 = Debug|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug IA64.Build.0 = Debug IA64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release.ActiveCfg = Release|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release.Build.0 = Release|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release AMD64.Build.0 = Release AMD64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release IA64.ActiveCfg = Release IA64|Win32 - {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release IA64.Build.0 = Release IA64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Release.Build.0 = ASCII Release|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug.ActiveCfg = Debug|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug.Build.0 = Debug|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug IA64.Build.0 = Debug IA64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release.ActiveCfg = Release|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release.Build.0 = Release|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release AMD64.Build.0 = Release AMD64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release IA64.ActiveCfg = Release IA64|Win32 - {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release IA64.Build.0 = Release IA64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Release.Build.0 = ASCII Release|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug.ActiveCfg = Debug|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug.Build.0 = Debug|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug IA64.Build.0 = Debug IA64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release.ActiveCfg = Release|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release.Build.0 = Release|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release AMD64.Build.0 = Release AMD64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release IA64.ActiveCfg = Release IA64|Win32 - {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release IA64.Build.0 = Release IA64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Release.Build.0 = ASCII Release|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug.ActiveCfg = Debug|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug.Build.0 = Debug|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug IA64.Build.0 = Debug IA64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release.ActiveCfg = Release|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release.Build.0 = Release|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release AMD64.Build.0 = Release AMD64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release IA64.ActiveCfg = Release IA64|Win32 - {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release IA64.Build.0 = Release IA64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Release.Build.0 = ASCII Release|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug.ActiveCfg = Debug|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug.Build.0 = Debug|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug IA64.Build.0 = Debug IA64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release.ActiveCfg = Release|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release.Build.0 = Release|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release AMD64.Build.0 = Release AMD64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release IA64.ActiveCfg = Release IA64|Win32 - {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release IA64.Build.0 = Release IA64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Release.Build.0 = ASCII Release|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug.ActiveCfg = Debug|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug.Build.0 = Debug|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug IA64.Build.0 = Debug IA64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release.ActiveCfg = Release|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release.Build.0 = Release|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release AMD64.Build.0 = Release AMD64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release IA64.ActiveCfg = Release IA64|Win32 - {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release IA64.Build.0 = Release IA64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Release.Build.0 = ASCII Release|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug.ActiveCfg = Debug|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug.Build.0 = Debug|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug IA64.Build.0 = Debug IA64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release.ActiveCfg = Release|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release.Build.0 = Release|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release AMD64.Build.0 = Release AMD64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release IA64.ActiveCfg = Release IA64|Win32 - {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release IA64.Build.0 = Release IA64|Win32 - {40373079-658E-451A-8249-5986B2190133}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {40373079-658E-451A-8249-5986B2190133}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {40373079-658E-451A-8249-5986B2190133}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {40373079-658E-451A-8249-5986B2190133}.ASCII Release.Build.0 = ASCII Release|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug.ActiveCfg = Debug|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug.Build.0 = Debug|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Debug IA64.Build.0 = Debug IA64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release.ActiveCfg = Release|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release.Build.0 = Release|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release AMD64.Build.0 = Release AMD64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release IA64.ActiveCfg = Release IA64|Win32 - {40373079-658E-451A-8249-5986B2190133}.Release IA64.Build.0 = Release IA64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Release.Build.0 = ASCII Release|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug.ActiveCfg = Debug|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug.Build.0 = Debug|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug IA64.Build.0 = Debug IA64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release.ActiveCfg = Release|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release.Build.0 = Release|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release AMD64.Build.0 = Release AMD64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release IA64.ActiveCfg = Release IA64|Win32 - {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release IA64.Build.0 = Release IA64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Release.Build.0 = ASCII Release|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug.ActiveCfg = Debug|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug.Build.0 = Debug|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug IA64.Build.0 = Debug IA64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release.ActiveCfg = Release|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release.Build.0 = Release|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release AMD64.Build.0 = Release AMD64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release IA64.ActiveCfg = Release IA64|Win32 - {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release IA64.Build.0 = Release IA64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Release.Build.0 = ASCII Release|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug.ActiveCfg = Debug|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug.Build.0 = Debug|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug IA64.Build.0 = Debug IA64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release.ActiveCfg = Release|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release.Build.0 = Release|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release AMD64.Build.0 = Release AMD64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release IA64.ActiveCfg = Release IA64|Win32 - {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release IA64.Build.0 = Release IA64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Release.Build.0 = ASCII Release|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug.ActiveCfg = Debug|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug.Build.0 = Debug|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug IA64.Build.0 = Debug IA64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release.ActiveCfg = Release|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release.Build.0 = Release|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release AMD64.Build.0 = Release AMD64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release IA64.ActiveCfg = Release IA64|Win32 - {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release IA64.Build.0 = Release IA64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Release.Build.0 = ASCII Release|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug.ActiveCfg = Debug|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug.Build.0 = Debug|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug IA64.Build.0 = Debug IA64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release.ActiveCfg = Release|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release.Build.0 = Release|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release AMD64.Build.0 = Release AMD64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release IA64.ActiveCfg = Release IA64|Win32 - {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release IA64.Build.0 = Release IA64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Release.Build.0 = ASCII Release|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug.ActiveCfg = Debug|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug.Build.0 = Debug|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug IA64.Build.0 = Debug IA64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release.ActiveCfg = Release|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release.Build.0 = Release|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release AMD64.Build.0 = Release AMD64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release IA64.ActiveCfg = Release IA64|Win32 - {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release IA64.Build.0 = Release IA64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Release.Build.0 = ASCII Release|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug.ActiveCfg = Debug|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug.Build.0 = Debug|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug IA64.Build.0 = Debug IA64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release.ActiveCfg = Release|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release.Build.0 = Release|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release AMD64.Build.0 = Release AMD64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release IA64.ActiveCfg = Release IA64|Win32 - {10429E06-7C29-477D-8993-46773DC3FFE9}.Release IA64.Build.0 = Release IA64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Release.Build.0 = ASCII Release|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug.ActiveCfg = Debug|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug.Build.0 = Debug|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug IA64.Build.0 = Debug IA64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release.ActiveCfg = Release|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release.Build.0 = Release|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release AMD64.Build.0 = Release AMD64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release IA64.ActiveCfg = Release IA64|Win32 - {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release IA64.Build.0 = Release IA64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Release.Build.0 = ASCII Release|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug.ActiveCfg = Debug|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug.Build.0 = Debug|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug IA64.Build.0 = Debug IA64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release.ActiveCfg = Release|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release.Build.0 = Release|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release AMD64.Build.0 = Release AMD64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release IA64.ActiveCfg = Release IA64|Win32 - {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release IA64.Build.0 = Release IA64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Release.Build.0 = ASCII Release|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug.ActiveCfg = Debug|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug.Build.0 = Debug|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug IA64.Build.0 = Debug IA64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release.ActiveCfg = Release|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release.Build.0 = Release|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release AMD64.Build.0 = Release AMD64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release IA64.ActiveCfg = Release IA64|Win32 - {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release IA64.Build.0 = Release IA64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Release.Build.0 = ASCII Release|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug.ActiveCfg = Debug|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug.Build.0 = Debug|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug IA64.Build.0 = Debug IA64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release.ActiveCfg = Release|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release.Build.0 = Release|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release AMD64.Build.0 = Release AMD64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release IA64.ActiveCfg = Release IA64|Win32 - {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release IA64.Build.0 = Release IA64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Debug.ActiveCfg = ASCII Debug|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Debug.Build.0 = ASCII Debug|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Release.ActiveCfg = ASCII Release|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Release.Build.0 = ASCII Release|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug.ActiveCfg = Debug|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug.Build.0 = Debug|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug AMD64.Build.0 = Debug AMD64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug IA64.ActiveCfg = Debug IA64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug IA64.Build.0 = Debug IA64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release.ActiveCfg = Release|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release.Build.0 = Release|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release AMD64.ActiveCfg = Release AMD64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release AMD64.Build.0 = Release AMD64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release IA64.ActiveCfg = Release IA64|Win32 - {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release IA64.Build.0 = Release IA64|Win32 + GlobalSection(SolutionConfigurationPlatforms) = preSolution + ASCII Debug|Win32 = ASCII Debug|Win32 + ASCII Release|Win32 = ASCII Release|Win32 + Debug AMD64|Win32 = Debug AMD64|Win32 + Debug IA64|Win32 = Debug IA64|Win32 + Debug|Win32 = Debug|Win32 + Release AMD64|Win32 = Release AMD64|Win32 + Release IA64|Win32 = Release IA64|Win32 + Release|Win32 = Release|Win32 EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug|Win32.ActiveCfg = Debug|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Debug|Win32.Build.0 = Debug|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release|Win32.ActiveCfg = Release|Win32 + {5BE6A7BC-7CE3-48C6-B855-D90E545FD625}.Release|Win32.Build.0 = Release|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug|Win32.ActiveCfg = Debug|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Debug|Win32.Build.0 = Debug|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release|Win32.ActiveCfg = Release|Win32 + {B42CC051-97A0-4C0A-BDD7-45791B92C61C}.Release|Win32.Build.0 = Release|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug|Win32.ActiveCfg = Debug|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Debug|Win32.Build.0 = Debug|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release|Win32.ActiveCfg = Release|Win32 + {939E539C-7144-4FD2-B318-6B70791E4FB0}.Release|Win32.Build.0 = Release|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug|Win32.ActiveCfg = Debug|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Debug|Win32.Build.0 = Debug|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release|Win32.ActiveCfg = Release|Win32 + {97E39181-72A5-4BA5-B962-BCDACCA2FE83}.Release|Win32.Build.0 = Release|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug|Win32.ActiveCfg = Debug|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Debug|Win32.Build.0 = Debug|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release|Win32.ActiveCfg = Release|Win32 + {BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}.Release|Win32.Build.0 = Release|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug|Win32.ActiveCfg = Debug|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Debug|Win32.Build.0 = Debug|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release|Win32.ActiveCfg = Release|Win32 + {5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}.Release|Win32.Build.0 = Release|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug|Win32.ActiveCfg = Debug|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Debug|Win32.Build.0 = Debug|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release|Win32.ActiveCfg = Release|Win32 + {E685D09D-0E46-482B-8546-4FA0BEC4EB8A}.Release|Win32.Build.0 = Release|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug|Win32.ActiveCfg = Debug|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Debug|Win32.Build.0 = Debug|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release|Win32.ActiveCfg = Release|Win32 + {B440697C-3D0A-44F4-90CF-A37EBA37B228}.Release|Win32.Build.0 = Release|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug|Win32.ActiveCfg = Debug|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Debug|Win32.Build.0 = Debug|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release|Win32.ActiveCfg = Release|Win32 + {23394132-218F-4F7A-BA9F-37C7F7007765}.Release|Win32.Build.0 = Release|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Debug|Win32.Build.0 = Debug|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release|Win32.ActiveCfg = Release|Win32 + {4F1C44D8-2893-4FD6-A832-21F372F19596}.Release|Win32.Build.0 = Release|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug|Win32.ActiveCfg = Debug|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Debug|Win32.Build.0 = Debug|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release|Win32.ActiveCfg = Release|Win32 + {F1A92B38-F912-45B0-93A9-72770E70BEF4}.Release|Win32.Build.0 = Release|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug|Win32.ActiveCfg = Debug|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Debug|Win32.Build.0 = Debug|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release|Win32.ActiveCfg = Release|Win32 + {171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}.Release|Win32.Build.0 = Release|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug|Win32.ActiveCfg = Debug|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Debug|Win32.Build.0 = Debug|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release|Win32.ActiveCfg = Release|Win32 + {B44968C4-3243-4D6D-9A59-4C0F9F875C4E}.Release|Win32.Build.0 = Release|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug|Win32.ActiveCfg = Debug|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Debug|Win32.Build.0 = Debug|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release|Win32.ActiveCfg = Release|Win32 + {C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}.Release|Win32.Build.0 = Release|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Debug|Win32.Build.0 = Debug|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release|Win32.ActiveCfg = Release|Win32 + {F7C5312E-EB20-411F-AC5B-A463D3DE028F}.Release|Win32.Build.0 = Release|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug|Win32.ActiveCfg = Debug|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Debug|Win32.Build.0 = Debug|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release|Win32.ActiveCfg = Release|Win32 + {070DC608-CBBF-4AFB-BA2C-BFE0785038F4}.Release|Win32.Build.0 = Release|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Debug|Win32.Build.0 = Debug|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release|Win32.ActiveCfg = Release|Win32 + {A2F71ABC-96B2-450D-973A-5BE661034CCE}.Release|Win32.Build.0 = Release|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug|Win32.ActiveCfg = Debug|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Debug|Win32.Build.0 = Debug|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release|Win32.ActiveCfg = Release|Win32 + {861A5FAD-25FB-4884-8F28-2CE407B54AAD}.Release|Win32.Build.0 = Release|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug|Win32.ActiveCfg = Debug|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Debug|Win32.Build.0 = Debug|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release|Win32.ActiveCfg = Release|Win32 + {93D80BE1-BE99-4D39-B02D-31294C9E9DFA}.Release|Win32.Build.0 = Release|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug|Win32.ActiveCfg = Debug|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Debug|Win32.Build.0 = Debug|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release|Win32.ActiveCfg = Release|Win32 + {3E497868-A70B-45BE-B113-1F04D368DA93}.Release|Win32.Build.0 = Release|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug|Win32.ActiveCfg = Debug|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Debug|Win32.Build.0 = Debug|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release|Win32.ActiveCfg = Release|Win32 + {894E4674-B620-44CF-915C-EA171C279B0B}.Release|Win32.Build.0 = Release|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug|Win32.ActiveCfg = Debug|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Debug|Win32.Build.0 = Debug|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release|Win32.ActiveCfg = Release|Win32 + {EA1286CA-295F-4666-8101-EAE5A254B78A}.Release|Win32.Build.0 = Release|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug|Win32.ActiveCfg = Debug|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Debug|Win32.Build.0 = Debug|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release|Win32.ActiveCfg = Release|Win32 + {207C3746-0D9C-4ADB-AF4D-876039022870}.Release|Win32.Build.0 = Release|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug|Win32.ActiveCfg = Debug|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Debug|Win32.Build.0 = Debug|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release|Win32.ActiveCfg = Release|Win32 + {14301406-3348-4D7A-A47B-EC6180017F50}.Release|Win32.Build.0 = Release|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Debug|Win32.Build.0 = Debug|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release|Win32.ActiveCfg = Release|Win32 + {3505C707-1445-4E79-894A-D30CFE5E90DA}.Release|Win32.Build.0 = Release|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug|Win32.ActiveCfg = Debug|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Debug|Win32.Build.0 = Debug|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release|Win32.ActiveCfg = Release|Win32 + {8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}.Release|Win32.Build.0 = Release|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug|Win32.ActiveCfg = Debug|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Debug|Win32.Build.0 = Debug|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release|Win32.ActiveCfg = Release|Win32 + {927F260A-19CF-4E55-A154-109A0BF80AE9}.Release|Win32.Build.0 = Release|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug|Win32.ActiveCfg = Debug|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Debug|Win32.Build.0 = Debug|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release|Win32.ActiveCfg = Release|Win32 + {389384D4-75A5-4B53-A7C2-AC61375C430B}.Release|Win32.Build.0 = Release|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug|Win32.ActiveCfg = Debug|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Debug|Win32.Build.0 = Debug|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release|Win32.ActiveCfg = Release|Win32 + {B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}.Release|Win32.Build.0 = Release|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug|Win32.ActiveCfg = Debug|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Debug|Win32.Build.0 = Debug|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release|Win32.ActiveCfg = Release|Win32 + {5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}.Release|Win32.Build.0 = Release|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug|Win32.ActiveCfg = Debug|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Debug|Win32.Build.0 = Debug|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release|Win32.ActiveCfg = Release|Win32 + {3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}.Release|Win32.Build.0 = Release|Win32 + {40373079-658E-451A-8249-5986B2190133}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {40373079-658E-451A-8249-5986B2190133}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {40373079-658E-451A-8249-5986B2190133}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {40373079-658E-451A-8249-5986B2190133}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug|Win32.ActiveCfg = Debug|Win32 + {40373079-658E-451A-8249-5986B2190133}.Debug|Win32.Build.0 = Debug|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release|Win32.ActiveCfg = Release|Win32 + {40373079-658E-451A-8249-5986B2190133}.Release|Win32.Build.0 = Release|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug|Win32.ActiveCfg = Debug|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Debug|Win32.Build.0 = Debug|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release|Win32.ActiveCfg = Release|Win32 + {6E39EDB9-D55A-43C7-B740-9221B03FA458}.Release|Win32.Build.0 = Release|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug|Win32.ActiveCfg = Debug|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Debug|Win32.Build.0 = Debug|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release|Win32.ActiveCfg = Release|Win32 + {EE86A96A-D00A-44C9-8914-850E57B8E677}.Release|Win32.Build.0 = Release|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug|Win32.ActiveCfg = Debug|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Debug|Win32.Build.0 = Debug|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release|Win32.ActiveCfg = Release|Win32 + {22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}.Release|Win32.Build.0 = Release|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug|Win32.ActiveCfg = Debug|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Debug|Win32.Build.0 = Debug|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release|Win32.ActiveCfg = Release|Win32 + {E53D7716-2173-47DC-AA6A-E06867A9D5D0}.Release|Win32.Build.0 = Release|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug|Win32.ActiveCfg = Debug|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Debug|Win32.Build.0 = Debug|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release|Win32.ActiveCfg = Release|Win32 + {07BA8001-E8DA-4CD2-A800-A4239741C4ED}.Release|Win32.Build.0 = Release|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug|Win32.ActiveCfg = Debug|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Debug|Win32.Build.0 = Debug|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release|Win32.ActiveCfg = Release|Win32 + {5F2C44DE-5466-4CF1-9962-415FFC4F3246}.Release|Win32.Build.0 = Release|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug|Win32.ActiveCfg = Debug|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Debug|Win32.Build.0 = Debug|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release|Win32.ActiveCfg = Release|Win32 + {10429E06-7C29-477D-8993-46773DC3FFE9}.Release|Win32.Build.0 = Release|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Debug|Win32.Build.0 = Debug|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release|Win32.ActiveCfg = Release|Win32 + {D5938761-AD96-4C0C-9C46-BC375358DFE9}.Release|Win32.Build.0 = Release|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug|Win32.ActiveCfg = Debug|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Debug|Win32.Build.0 = Debug|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release|Win32.ActiveCfg = Release|Win32 + {A27263BC-8BED-412C-944D-7EC7D9F194EC}.Release|Win32.Build.0 = Release|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug|Win32.ActiveCfg = Debug|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Debug|Win32.Build.0 = Debug|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release|Win32.ActiveCfg = Release|Win32 + {47E23751-01E8-43C9-83C2-06EE68C121EF}.Release|Win32.Build.0 = Release|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug|Win32.ActiveCfg = Debug|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Debug|Win32.Build.0 = Debug|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release|Win32.ActiveCfg = Release|Win32 + {3A8EA457-87A3-4F20-A993-452D104FFD16}.Release|Win32.Build.0 = Release|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Debug|Win32.ActiveCfg = ASCII Debug|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Debug|Win32.Build.0 = ASCII Debug|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Release|Win32.ActiveCfg = ASCII Release|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.ASCII Release|Win32.Build.0 = ASCII Release|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug AMD64|Win32.ActiveCfg = Debug AMD64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug AMD64|Win32.Build.0 = Debug AMD64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug IA64|Win32.ActiveCfg = Debug IA64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug IA64|Win32.Build.0 = Debug IA64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Debug|Win32.Build.0 = Debug|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release AMD64|Win32.ActiveCfg = Release AMD64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release AMD64|Win32.Build.0 = Release AMD64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release IA64|Win32.ActiveCfg = Release IA64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release IA64|Win32.Build.0 = Release IA64|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release|Win32.ActiveCfg = Release|Win32 + {F7F26B95-3624-49CF-9A79-6C6F69B72078}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal Modified: external/db-4.4.20-vs9/build_win32/build_all.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/build_all.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/build_all.vcproj Fri Feb 29 18:55:50 2008 @@ -1,187 +1,347 @@ + ProjectGUID="{5BE6A7BC-7CE3-48C6-B855-D90E545FD625}" + Keyword="MakeFileProj" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + CleanCommandLine="" + Output="build_all.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + CleanCommandLine="" + Output="build_all.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + CleanCommandLine="" + Output="build_all.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + CleanCommandLine="" + Output="build_all.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_archive.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_archive.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_archive.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{B42CC051-97A0-4C0A-BDD7-45791B92C61C}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_archive\db_archive.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_checkpoint.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_checkpoint.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_checkpoint.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{939E539C-7144-4FD2-B318-6B70791E4FB0}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_checkpoint\db_checkpoint.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_deadlock.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_deadlock.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_deadlock.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{97E39181-72A5-4BA5-B962-BCDACCA2FE83}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_deadlock\db_deadlock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_dll.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_dll.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_dll.vcproj Fri Feb 29 18:55:50 2008 @@ -1,23 +1,50 @@ + ProjectGUID="{BDFBE3FD-385D-4816-90E5-A0FEC0925E5F}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + /> + - - + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> - + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + + + + + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + - + TargetMachine="1" + /> + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\btree\bt_compact.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_compare.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_conv.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_curadj.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_cursor.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_delete.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_put.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_reclaim.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_recno.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_rsearch.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_search.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_split.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_upgrade.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\bt_verify.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\btree\btree_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\crdel_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\crdel_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\crypto_stub.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_db.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_dbc.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_dbt.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_env.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_except.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_lock.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_logc.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_mpool.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_multi.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_seq.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\cxx\cxx_txn.cpp" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_am.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_byteorder.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_cam.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_clock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_conv.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_dispatch.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_dup.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_err.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_getlong.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_idspace.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_iface.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_join.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\db_log2.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_meta.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_overflow.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_ovfl_vrfy.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_pr.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_reclaim.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_remove.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_rename.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_ret.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\db_salloc.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_setid.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_setlsn.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\db_shash.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_stati.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_truncate.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_upg.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_upg_opd.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_vrfy.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\db\db_vrfyutil.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbm\dbm.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbreg\dbreg.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbreg\dbreg_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbreg\dbreg_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbreg\dbreg_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\dbreg\dbreg_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_failchk.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_file.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_recover.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_register.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\env\env_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\fileops\fileops_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\fileops\fop_basic.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\fileops\fop_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\fileops\fop_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_conv.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_dup.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_func.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_meta.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_page.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_reclaim.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_upgrade.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hash\hash_verify.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hmac\hmac.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hsearch\hsearch.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="libdb.def" + > + RelativePath="libdb.rc" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="_DEBUG;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="NDEBUG;$(NoInherit)" + /> + RelativePath="..\lock\lock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_deadlock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_failchk.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_id.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_list.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_timer.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\lock\lock_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_archive.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_compare.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_debug.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_get.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_put.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\log\log_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_alloc.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_bh.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_fget.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_fmethod.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_fopen.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_fput.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_fset.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_register.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_sync.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mp\mp_trickle.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mutex\mut_alloc.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mutex\mut_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mutex\mut_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mutex\mut_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\mutex\mut_win32.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_abs.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_alloc.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_clock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_config.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_dir.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_errno.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_fid.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_flock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_fsync.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_handle.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_id.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_map.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_mkdir.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_oflags.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_rename.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_root.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_rpath.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_rw.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_seek.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_sleep.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_spin.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os\os_tmpdir.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_truncate.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\os_win32\os_unlink.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_conv.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_files.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_open.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_upgrade.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\qam\qam_verify.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_backup.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_elect.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_log.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_record.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\rep\rep_verify.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\sequence\seq_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\sequence\sequence.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\hmac\sha1.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\clib\strcasecmp.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_auto.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_chkpt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_failchk.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_method.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_rec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_recover.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_region.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_stat.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\txn\txn_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\util_cache.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\util_log.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\common\util_sig.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\xa\xa.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\xa\xa_db.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + RelativePath="..\xa\xa_map.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> Modified: external/db-4.4.20-vs9/build_win32/db_dump.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_dump.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_dump.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{5AFD87D8-688B-4CC1-9DC9-AD8943EF596D}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_dump\db_dump.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_hotbackup.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_hotbackup.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_hotbackup.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{E685D09D-0E46-482B-8546-4FA0BEC4EB8A}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_hotbackup\db_hotbackup.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_java.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_java.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_java.vcproj Fri Feb 29 18:55:50 2008 @@ -1,83 +1,171 @@ + ProjectGUID="{B440697C-3D0A-44F4-90CF-A37EBA37B228}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + TargetMachine="1" + /> - + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + TargetMachine="1" + /> - + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + TargetMachine="1" + /> - + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + TargetMachine="1" + /> - + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\libdb_java\db_java_wrap.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;$(NoInherit)" + /> Modified: external/db-4.4.20-vs9/build_win32/db_load.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_load.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_load.vcproj Fri Feb 29 18:55:50 2008 @@ -1,113 +1,194 @@ + ProjectGUID="{23394132-218F-4F7A-BA9F-37C7F7007765}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_load\db_load.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_printlog.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_printlog.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_printlog.vcproj Fri Feb 29 18:55:50 2008 @@ -1,174 +1,284 @@ + ProjectGUID="{4F1C44D8-2893-4FD6-A832-21F372F19596}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\btree\btree_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\crdel_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db_printlog\db_printlog.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fileops_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_autop.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_recover.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_recover.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_recover.vcproj Fri Feb 29 18:55:50 2008 @@ -1,143 +1,253 @@ + ProjectGUID="{F1A92B38-F912-45B0-93A9-72770E70BEF4}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_recover\db_recover.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_small.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_small.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_small.vcproj Fri Feb 29 18:55:50 2008 @@ -1,193 +1,353 @@ + ProjectGUID="{171A24B8-2BDB-4511-B0E7-0E5E6447B1FB}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> - - + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release/libdb_small44s.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + - + CompileAs="0" + /> - + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Debug_ASCII/libdb_small44sd.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + - - + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Debug/libdb_small44sd.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + - - + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release_ASCII/libdb_small44s.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\btree\bt_compact.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_compare.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_curadj.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_cursor.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_delete.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_put.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_reclaim.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_recno.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_rsearch.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_search.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_split.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_upgrade.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\btree_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\crdel_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\crdel_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\crypto_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_db.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_dbc.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_dbt.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_env.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_except.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_lock.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_logc.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_mpool.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_multi.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_seq.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_txn.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_am.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_byteorder.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_cam.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_dispatch.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_dup.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_err.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_getlong.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_idspace.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_iface.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_join.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_log2.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_meta.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_overflow.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_pr.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_reclaim.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_remove.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_rename.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_ret.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\db_salloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_setid.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_setlsn.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\db_shash.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_stati.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_truncate.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_upg.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_upg_opd.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_vrfy_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_file.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_recover.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_register.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fileops_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_basic.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_func.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hmac\hmac.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_deadlock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_id.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_list.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_timer.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_archive.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_compare.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_debug.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_get.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_put.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_bh.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fget.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fmethod.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fopen.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fput.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fset.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_register.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_sync.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_trickle.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_win32.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_abs.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_clock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_config.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_dir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_errno.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_fid.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_flock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_fsync.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_handle.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_id.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_map.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_mkdir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_oflags.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_rename.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_root.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_rpath.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_rw.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_seek.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_sleep.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_spin.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_tmpdir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_truncate.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_unlink.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\sequence\seq_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\sequence\sequence.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hmac\sha1.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\strcasecmp.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_chkpt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_recover.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_cache.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_log.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_sig.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa_db.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa_map.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_stat.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_stat.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_stat.vcproj Fri Feb 29 18:55:50 2008 @@ -1,143 +1,253 @@ + ProjectGUID="{B44968C4-3243-4D6D-9A59-4C0F9F875C4E}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_stat\db_stat.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_static.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_static.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_static.vcproj Fri Feb 29 18:55:50 2008 @@ -1,177 +1,290 @@ + ProjectGUID="{C6112BAF-38D0-415D-B5B4-AC7F1ECD00F4}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + CharacterSet="1" + > + + + + + - - + StringPooling="true" + RuntimeLibrary="2" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release_IA64/libdb44s.lib" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="4" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + - - + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release/libdb44s.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + CharacterSet="1" + > + + + + + - - + StringPooling="true" + RuntimeLibrary="2" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release_AMD64/libdb44s.lib" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + - - + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Debug/libdb44sd.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + - - + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Release_ASCII/libdb44s.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="4" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + + + + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=".,.." + PreprocessorDefinitions="DIAGNOSTIC;UNICODE;WIN32;_DEBUG;_WINDOWS" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + - - + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + Culture="3081" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLibrarianTool" + OutputFile="Debug_ASCII/libdb44sd.lib" + SuppressStartupBanner="true" + /> + Name="VCALinkTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\btree\bt_compact.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_compare.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_curadj.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_cursor.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_delete.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_put.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_reclaim.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_recno.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_rsearch.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_search.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_split.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_upgrade.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\bt_verify.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\btree\btree_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\crdel_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\crdel_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\crypto_stub.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_db.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_dbc.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_dbt.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_env.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_except.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_lock.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_logc.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_mpool.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_multi.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_seq.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\cxx\cxx_txn.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_am.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_byteorder.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_cam.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_clock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_dispatch.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_dup.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_err.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_getlong.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_idspace.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_iface.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_join.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\db_log2.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_meta.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_overflow.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_ovfl_vrfy.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_pr.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_reclaim.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_remove.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_rename.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_ret.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\db_salloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_setid.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_setlsn.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\db_shash.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_stati.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_truncate.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_upg.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_upg_opd.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_vrfy.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\db\db_vrfyutil.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbm\dbm.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\dbreg\dbreg_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_file.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_recover.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_register.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\env\env_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fileops_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_basic.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\fileops\fop_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_dup.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_func.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_meta.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_page.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_reclaim.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_upgrade.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hash\hash_verify.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hmac\hmac.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hsearch\hsearch.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_deadlock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_id.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_list.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_timer.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\lock\lock_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_archive.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_compare.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_debug.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_get.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_put.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\log\log_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_bh.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fget.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fmethod.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fopen.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fput.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_fset.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_register.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_sync.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mp\mp_trickle.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\mutex\mut_win32.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_abs.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_alloc.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_clock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_config.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_dir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_errno.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_fid.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_flock.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_fsync.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_handle.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_id.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_map.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_mkdir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_oflags.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_rename.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_root.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_rpath.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_rw.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_seek.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_sleep.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_spin.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os\os_tmpdir.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_truncate.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\os_win32\os_unlink.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_conv.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_files.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_open.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_upgrade.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\qam\qam_verify.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_backup.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_elect.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_log.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_record.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\rep\rep_verify.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\sequence\seq_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\sequence\sequence.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\hmac\sha1.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\strcasecmp.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_auto.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_chkpt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_failchk.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_method.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_rec.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_recover.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_region.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_stat.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\txn\txn_util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_cache.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_log.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\common\util_sig.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa_db.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\xa\xa_map.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_tcl.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_tcl.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_tcl.vcproj Fri Feb 29 18:55:50 2008 @@ -1,279 +1,480 @@ + ProjectGUID="{F7C5312E-EB20-411F-AC5B-A463D3DE028F}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + - - + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> - + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + + + + + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + - + TargetMachine="1" + /> + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + + + + + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + - + TargetMachine="1" + /> + Name="VCALinkTool" + /> - - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="libdb_tcl.def" + > + RelativePath="..\tcl\tcl_compat.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_db.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_db_pkg.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_dbcursor.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_env.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_internal.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_lock.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_log.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_mp.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_rep.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_seq.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_txn.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + RelativePath="..\tcl\tcl_util.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;WIN32;NDEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="UNICODE;_UNICODE;DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;DB_TCL_SUPPORT;$(NoInherit)" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="DB_CREATE_DLL;DIAGNOSTIC;CONFIG_TEST;WIN32;_DEBUG;_WINDOWS;_MBCS;DB_TCL_SUPPORT;$(NoInherit)" + /> Modified: external/db-4.4.20-vs9/build_win32/db_test.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_test.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_test.vcproj Fri Feb 29 18:55:50 2008 @@ -1,238 +1,406 @@ + ProjectGUID="{070DC608-CBBF-4AFB-BA2C-BFE0785038F4}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Copy built executable files." + CommandLine="copy "$(OUTDIR)"\*.exe ." + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Copy built executable files." + CommandLine="copy "$(OUTDIR)"\*.exe ." + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Copy built executable files." + CommandLine="copy "$(OUTDIR)"\*.exe ." + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + /> + - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Copy built executable files." + CommandLine="copy "$(OUTDIR)"\*.exe ." + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="dbkill.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_upgrade.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_upgrade.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_upgrade.vcproj Fri Feb 29 18:55:50 2008 @@ -1,82 +1,163 @@ + ProjectGUID="{A2F71ABC-96B2-450D-973A-5BE661034CCE}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_upgrade\db_upgrade.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/db_verify.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/db_verify.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/db_verify.vcproj Fri Feb 29 18:55:50 2008 @@ -1,112 +1,222 @@ + ProjectGUID="{861A5FAD-25FB-4884-8F28-2CE407B54AAD}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\db_verify\db_verify.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_access.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_access.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_access.vcproj Fri Feb 29 18:55:50 2008 @@ -1,264 +1,461 @@ + ProjectGUID="{93D80BE1-BE99-4D39-B02D-31294C9E9DFA}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_access.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_btrec.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_btrec.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_btrec.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{3E497868-A70B-45BE-B113-1F04D368DA93}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_btrec.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_csvcode.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_csvcode.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_csvcode.vcproj Fri Feb 29 18:55:50 2008 @@ -1,85 +1,137 @@ + ProjectGUID="{894E4674-B620-44CF-915C-EA171C279B0B}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Generate csv_local.c" + CommandLine=""$(OUTDIR)"\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Generate csv_local.c" + CommandLine=""$(OUTDIR)"\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + /> + - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Generate csv_local.c" + CommandLine=""$(OUTDIR)"\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + + + + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + + Name="VCResourceCompilerTool" + /> + + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + Description="Generate csv_local.c" + CommandLine=""$(OUTDIR)"\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc" + /> + RelativePath="..\examples_c\csv\code.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_csvload.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_csvload.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_csvload.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{EA1286CA-295F-4666-8101-EAE5A254B78A}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\csv\csv_local.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\db.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\DbRecord.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\load.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\load_main.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\util.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_csvquery.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_csvquery.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_csvquery.vcproj Fri Feb 29 18:55:50 2008 @@ -1,173 +1,312 @@ + ProjectGUID="{207C3746-0D9C-4ADB-AF4D-876039022870}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\csv\csv_local.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\db.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\DbRecord.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\query.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\query_main.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\csv\util.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_env.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_env.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_env.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{14301406-3348-4D7A-A47B-EC6180017F50}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_env.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_lock.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_lock.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_lock.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{3505C707-1445-4E79-894A-D30CFE5E90DA}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_lock.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_mpool.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_mpool.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_mpool.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{8F1A8687-4CA8-4F49-AD58-D0ECA0E0E1CA}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_mpool.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_repquote.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_repquote.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_repquote.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{927F260A-19CF-4E55-A154-109A0BF80AE9}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_repquote\ex_rq_client.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\ex_repquote\ex_rq_main.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\ex_repquote\ex_rq_master.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\ex_repquote\ex_rq_net.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\ex_repquote\ex_rq_util.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_sequence.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_sequence.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_sequence.vcproj Fri Feb 29 18:55:50 2008 @@ -1,112 +1,222 @@ + ProjectGUID="{389384D4-75A5-4B53-A7C2-AC61375C430B}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_sequence.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_tpcb.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_tpcb.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_tpcb.vcproj Fri Feb 29 18:55:50 2008 @@ -1,203 +1,371 @@ + ProjectGUID="{B0C9B69A-89CA-4378-90E2-180F8C6DA0EB}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\ex_tpcb.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_txnguide.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_txnguide.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_txnguide.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{5A50D272-4CE6-4DBA-A20E-B4649BDAB28C}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\txn_guide\txn_guide.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/ex_txnguide_inmem.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/ex_txnguide_inmem.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/ex_txnguide_inmem.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{3C064356-0ECF-4BA2-A9F8-EA0E073F1A04}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\txn_guide\txn_guide_inmemory.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/example_database_load.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/example_database_load.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/example_database_load.vcproj Fri Feb 29 18:55:50 2008 @@ -1,113 +1,194 @@ + ProjectGUID="{40373079-658E-451A-8249-5986B2190133}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\getting_started\example_database_load.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\getting_started\gettingstarted_common.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/example_database_read.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/example_database_read.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/example_database_read.vcproj Fri Feb 29 18:55:50 2008 @@ -1,112 +1,222 @@ + ProjectGUID="{6E39EDB9-D55A-43C7-B740-9221B03FA458}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_c\getting_started\example_database_read.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_c\getting_started\gettingstarted_common.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_access.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_access.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_access.vcproj Fri Feb 29 18:55:50 2008 @@ -1,52 +1,104 @@ + ProjectGUID="{EE86A96A-D00A-44C9-8914-850E57B8E677}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_cxx\AccessExample.cpp" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_btrec.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_btrec.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_btrec.vcproj Fri Feb 29 18:55:50 2008 @@ -1,113 +1,194 @@ + ProjectGUID="{22CBF051-19CD-4E61-B5C6-B5F8072F1DD3}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_cxx\BtRecExample.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_env.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_env.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_env.vcproj Fri Feb 29 18:55:50 2008 @@ -1,143 +1,253 @@ + ProjectGUID="{E53D7716-2173-47DC-AA6A-E06867A9D5D0}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_cxx\EnvExample.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_example_database_load.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_example_database_load.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_example_database_load.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{07BA8001-E8DA-4CD2-A800-A4239741C4ED}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_cxx\getting_started\excxx_example_database_load.cpp" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\getting_started\MyDb.cpp" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_example_database_read.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_example_database_read.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_example_database_read.vcproj Fri Feb 29 18:55:50 2008 @@ -1,203 +1,371 @@ + ProjectGUID="{5F2C44DE-5466-4CF1-9962-415FFC4F3246}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\examples_cxx\getting_started\excxx_example_database_read.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\getting_started\MyDb.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_lock.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_lock.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_lock.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{10429E06-7C29-477D-8993-46773DC3FFE9}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\LockExample.cpp" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_mpool.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_mpool.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_mpool.vcproj Fri Feb 29 18:55:50 2008 @@ -1,143 +1,253 @@ + ProjectGUID="{D5938761-AD96-4C0C-9C46-BC375358DFE9}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\MpoolExample.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_sequence.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_sequence.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_sequence.vcproj Fri Feb 29 18:55:50 2008 @@ -1,22 +1,45 @@ + ProjectGUID="{A27263BC-8BED-412C-944D-7EC7D9F194EC}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\SequenceExample.cpp" + > + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_tpcb.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_tpcb.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_tpcb.vcproj Fri Feb 29 18:55:50 2008 @@ -1,203 +1,371 @@ + ProjectGUID="{47E23751-01E8-43C9-83C2-06EE68C121EF}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\TpcbExample.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_txnguide.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_txnguide.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_txnguide.vcproj Fri Feb 29 18:55:50 2008 @@ -1,234 +1,402 @@ + ProjectGUID="{3A8EA457-87A3-4F20-A993-452D104FFD16}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\txn_guide\TxnGuide.cpp" + > + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> Modified: external/db-4.4.20-vs9/build_win32/excxx_txnguide_inmem.vcproj ============================================================================== --- external/db-4.4.20-vs9/build_win32/excxx_txnguide_inmem.vcproj (original) +++ external/db-4.4.20-vs9/build_win32/excxx_txnguide_inmem.vcproj Fri Feb 29 18:55:50 2008 @@ -1,174 +1,284 @@ + ProjectGUID="{F7F26B95-3624-49CF-9A79-6C6F69B72078}" + TargetFrameworkVersion="131072" + > + Name="Win32" + /> + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> - - - + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + SuppressStartupBanner="true" + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + + + Name="VCPreLinkEventTool" + /> - - - + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + + + + + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + Name="VCPreBuildEventTool" + /> + Name="VCCustomBuildTool" + /> + Name="VCXMLDataGeneratorTool" + /> + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + Name="VCCLCompilerTool" + /> + + + + + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + > + + + + Name="VCWebServiceProxyGeneratorTool" + /> + Name="VCMIDLTool" + /> + + Name="VCManagedResourceCompilerTool" + /> + Name="VCResourceCompilerTool" + /> + Name="VCPreLinkEventTool" + /> + Name="VCLinkerTool" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + Name="VCALinkTool" + /> + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + ATLMinimizesCRunTimeLibraryUsage="false" + > + + + + + + CompileAs="0" + /> + Name="VCManagedResourceCompilerTool" + /> + + + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="1" + /> - - + Name="VCALinkTool" + /> - + Name="VCManifestTool" + /> + Name="VCXDCMakeTool" + /> + Name="VCBscMakeTool" + /> + Name="VCFxCopTool" + /> + Name="VCAppVerifierTool" + /> + Name="VCPostBuildEventTool" + /> + RelativePath="..\clib\getopt.c" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> + RelativePath="..\examples_cxx\txn_guide\TxnGuideInMemory.cpp" + > + Name="ASCII Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Release|Win32" + > + PreprocessorDefinitions="" + /> + Name="Debug|Win32" + > + PreprocessorDefinitions="" + /> + Name="ASCII Debug|Win32" + > + PreprocessorDefinitions="" + /> From python-checkins at python.org Fri Feb 29 19:08:54 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 19:08:54 +0100 (CET) Subject: [Python-checkins] r61131 - external/db-4.4.20-vs9/build_win32/this_is_for_vs9 Message-ID: <20080229180854.083FD1E4003@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 19:08:53 2008 New Revision: 61131 Added: external/db-4.4.20-vs9/build_win32/this_is_for_vs9 Log: Add marker file for vs9. Added: external/db-4.4.20-vs9/build_win32/this_is_for_vs9 ============================================================================== From python-checkins at python.org Fri Feb 29 19:15:36 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 29 Feb 2008 19:15:36 +0100 (CET) Subject: [Python-checkins] r61132 - python/trunk/Doc/tools/sphinxext/download.html Message-ID: <20080229181536.E2CD81E4003@bag.python.org> Author: georg.brandl Date: Fri Feb 29 19:15:36 2008 New Revision: 61132 Modified: python/trunk/Doc/tools/sphinxext/download.html Log: Until we got downloadable docs, stop confusing viewers by talking about a nonexisting table. Modified: python/trunk/Doc/tools/sphinxext/download.html ============================================================================== --- python/trunk/Doc/tools/sphinxext/download.html (original) +++ python/trunk/Doc/tools/sphinxext/download.html Fri Feb 29 19:15:36 2008 @@ -5,6 +5,9 @@

    Download Python {{ release }} Documentation {%- if last_updated %} (last updated on {{ last_updated }}){% endif %}

    +

    Currently, the development documentation isn't packaged for download.

    + + + {% endblock %} From python-checkins at python.org Fri Feb 29 19:17:23 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 19:17:23 +0100 (CET) Subject: [Python-checkins] r61133 - python/trunk/Tools/buildbot/external.bat Message-ID: <20080229181723.5555E1E4003@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 19:17:23 2008 New Revision: 61133 Modified: python/trunk/Tools/buildbot/external.bat Log: Build db-4.4.20 with VS9; remove VS2003 build if necessary. Modified: python/trunk/Tools/buildbot/external.bat ============================================================================== --- python/trunk/Tools/buildbot/external.bat (original) +++ python/trunk/Tools/buildbot/external.bat Fri Feb 29 19:17:23 2008 @@ -8,9 +8,14 @@ if not exist bzip2-1.0.3 svn export http://svn.python.org/projects/external/bzip2-1.0.3 @rem Sleepycat db -if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20 + at rem Remove VS 2003 builds +if exist db-4.4.20 if not exist db-4.4.20\build_win32\this_is_for_vs9 ( + echo Removing old build + rd /s/q db-4.4.20 +) +if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20-vs9 db-4.4.20 if not exist db-4.4.20\build_win32\debug\libdb44sd.lib ( - vcbuild db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static + vcbuild db-4.4.20\build_win32\db_static.vcproj "Debug|Win32" ) @rem OpenSSL From python-checkins at python.org Fri Feb 29 19:19:13 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 29 Feb 2008 19:19:13 +0100 (CET) Subject: [Python-checkins] r61134 - in doctools/trunk/sphinx: ext/refcounting.py highlighting.py Message-ID: <20080229181913.91E121E4003@bag.python.org> Author: georg.brandl Date: Fri Feb 29 19:19:13 2008 New Revision: 61134 Modified: doctools/trunk/sphinx/ext/refcounting.py doctools/trunk/sphinx/highlighting.py Log: #2207: fix if no Pygments available. Modified: doctools/trunk/sphinx/ext/refcounting.py ============================================================================== --- doctools/trunk/sphinx/ext/refcounting.py (original) +++ doctools/trunk/sphinx/ext/refcounting.py Fri Feb 29 19:19:13 2008 @@ -6,6 +6,9 @@ Supports reference count annotations for C API functions. Based on refcount.py and anno-api.py in the old Python documentation tools. + Usage: Set the `refcount_file` config value to the path to the reference + count data file. + :copyright: 2008 by Georg Brandl. :license: BSD. """ Modified: doctools/trunk/sphinx/highlighting.py ============================================================================== --- doctools/trunk/sphinx/highlighting.py (original) +++ doctools/trunk/sphinx/highlighting.py Fri Feb 29 19:19:13 2008 @@ -67,9 +67,9 @@ class PygmentsBridge(object): def __init__(self, dest='html', stylename='sphinx'): + self.dest = dest if not pygments: return - self.dest = dest if stylename == 'sphinx': style = SphinxStyle else: From python-checkins at python.org Fri Feb 29 19:21:30 2008 From: python-checkins at python.org (georg.brandl) Date: Fri, 29 Feb 2008 19:21:30 +0100 (CET) Subject: [Python-checkins] r61135 - python/trunk/Doc/make.bat Message-ID: <20080229182130.2DBF71E4020@bag.python.org> Author: georg.brandl Date: Fri Feb 29 19:21:29 2008 New Revision: 61135 Modified: python/trunk/Doc/make.bat Log: #2208: allow for non-standard HHC location. Modified: python/trunk/Doc/make.bat ============================================================================== --- python/trunk/Doc/make.bat (original) +++ python/trunk/Doc/make.bat Fri Feb 29 19:21:29 2008 @@ -1,8 +1,9 @@ - at echo off +@@echo off setlocal set SVNROOT=http://svn.python.org/projects -if "%PYTHON%" EQU "" set PYTHON=python25 +if "%PYTHON%" EQU "" set PYTHON=..\pcbuild\python +if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe if "%1" EQU "" goto help if "%1" EQU "html" goto build @@ -41,7 +42,7 @@ if not exist build\%1 mkdir build\%1 if not exist build\doctrees mkdir build\doctrees cmd /C %PYTHON% tools\sphinx-build.py -b%1 -dbuild\doctrees . build\%1 -if "%1" EQU "htmlhelp" "%ProgramFiles%\HTML Help Workshop\hhc.exe" build\htmlhelp\pydoc.hhp +if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\pydoc.hhp goto end :webrun From python-checkins at python.org Fri Feb 29 19:54:45 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 19:54:45 +0100 (CET) Subject: [Python-checkins] r61136 - python/trunk/PCbuild/build_ssl.py python/trunk/PCbuild/readme.txt python/trunk/PCbuild/x64.vsprops Message-ID: <20080229185445.B6F1C1E4009@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 19:54:45 2008 New Revision: 61136 Modified: python/trunk/PCbuild/build_ssl.py python/trunk/PCbuild/readme.txt python/trunk/PCbuild/x64.vsprops Log: Port build_ssl.py to 2.4; support HOST_PYTHON variable Modified: python/trunk/PCbuild/build_ssl.py ============================================================================== --- python/trunk/PCbuild/build_ssl.py (original) +++ python/trunk/PCbuild/build_ssl.py Fri Feb 29 19:54:45 2008 @@ -102,8 +102,11 @@ """ if not os.path.isfile(m32): return - with open(m32) as fin: - with open(makefile, 'w') as fout: + # 2.4 compatibility + fin = open(m32) + if 1: # with open(m32) as fin: + fout = open(makefile, 'w') + if 1: # with open(makefile, 'w') as fout: for line in fin: line = line.replace("=tmp32", "=tmp64") line = line.replace("=out32", "=out64") @@ -121,9 +124,13 @@ """ if not os.path.isfile(makefile): return - with open(makefile) as fin: + # 2.4 compatibility + fin = open(makefile) + if 1: # with open(makefile) as fin: lines = fin.readlines() - with open(makefile, 'w') as fout: + fin.close() + fout = open(makefile, 'w') + if 1: # with open(makefile, 'w') as fout: for line in lines: if line.startswith("PERL="): continue @@ -139,6 +146,7 @@ line = line + noalgo line = line + '\n' fout.write(line) + fout.close() def run_configure(configure, do_script): print("perl Configure "+configure) Modified: python/trunk/PCbuild/readme.txt ============================================================================== --- python/trunk/PCbuild/readme.txt (original) +++ python/trunk/PCbuild/readme.txt Fri Feb 29 19:54:45 2008 @@ -303,7 +303,8 @@ ------------------ The build process for AMD64 / x64 is very similar to standard builds. You just -have to set x64 as platform. +have to set x64 as platform. In addition, the HOST_PYTHON environment variable +must point to a Python interpreter (at least 2.4), to support cross-compilation. Building Python Using the free MS Toolkit Compiler -------------------------------------------------- Modified: python/trunk/PCbuild/x64.vsprops ============================================================================== --- python/trunk/PCbuild/x64.vsprops (original) +++ python/trunk/PCbuild/x64.vsprops Fri Feb 29 19:54:45 2008 @@ -15,4 +15,8 @@ Name="VCLinkerTool" TargetMachine="17" /> + From buildbot at python.org Fri Feb 29 20:32:34 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 19:32:34 +0000 Subject: [Python-checkins] buildbot failure in x86 XP trunk Message-ID: <20080229193234.CC7721E401A@bag.python.org> The Buildbot has detected a new failure of x86 XP trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP%20trunk/builds/6 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: nelson-windows Build Reason: The web-page 'force build' button was pressed by 'Trent Nelson': Build Source Stamp: [branch trunk] HEAD Blamelist: BUILD FAILED: failed compile sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 21:10:19 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 20:10:19 +0000 Subject: [Python-checkins] buildbot failure in PPC64 Debian trunk Message-ID: <20080229201019.E751D1E4009@bag.python.org> The Buildbot has detected a new failure of PPC64 Debian trunk. Full details are available at: http://www.python.org/dev/buildbot/all/PPC64%20Debian%20trunk/builds/428 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: klose-debian-ppc64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 21:26:53 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 21:26:53 +0100 (CET) Subject: [Python-checkins] r61138 - python/trunk/PCbuild/pcbuild.sln Message-ID: <20080229202653.D26481E4009@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 21:26:53 2008 New Revision: 61138 Modified: python/trunk/PCbuild/pcbuild.sln Log: Make _hashlib depend on pythoncore. Modified: python/trunk/PCbuild/pcbuild.sln ============================================================================== --- python/trunk/PCbuild/pcbuild.sln (original) +++ python/trunk/PCbuild/pcbuild.sln Fri Feb 29 21:26:53 2008 @@ -109,6 +109,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}" + ProjectSection(ProjectDependencies) = postProject + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From buildbot at python.org Fri Feb 29 21:35:35 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 20:35:35 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080229203536.171721E4021@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/976 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: The web-page 'rebuild' button was pressed by '': Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed svn sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 21:54:44 2008 From: python-checkins at python.org (martin.v.loewis) Date: Fri, 29 Feb 2008 21:54:44 +0100 (CET) Subject: [Python-checkins] r61139 - python/trunk/Tools/msi/msi.py Message-ID: <20080229205444.D74161E4009@bag.python.org> Author: martin.v.loewis Date: Fri Feb 29 21:54:44 2008 New Revision: 61139 Modified: python/trunk/Tools/msi/msi.py Log: Package Tcl from tcltk64 on AMD64. Modified: python/trunk/Tools/msi/msi.py ============================================================================== --- python/trunk/Tools/msi/msi.py (original) +++ python/trunk/Tools/msi/msi.py Fri Feb 29 21:54:44 2008 @@ -1021,8 +1021,10 @@ sqlite_arch = "/ia64" elif msilib.msi_type=="x64;1033": sqlite_arch = "/amd64" + tclsuffix = "64" else: sqlite_arch = "" + tclsuffix = "" lib.add_file(srcdir+"/"+sqlite_dir+sqlite_arch+"/sqlite3.dll") if have_tcl: if not os.path.exists("%s/%s/_tkinter.pyd" % (srcdir, PCBUILD)): @@ -1031,7 +1033,7 @@ lib.start_component("TkDLLs", tcltk) lib.add_file("_tkinter.pyd") dlls.append("_tkinter.pyd") - tcldir = os.path.normpath(srcdir+"/../tcltk/bin") + tcldir = os.path.normpath(srcdir+("/../tcltk%s/bin" % tclsuffix)) for f in glob.glob1(tcldir, "*.dll"): lib.add_file(f, src=os.path.join(tcldir, f)) # check whether there are any unknown extensions @@ -1055,7 +1057,7 @@ lib.add_file('libpython%s%s.a' % (major, minor)) if have_tcl: # Add Tcl/Tk - tcldirs = [(root, '../tcltk/lib', 'tcl')] + tcldirs = [(root, '../tcltk%s/lib' % tclsuffix, 'tcl')] tcltk.set_current() while tcldirs: parent, phys, dir = tcldirs.pop() From buildbot at python.org Fri Feb 29 21:57:10 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 20:57:10 +0000 Subject: [Python-checkins] buildbot failure in g4 osx.4 trunk Message-ID: <20080229205710.760671E4027@bag.python.org> The Buildbot has detected a new failure of g4 osx.4 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/g4%20osx.4%20trunk/builds/2947 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: psf-g4 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed failed slave lost sincerely, -The Buildbot From buildbot at python.org Fri Feb 29 22:42:20 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 21:42:20 +0000 Subject: [Python-checkins] buildbot failure in alpha Tru64 5.1 trunk Message-ID: <20080229214222.247C01E401A@bag.python.org> The Buildbot has detected a new failure of alpha Tru64 5.1 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/2624 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: norwitz-tru64 Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: 4 tests failed: test_asynchat test_signal test_smtplib test_socket ====================================================================== FAIL: testSend (test.test_smtplib.DebuggingServerTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/net/taipan/scratch1/nnorwitz/python/trunk.norwitz-tru64/build/Lib/test/test_smtplib.py", line 228, in testSend self.assertEqual(self.output.getvalue(), mexpect) AssertionError: '---------- MESSAGE FOLLOWS ----------\nA test message\n------------ END MESSAGE ------------\nwarning: unhandled exception\n' != '---------- MESSAGE FOLLOWS ----------\nA test message\n------------ END MESSAGE ------------\n' sincerely, -The Buildbot From python-checkins at python.org Fri Feb 29 23:08:41 2008 From: python-checkins at python.org (gerhard.haering) Date: Fri, 29 Feb 2008 23:08:41 +0100 (CET) Subject: [Python-checkins] r61141 - in python/trunk: Lib/sqlite3/test/dbapi.py Lib/sqlite3/test/hooks.py Lib/sqlite3/test/py25tests.py Lib/sqlite3/test/regression.py Lib/sqlite3/test/transactions.py Lib/sqlite3/test/types.py Lib/test/test_sqlite.py Modules/_sqlite/connection.c Modules/_sqlite/connection.h Modules/_sqlite/cursor.c Modules/_sqlite/cursor.h Modules/_sqlite/microprotocols.h Modules/_sqlite/module.c Modules/_sqlite/module.h Modules/_sqlite/statement.c Modules/_sqlite/util.c Modules/_sqlite/util.h Message-ID: <20080229220841.D028F1E4009@bag.python.org> Author: gerhard.haering Date: Fri Feb 29 23:08:41 2008 New Revision: 61141 Added: python/trunk/Lib/sqlite3/test/py25tests.py Modified: python/trunk/Lib/sqlite3/test/dbapi.py python/trunk/Lib/sqlite3/test/hooks.py python/trunk/Lib/sqlite3/test/regression.py python/trunk/Lib/sqlite3/test/transactions.py python/trunk/Lib/sqlite3/test/types.py python/trunk/Lib/test/test_sqlite.py python/trunk/Modules/_sqlite/connection.c python/trunk/Modules/_sqlite/connection.h python/trunk/Modules/_sqlite/cursor.c python/trunk/Modules/_sqlite/cursor.h python/trunk/Modules/_sqlite/microprotocols.h python/trunk/Modules/_sqlite/module.c python/trunk/Modules/_sqlite/module.h python/trunk/Modules/_sqlite/statement.c python/trunk/Modules/_sqlite/util.c python/trunk/Modules/_sqlite/util.h Log: Updated to pysqlite 2.4.1. Documentation additions will come later. Modified: python/trunk/Lib/sqlite3/test/dbapi.py ============================================================================== --- python/trunk/Lib/sqlite3/test/dbapi.py (original) +++ python/trunk/Lib/sqlite3/test/dbapi.py Fri Feb 29 23:08:41 2008 @@ -1,7 +1,7 @@ #-*- coding: ISO-8859-1 -*- # pysqlite2/test/dbapi.py: tests for DB-API compliance # -# Copyright (C) 2004-2005 Gerhard H?ring +# Copyright (C) 2004-2007 Gerhard H?ring # # This file is part of pysqlite. # @@ -22,6 +22,7 @@ # 3. This notice may not be removed or altered from any source distribution. import unittest +import sys import threading import sqlite3 as sqlite @@ -223,12 +224,45 @@ except sqlite.ProgrammingError: pass + def CheckExecuteParamList(self): + self.cu.execute("insert into test(name) values ('foo')") + self.cu.execute("select name from test where name=?", ["foo"]) + row = self.cu.fetchone() + self.failUnlessEqual(row[0], "foo") + + def CheckExecuteParamSequence(self): + class L(object): + def __len__(self): + return 1 + def __getitem__(self, x): + assert x == 0 + return "foo" + + self.cu.execute("insert into test(name) values ('foo')") + self.cu.execute("select name from test where name=?", L()) + row = self.cu.fetchone() + self.failUnlessEqual(row[0], "foo") + def CheckExecuteDictMapping(self): self.cu.execute("insert into test(name) values ('foo')") self.cu.execute("select name from test where name=:name", {"name": "foo"}) row = self.cu.fetchone() self.failUnlessEqual(row[0], "foo") + def CheckExecuteDictMapping_Mapping(self): + # Test only works with Python 2.5 or later + if sys.version_info < (2, 5, 0): + return + + class D(dict): + def __missing__(self, key): + return "foo" + + self.cu.execute("insert into test(name) values ('foo')") + self.cu.execute("select name from test where name=:name", D()) + row = self.cu.fetchone() + self.failUnlessEqual(row[0], "foo") + def CheckExecuteDictMappingTooLittleArgs(self): self.cu.execute("insert into test(name) values ('foo')") try: @@ -378,6 +412,12 @@ res = self.cu.fetchmany(100) self.failUnlessEqual(res, []) + def CheckFetchmanyKwArg(self): + """Checks if fetchmany works with keyword arguments""" + self.cu.execute("select name from test") + res = self.cu.fetchmany(size=100) + self.failUnlessEqual(len(res), 1) + def CheckFetchall(self): self.cu.execute("select name from test") res = self.cu.fetchall() Modified: python/trunk/Lib/sqlite3/test/hooks.py ============================================================================== --- python/trunk/Lib/sqlite3/test/hooks.py (original) +++ python/trunk/Lib/sqlite3/test/hooks.py Fri Feb 29 23:08:41 2008 @@ -1,7 +1,7 @@ #-*- coding: ISO-8859-1 -*- # pysqlite2/test/hooks.py: tests for various SQLite-specific hooks # -# Copyright (C) 2006 Gerhard H?ring +# Copyright (C) 2006-2007 Gerhard H?ring # # This file is part of pysqlite. # @@ -21,7 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import unittest +import os, unittest import sqlite3 as sqlite class CollationTests(unittest.TestCase): @@ -105,9 +105,80 @@ if not e.args[0].startswith("no such collation sequence"): self.fail("wrong OperationalError raised") +class ProgressTests(unittest.TestCase): + def CheckProgressHandlerUsed(self): + """ + Test that the progress handler is invoked once it is set. + """ + con = sqlite.connect(":memory:") + progress_calls = [] + def progress(): + progress_calls.append(None) + return 0 + con.set_progress_handler(progress, 1) + con.execute(""" + create table foo(a, b) + """) + self.failUnless(progress_calls) + + + def CheckOpcodeCount(self): + """ + Test that the opcode argument is respected. + """ + con = sqlite.connect(":memory:") + progress_calls = [] + def progress(): + progress_calls.append(None) + return 0 + con.set_progress_handler(progress, 1) + curs = con.cursor() + curs.execute(""" + create table foo (a, b) + """) + first_count = len(progress_calls) + progress_calls = [] + con.set_progress_handler(progress, 2) + curs.execute(""" + create table bar (a, b) + """) + second_count = len(progress_calls) + self.failUnless(first_count > second_count) + + def CheckCancelOperation(self): + """ + Test that returning a non-zero value stops the operation in progress. + """ + con = sqlite.connect(":memory:") + progress_calls = [] + def progress(): + progress_calls.append(None) + return 1 + con.set_progress_handler(progress, 1) + curs = con.cursor() + self.assertRaises( + sqlite.OperationalError, + curs.execute, + "create table bar (a, b)") + + def CheckClearHandler(self): + """ + Test that setting the progress handler to None clears the previously set handler. + """ + con = sqlite.connect(":memory:") + action = 0 + def progress(): + action = 1 + return 0 + con.set_progress_handler(progress, 1) + con.set_progress_handler(None, 1) + con.execute("select 1 union select 2 union select 3").fetchall() + self.failUnlessEqual(action, 0, "progress handler was not cleared") + def suite(): collation_suite = unittest.makeSuite(CollationTests, "Check") - return unittest.TestSuite((collation_suite,)) + progress_suite = unittest.makeSuite(ProgressTests, "Check") + return unittest.TestSuite((collation_suite, progress_suite)) def test(): runner = unittest.TextTestRunner() Added: python/trunk/Lib/sqlite3/test/py25tests.py ============================================================================== --- (empty file) +++ python/trunk/Lib/sqlite3/test/py25tests.py Fri Feb 29 23:08:41 2008 @@ -0,0 +1,80 @@ +#-*- coding: ISO-8859-1 -*- +# pysqlite2/test/regression.py: pysqlite regression tests +# +# Copyright (C) 2007 Gerhard H?ring +# +# This file is part of pysqlite. +# +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# +# Permission is granted to anyone to use this software for any purpose, +# including commercial applications, and to alter it and redistribute it +# freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. If you use this software +# in a product, an acknowledgment in the product documentation would be +# appreciated but is not required. +# 2. Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# 3. This notice may not be removed or altered from any source distribution. + +from __future__ import with_statement +import unittest +import sqlite3 as sqlite + +did_rollback = False + +class MyConnection(sqlite.Connection): + def rollback(self): + global did_rollback + did_rollback = True + sqlite.Connection.rollback(self) + +class ContextTests(unittest.TestCase): + def setUp(self): + global did_rollback + self.con = sqlite.connect(":memory:", factory=MyConnection) + self.con.execute("create table test(c unique)") + did_rollback = False + + def tearDown(self): + self.con.close() + + def CheckContextManager(self): + """Can the connection be used as a context manager at all?""" + with self.con: + pass + + def CheckContextManagerCommit(self): + """Is a commit called in the context manager?""" + with self.con: + self.con.execute("insert into test(c) values ('foo')") + self.con.rollback() + count = self.con.execute("select count(*) from test").fetchone()[0] + self.failUnlessEqual(count, 1) + + def CheckContextManagerRollback(self): + """Is a rollback called in the context manager?""" + global did_rollback + self.failUnlessEqual(did_rollback, False) + try: + with self.con: + self.con.execute("insert into test(c) values (4)") + self.con.execute("insert into test(c) values (4)") + except sqlite.IntegrityError: + pass + self.failUnlessEqual(did_rollback, True) + +def suite(): + ctx_suite = unittest.makeSuite(ContextTests, "Check") + return unittest.TestSuite((ctx_suite,)) + +def test(): + runner = unittest.TextTestRunner() + runner.run(suite()) + +if __name__ == "__main__": + test() Modified: python/trunk/Lib/sqlite3/test/regression.py ============================================================================== --- python/trunk/Lib/sqlite3/test/regression.py (original) +++ python/trunk/Lib/sqlite3/test/regression.py Fri Feb 29 23:08:41 2008 @@ -1,7 +1,7 @@ #-*- coding: ISO-8859-1 -*- # pysqlite2/test/regression.py: pysqlite regression tests # -# Copyright (C) 2006 Gerhard H?ring +# Copyright (C) 2006-2007 Gerhard H?ring # # This file is part of pysqlite. # @@ -21,6 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. +import datetime import unittest import sqlite3 as sqlite @@ -79,6 +80,79 @@ cur.fetchone() cur.fetchone() + def CheckStatementFinalizationOnCloseDb(self): + # pysqlite versions <= 2.3.3 only finalized statements in the statement + # cache when closing the database. statements that were still + # referenced in cursors weren't closed an could provoke " + # "OperationalError: Unable to close due to unfinalised statements". + con = sqlite.connect(":memory:") + cursors = [] + # default statement cache size is 100 + for i in range(105): + cur = con.cursor() + cursors.append(cur) + cur.execute("select 1 x union select " + str(i)) + con.close() + + def CheckOnConflictRollback(self): + if sqlite.sqlite_version_info < (3, 2, 2): + return + con = sqlite.connect(":memory:") + con.execute("create table foo(x, unique(x) on conflict rollback)") + con.execute("insert into foo(x) values (1)") + try: + con.execute("insert into foo(x) values (1)") + except sqlite.DatabaseError: + pass + con.execute("insert into foo(x) values (2)") + try: + con.commit() + except sqlite.OperationalError: + self.fail("pysqlite knew nothing about the implicit ROLLBACK") + + def CheckWorkaroundForBuggySqliteTransferBindings(self): + """ + pysqlite would crash with older SQLite versions unless + a workaround is implemented. + """ + self.con.execute("create table if not exists foo(bar)") + self.con.execute("create table if not exists foo(bar)") + + def CheckEmptyStatement(self): + """ + pysqlite used to segfault with SQLite versions 3.5.x. These return NULL + for "no-operation" statements + """ + self.con.execute("") + + def CheckUnicodeConnect(self): + """ + With pysqlite 2.4.0 you needed to use a string or a APSW connection + object for opening database connections. + + Formerly, both bytestrings and unicode strings used to work. + + Let's make sure unicode strings work in the future. + """ + con = sqlite.connect(u":memory:") + con.close() + + def CheckTypeMapUsage(self): + """ + pysqlite until 2.4.1 did not rebuild the row_cast_map when recompiling + a statement. This test exhibits the problem. + """ + SELECT = "select * from foo" + con = sqlite.connect(":memory:",detect_types=sqlite.PARSE_DECLTYPES) + con.execute("create table foo(bar timestamp)") + con.execute("insert into foo(bar) values (?)", (datetime.datetime.now(),)) + con.execute(SELECT) + con.execute("drop table foo") + con.execute("create table foo(bar integer)") + con.execute("insert into foo(bar) values (5)") + con.execute(SELECT) + + def suite(): regression_suite = unittest.makeSuite(RegressionTests, "Check") return unittest.TestSuite((regression_suite,)) Modified: python/trunk/Lib/sqlite3/test/transactions.py ============================================================================== --- python/trunk/Lib/sqlite3/test/transactions.py (original) +++ python/trunk/Lib/sqlite3/test/transactions.py Fri Feb 29 23:08:41 2008 @@ -1,7 +1,7 @@ #-*- coding: ISO-8859-1 -*- # pysqlite2/test/transactions.py: tests transactions # -# Copyright (C) 2005 Gerhard H?ring +# Copyright (C) 2005-2007 Gerhard H?ring # # This file is part of pysqlite. # @@ -21,6 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. +import sys import os, unittest import sqlite3 as sqlite @@ -119,6 +120,23 @@ except: self.fail("should have raised an OperationalError") + def CheckLocking(self): + """ + This tests the improved concurrency with pysqlite 2.3.4. You needed + to roll back con2 before you could commit con1. + """ + self.cur1.execute("create table test(i)") + self.cur1.execute("insert into test(i) values (5)") + try: + self.cur2.execute("insert into test(i) values (5)") + self.fail("should have raised an OperationalError") + except sqlite.OperationalError: + pass + except: + self.fail("should have raised an OperationalError") + # NO self.con2.rollback() HERE!!! + self.con1.commit() + class SpecialCommandTests(unittest.TestCase): def setUp(self): self.con = sqlite.connect(":memory:") Modified: python/trunk/Lib/sqlite3/test/types.py ============================================================================== --- python/trunk/Lib/sqlite3/test/types.py (original) +++ python/trunk/Lib/sqlite3/test/types.py Fri Feb 29 23:08:41 2008 @@ -1,7 +1,7 @@ #-*- coding: ISO-8859-1 -*- # pysqlite2/test/types.py: tests for type conversion and detection # -# Copyright (C) 2005 Gerhard H?ring +# Copyright (C) 2005-2007 Gerhard H?ring # # This file is part of pysqlite. # @@ -21,7 +21,7 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import bz2, datetime +import zlib, datetime import unittest import sqlite3 as sqlite @@ -287,7 +287,7 @@ class BinaryConverterTests(unittest.TestCase): def convert(s): - return bz2.decompress(s) + return zlib.decompress(s) convert = staticmethod(convert) def setUp(self): @@ -299,7 +299,7 @@ def CheckBinaryInputForConverter(self): testdata = "abcdefg" * 10 - result = self.con.execute('select ? as "x [bin]"', (buffer(bz2.compress(testdata)),)).fetchone()[0] + result = self.con.execute('select ? as "x [bin]"', (buffer(zlib.compress(testdata)),)).fetchone()[0] self.failUnlessEqual(testdata, result) class DateTimeTests(unittest.TestCase): @@ -331,7 +331,8 @@ if sqlite.sqlite_version_info < (3, 1): return - now = datetime.datetime.utcnow() + # SQLite's current_timestamp uses UTC time, while datetime.datetime.now() uses local time. + now = datetime.datetime.now() self.cur.execute("insert into test(ts) values (current_timestamp)") self.cur.execute("select ts from test") ts = self.cur.fetchone()[0] Modified: python/trunk/Lib/test/test_sqlite.py ============================================================================== --- python/trunk/Lib/test/test_sqlite.py (original) +++ python/trunk/Lib/test/test_sqlite.py Fri Feb 29 23:08:41 2008 @@ -4,13 +4,13 @@ import _sqlite3 except ImportError: raise TestSkipped('no sqlite available') -from sqlite3.test import (dbapi, types, userfunctions, +from sqlite3.test import (dbapi, types, userfunctions, py25tests, factory, transactions, hooks, regression) def test_main(): run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(), - factory.suite(), transactions.suite(), hooks.suite(), - regression.suite()) + py25tests.suite(), factory.suite(), transactions.suite(), + hooks.suite(), regression.suite()) if __name__ == "__main__": test_main() Modified: python/trunk/Modules/_sqlite/connection.c ============================================================================== --- python/trunk/Modules/_sqlite/connection.c (original) +++ python/trunk/Modules/_sqlite/connection.c Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* connection.c - the connection type * - * Copyright (C) 2004-2006 Gerhard H?ring + * Copyright (C) 2004-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -32,6 +32,9 @@ #include "pythread.h" +#define ACTION_FINALIZE 1 +#define ACTION_RESET 2 + static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level); @@ -51,7 +54,7 @@ { static char *kwlist[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", NULL, NULL}; - char* database; + PyObject* database; int detect_types = 0; PyObject* isolation_level = NULL; PyObject* factory = NULL; @@ -59,11 +62,15 @@ int cached_statements = 100; double timeout = 5.0; int rc; + PyObject* class_attr = NULL; + PyObject* class_attr_str = NULL; + int is_apsw_connection = 0; + PyObject* database_utf8; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|diOiOi", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOi", kwlist, &database, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements)) { - return -1; + return -1; } self->begin_statement = NULL; @@ -77,13 +84,53 @@ Py_INCREF(&PyUnicode_Type); self->text_factory = (PyObject*)&PyUnicode_Type; - Py_BEGIN_ALLOW_THREADS - rc = sqlite3_open(database, &self->db); - Py_END_ALLOW_THREADS + if (PyString_Check(database) || PyUnicode_Check(database)) { + if (PyString_Check(database)) { + database_utf8 = database; + Py_INCREF(database_utf8); + } else { + database_utf8 = PyUnicode_AsUTF8String(database); + if (!database_utf8) { + return -1; + } + } - if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); - return -1; + Py_BEGIN_ALLOW_THREADS + rc = sqlite3_open(PyString_AsString(database_utf8), &self->db); + Py_END_ALLOW_THREADS + + Py_DECREF(database_utf8); + + if (rc != SQLITE_OK) { + _pysqlite_seterror(self->db, NULL); + return -1; + } + } else { + /* Create a pysqlite connection from a APSW connection */ + class_attr = PyObject_GetAttrString(database, "__class__"); + if (class_attr) { + class_attr_str = PyObject_Str(class_attr); + if (class_attr_str) { + if (strcmp(PyString_AsString(class_attr_str), "") == 0) { + /* In the APSW Connection object, the first entry after + * PyObject_HEAD is the sqlite3* we want to get hold of. + * Luckily, this is the same layout as we have in our + * pysqlite_Connection */ + self->db = ((pysqlite_Connection*)database)->db; + + Py_INCREF(database); + self->apsw_connection = database; + is_apsw_connection = 1; + } + } + } + Py_XDECREF(class_attr_str); + Py_XDECREF(class_attr); + + if (!is_apsw_connection) { + PyErr_SetString(PyExc_ValueError, "database parameter must be string or APSW Connection object"); + return -1; + } } if (!isolation_level) { @@ -169,7 +216,8 @@ self->statement_cache->decref_factory = 0; } -void pysqlite_reset_all_statements(pysqlite_Connection* self) +/* action in (ACTION_RESET, ACTION_FINALIZE) */ +void pysqlite_do_all_statements(pysqlite_Connection* self, int action) { int i; PyObject* weakref; @@ -179,13 +227,19 @@ weakref = PyList_GetItem(self->statements, i); statement = PyWeakref_GetObject(weakref); if (statement != Py_None) { - (void)pysqlite_statement_reset((pysqlite_Statement*)statement); + if (action == ACTION_RESET) { + (void)pysqlite_statement_reset((pysqlite_Statement*)statement); + } else { + (void)pysqlite_statement_finalize((pysqlite_Statement*)statement); + } } } } void pysqlite_connection_dealloc(pysqlite_Connection* self) { + PyObject* ret = NULL; + Py_XDECREF(self->statement_cache); /* Clean up if user has not called .close() explicitly. */ @@ -193,6 +247,10 @@ Py_BEGIN_ALLOW_THREADS sqlite3_close(self->db); Py_END_ALLOW_THREADS + } else if (self->apsw_connection) { + ret = PyObject_CallMethod(self->apsw_connection, "close", ""); + Py_XDECREF(ret); + Py_XDECREF(self->apsw_connection); } if (self->begin_statement) { @@ -205,7 +263,7 @@ Py_XDECREF(self->collations); Py_XDECREF(self->statements); - Py_TYPE(self)->tp_free((PyObject*)self); + self->ob_type->tp_free((PyObject*)self); } PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) @@ -241,24 +299,33 @@ PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args) { + PyObject* ret; int rc; if (!pysqlite_check_thread(self)) { return NULL; } - pysqlite_flush_statement_cache(self); + pysqlite_do_all_statements(self, ACTION_FINALIZE); if (self->db) { - Py_BEGIN_ALLOW_THREADS - rc = sqlite3_close(self->db); - Py_END_ALLOW_THREADS - - if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); - return NULL; - } else { + if (self->apsw_connection) { + ret = PyObject_CallMethod(self->apsw_connection, "close", ""); + Py_XDECREF(ret); + Py_XDECREF(self->apsw_connection); + self->apsw_connection = NULL; self->db = NULL; + } else { + Py_BEGIN_ALLOW_THREADS + rc = sqlite3_close(self->db); + Py_END_ALLOW_THREADS + + if (rc != SQLITE_OK) { + _pysqlite_seterror(self->db, NULL); + return NULL; + } else { + self->db = NULL; + } } } @@ -292,7 +359,7 @@ Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, statement); goto error; } @@ -300,7 +367,7 @@ if (rc == SQLITE_DONE) { self->inTransaction = 1; } else { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, statement); } Py_BEGIN_ALLOW_THREADS @@ -308,7 +375,7 @@ Py_END_ALLOW_THREADS if (rc != SQLITE_OK && !PyErr_Occurred()) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); } error: @@ -335,7 +402,7 @@ rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail); Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); goto error; } @@ -343,14 +410,14 @@ if (rc == SQLITE_DONE) { self->inTransaction = 0; } else { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, statement); } Py_BEGIN_ALLOW_THREADS rc = sqlite3_finalize(statement); Py_END_ALLOW_THREADS if (rc != SQLITE_OK && !PyErr_Occurred()) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); } } @@ -375,13 +442,13 @@ } if (self->inTransaction) { - pysqlite_reset_all_statements(self); + pysqlite_do_all_statements(self, ACTION_RESET); Py_BEGIN_ALLOW_THREADS rc = sqlite3_prepare(self->db, "ROLLBACK", -1, &statement, &tail); Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); goto error; } @@ -389,14 +456,14 @@ if (rc == SQLITE_DONE) { self->inTransaction = 0; } else { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, statement); } Py_BEGIN_ALLOW_THREADS rc = sqlite3_finalize(statement); Py_END_ALLOW_THREADS if (rc != SQLITE_OK && !PyErr_Occurred()) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); } } @@ -762,6 +829,33 @@ return rc; } +static int _progress_handler(void* user_arg) +{ + int rc; + PyObject *ret; + PyGILState_STATE gilstate; + + gilstate = PyGILState_Ensure(); + ret = PyObject_CallFunction((PyObject*)user_arg, ""); + + if (!ret) { + if (_enable_callback_tracebacks) { + PyErr_Print(); + } else { + PyErr_Clear(); + } + + /* abort query if error occured */ + rc = 1; + } else { + rc = (int)PyObject_IsTrue(ret); + } + + Py_DECREF(ret); + PyGILState_Release(gilstate); + return rc; +} + PyObject* pysqlite_connection_set_authorizer(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) { PyObject* authorizer_cb; @@ -787,6 +881,30 @@ } } +PyObject* pysqlite_connection_set_progress_handler(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) +{ + PyObject* progress_handler; + int n; + + static char *kwlist[] = { "progress_handler", "n", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi:set_progress_handler", + kwlist, &progress_handler, &n)) { + return NULL; + } + + if (progress_handler == Py_None) { + /* None clears the progress handler previously set */ + sqlite3_progress_handler(self->db, 0, 0, (void*)0); + } else { + sqlite3_progress_handler(self->db, n, _progress_handler, progress_handler); + PyDict_SetItem(self->function_pinboard, progress_handler, Py_None); + } + + Py_INCREF(Py_None); + return Py_None; +} + int pysqlite_check_thread(pysqlite_Connection* self) { if (self->check_same_thread) { @@ -892,7 +1010,8 @@ } else if (rc == PYSQLITE_SQL_WRONG_TYPE) { PyErr_SetString(pysqlite_Warning, "SQL is of wrong type. Must be string or unicode."); } else { - _pysqlite_seterror(self->db); + (void)pysqlite_statement_reset(statement); + _pysqlite_seterror(self->db, NULL); } Py_DECREF(statement); @@ -1134,7 +1253,7 @@ (callable != Py_None) ? pysqlite_collation_callback : NULL); if (rc != SQLITE_OK) { PyDict_DelItem(self->collations, uppercase_name); - _pysqlite_seterror(self->db); + _pysqlite_seterror(self->db, NULL); goto finally; } @@ -1151,6 +1270,44 @@ return retval; } +/* Called when the connection is used as a context manager. Returns itself as a + * convenience to the caller. */ +static PyObject * +pysqlite_connection_enter(pysqlite_Connection* self, PyObject* args) +{ + Py_INCREF(self); + return (PyObject*)self; +} + +/** Called when the connection is used as a context manager. If there was any + * exception, a rollback takes place; otherwise we commit. */ +static PyObject * +pysqlite_connection_exit(pysqlite_Connection* self, PyObject* args) +{ + PyObject* exc_type, *exc_value, *exc_tb; + char* method_name; + PyObject* result; + + if (!PyArg_ParseTuple(args, "OOO", &exc_type, &exc_value, &exc_tb)) { + return NULL; + } + + if (exc_type == Py_None && exc_value == Py_None && exc_tb == Py_None) { + method_name = "commit"; + } else { + method_name = "rollback"; + } + + result = PyObject_CallMethod((PyObject*)self, method_name, ""); + if (!result) { + return NULL; + } + Py_DECREF(result); + + Py_INCREF(Py_False); + return Py_False; +} + static char connection_doc[] = PyDoc_STR("SQLite database connection object."); @@ -1175,6 +1332,8 @@ PyDoc_STR("Creates a new aggregate. Non-standard.")}, {"set_authorizer", (PyCFunction)pysqlite_connection_set_authorizer, METH_VARARGS|METH_KEYWORDS, PyDoc_STR("Sets authorizer callback. Non-standard.")}, + {"set_progress_handler", (PyCFunction)pysqlite_connection_set_progress_handler, METH_VARARGS|METH_KEYWORDS, + PyDoc_STR("Sets progress handler callback. Non-standard.")}, {"execute", (PyCFunction)pysqlite_connection_execute, METH_VARARGS, PyDoc_STR("Executes a SQL statement. Non-standard.")}, {"executemany", (PyCFunction)pysqlite_connection_executemany, METH_VARARGS, @@ -1185,6 +1344,10 @@ PyDoc_STR("Creates a collation function. Non-standard.")}, {"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS, PyDoc_STR("Abort any pending database operation. Non-standard.")}, + {"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS, + PyDoc_STR("For context manager. Non-standard.")}, + {"__exit__", (PyCFunction)pysqlite_connection_exit, METH_VARARGS, + PyDoc_STR("For context manager. Non-standard.")}, {NULL, NULL} }; Modified: python/trunk/Modules/_sqlite/connection.h ============================================================================== --- python/trunk/Modules/_sqlite/connection.h (original) +++ python/trunk/Modules/_sqlite/connection.h Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* connection.h - definitions for the connection type * - * Copyright (C) 2004-2006 Gerhard H?ring + * Copyright (C) 2004-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -95,6 +95,11 @@ /* a dictionary of registered collation name => collation callable mappings */ PyObject* collations; + /* if our connection was created from a APSW connection, we keep a + * reference to the APSW connection around and get rid of it in our + * destructor */ + PyObject* apsw_connection; + /* Exception objects */ PyObject* Warning; PyObject* Error; Modified: python/trunk/Modules/_sqlite/cursor.c ============================================================================== --- python/trunk/Modules/_sqlite/cursor.c (original) +++ python/trunk/Modules/_sqlite/cursor.c Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* cursor.c - the cursor type * - * Copyright (C) 2004-2006 Gerhard H?ring + * Copyright (C) 2004-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -80,7 +80,7 @@ if (!PyArg_ParseTuple(args, "O!", &pysqlite_ConnectionType, &connection)) { - return -1; + return -1; } Py_INCREF(connection); @@ -435,7 +435,7 @@ if (multiple) { /* executemany() */ if (!PyArg_ParseTuple(args, "OO", &operation, &second_argument)) { - return NULL; + return NULL; } if (!PyString_Check(operation) && !PyUnicode_Check(operation)) { @@ -457,7 +457,7 @@ } else { /* execute() */ if (!PyArg_ParseTuple(args, "O|O", &operation, &second_argument)) { - return NULL; + return NULL; } if (!PyString_Check(operation) && !PyUnicode_Check(operation)) { @@ -506,16 +506,47 @@ operation_cstr = PyString_AsString(operation_bytestr); } - /* reset description and rowcount */ + /* reset description */ Py_DECREF(self->description); Py_INCREF(Py_None); self->description = Py_None; - Py_DECREF(self->rowcount); - self->rowcount = PyInt_FromLong(-1L); - if (!self->rowcount) { + func_args = PyTuple_New(1); + if (!func_args) { goto error; } + Py_INCREF(operation); + if (PyTuple_SetItem(func_args, 0, operation) != 0) { + goto error; + } + + if (self->statement) { + (void)pysqlite_statement_reset(self->statement); + Py_DECREF(self->statement); + } + + self->statement = (pysqlite_Statement*)pysqlite_cache_get(self->connection->statement_cache, func_args); + Py_DECREF(func_args); + + if (!self->statement) { + goto error; + } + + if (self->statement->in_use) { + Py_DECREF(self->statement); + self->statement = PyObject_New(pysqlite_Statement, &pysqlite_StatementType); + if (!self->statement) { + goto error; + } + rc = pysqlite_statement_create(self->statement, self->connection, operation); + if (rc != SQLITE_OK) { + self->statement = 0; + goto error; + } + } + + pysqlite_statement_reset(self->statement); + pysqlite_statement_mark_dirty(self->statement); statement_type = detect_statement_type(operation_cstr); if (self->connection->begin_statement) { @@ -553,43 +584,6 @@ } } - func_args = PyTuple_New(1); - if (!func_args) { - goto error; - } - Py_INCREF(operation); - if (PyTuple_SetItem(func_args, 0, operation) != 0) { - goto error; - } - - if (self->statement) { - (void)pysqlite_statement_reset(self->statement); - Py_DECREF(self->statement); - } - - self->statement = (pysqlite_Statement*)pysqlite_cache_get(self->connection->statement_cache, func_args); - Py_DECREF(func_args); - - if (!self->statement) { - goto error; - } - - if (self->statement->in_use) { - Py_DECREF(self->statement); - self->statement = PyObject_New(pysqlite_Statement, &pysqlite_StatementType); - if (!self->statement) { - goto error; - } - rc = pysqlite_statement_create(self->statement, self->connection, operation); - if (rc != SQLITE_OK) { - self->statement = 0; - goto error; - } - } - - pysqlite_statement_reset(self->statement); - pysqlite_statement_mark_dirty(self->statement); - while (1) { parameters = PyIter_Next(parameters_iter); if (!parameters) { @@ -603,11 +597,6 @@ goto error; } - if (pysqlite_build_row_cast_map(self) != 0) { - PyErr_SetString(pysqlite_OperationalError, "Error while building row_cast_map"); - goto error; - } - /* Keep trying the SQL statement until the schema stops changing. */ while (1) { /* Actually execute the SQL statement. */ @@ -626,7 +615,8 @@ continue; } else { /* If the database gave us an error, promote it to Python. */ - _pysqlite_seterror(self->connection->db); + (void)pysqlite_statement_reset(self->statement); + _pysqlite_seterror(self->connection->db, NULL); goto error; } } else { @@ -638,17 +628,23 @@ PyErr_Clear(); } } - _pysqlite_seterror(self->connection->db); + (void)pysqlite_statement_reset(self->statement); + _pysqlite_seterror(self->connection->db, NULL); goto error; } } - if (rc == SQLITE_ROW || (rc == SQLITE_DONE && statement_type == STATEMENT_SELECT)) { - Py_BEGIN_ALLOW_THREADS - numcols = sqlite3_column_count(self->statement->st); - Py_END_ALLOW_THREADS + if (pysqlite_build_row_cast_map(self) != 0) { + PyErr_SetString(pysqlite_OperationalError, "Error while building row_cast_map"); + goto error; + } + if (rc == SQLITE_ROW || (rc == SQLITE_DONE && statement_type == STATEMENT_SELECT)) { if (self->description == Py_None) { + Py_BEGIN_ALLOW_THREADS + numcols = sqlite3_column_count(self->statement->st); + Py_END_ALLOW_THREADS + Py_DECREF(self->description); self->description = PyTuple_New(numcols); if (!self->description) { @@ -689,15 +685,11 @@ case STATEMENT_DELETE: case STATEMENT_INSERT: case STATEMENT_REPLACE: - Py_BEGIN_ALLOW_THREADS rowcount += (long)sqlite3_changes(self->connection->db); - Py_END_ALLOW_THREADS - Py_DECREF(self->rowcount); - self->rowcount = PyInt_FromLong(rowcount); } Py_DECREF(self->lastrowid); - if (statement_type == STATEMENT_INSERT) { + if (!multiple && statement_type == STATEMENT_INSERT) { Py_BEGIN_ALLOW_THREADS lastrowid = sqlite3_last_insert_rowid(self->connection->db); Py_END_ALLOW_THREADS @@ -714,14 +706,27 @@ } error: + /* just to be sure (implicit ROLLBACKs with ON CONFLICT ROLLBACK/OR + * ROLLBACK could have happened */ + #ifdef SQLITE_VERSION_NUMBER + #if SQLITE_VERSION_NUMBER >= 3002002 + self->connection->inTransaction = !sqlite3_get_autocommit(self->connection->db); + #endif + #endif + Py_XDECREF(operation_bytestr); Py_XDECREF(parameters); Py_XDECREF(parameters_iter); Py_XDECREF(parameters_list); if (PyErr_Occurred()) { + Py_DECREF(self->rowcount); + self->rowcount = PyInt_FromLong(-1L); return NULL; } else { + Py_DECREF(self->rowcount); + self->rowcount = PyInt_FromLong(rowcount); + Py_INCREF(self); return (PyObject*)self; } @@ -748,7 +753,7 @@ int statement_completed = 0; if (!PyArg_ParseTuple(args, "O", &script_obj)) { - return NULL; + return NULL; } if (!pysqlite_check_thread(self->connection) || !pysqlite_check_connection(self->connection)) { @@ -788,7 +793,7 @@ &statement, &script_cstr); if (rc != SQLITE_OK) { - _pysqlite_seterror(self->connection->db); + _pysqlite_seterror(self->connection->db, NULL); goto error; } @@ -796,17 +801,18 @@ rc = SQLITE_ROW; while (rc == SQLITE_ROW) { rc = _sqlite_step_with_busyhandler(statement, self->connection); + /* TODO: we probably need more error handling here */ } if (rc != SQLITE_DONE) { (void)sqlite3_finalize(statement); - _pysqlite_seterror(self->connection->db); + _pysqlite_seterror(self->connection->db, NULL); goto error; } rc = sqlite3_finalize(statement); if (rc != SQLITE_OK) { - _pysqlite_seterror(self->connection->db); + _pysqlite_seterror(self->connection->db, NULL); goto error; } } @@ -864,8 +870,9 @@ if (self->statement) { rc = _sqlite_step_with_busyhandler(self->statement->st, self->connection); if (rc != SQLITE_DONE && rc != SQLITE_ROW) { + (void)pysqlite_statement_reset(self->statement); Py_DECREF(next_row); - _pysqlite_seterror(self->connection->db); + _pysqlite_seterror(self->connection->db, NULL); return NULL; } @@ -890,15 +897,17 @@ return row; } -PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args) +PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args, PyObject* kwargs) { + static char *kwlist[] = {"size", NULL, NULL}; + PyObject* row; PyObject* list; int maxrows = self->arraysize; int counter = 0; - if (!PyArg_ParseTuple(args, "|i", &maxrows)) { - return NULL; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:fetchmany", kwlist, &maxrows)) { + return NULL; } list = PyList_New(0); @@ -992,7 +1001,7 @@ PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")}, {"fetchone", (PyCFunction)pysqlite_cursor_fetchone, METH_NOARGS, PyDoc_STR("Fetches one row from the resultset.")}, - {"fetchmany", (PyCFunction)pysqlite_cursor_fetchmany, METH_VARARGS, + {"fetchmany", (PyCFunction)pysqlite_cursor_fetchmany, METH_VARARGS|METH_KEYWORDS, PyDoc_STR("Fetches several rows from the resultset.")}, {"fetchall", (PyCFunction)pysqlite_cursor_fetchall, METH_NOARGS, PyDoc_STR("Fetches all rows from the resultset.")}, Modified: python/trunk/Modules/_sqlite/cursor.h ============================================================================== --- python/trunk/Modules/_sqlite/cursor.h (original) +++ python/trunk/Modules/_sqlite/cursor.h Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* cursor.h - definitions for the cursor type * - * Copyright (C) 2004-2006 Gerhard H?ring + * Copyright (C) 2004-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -60,7 +60,7 @@ PyObject* pysqlite_cursor_getiter(pysqlite_Cursor *self); PyObject* pysqlite_cursor_iternext(pysqlite_Cursor *self); PyObject* pysqlite_cursor_fetchone(pysqlite_Cursor* self, PyObject* args); -PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args); +PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args, PyObject* kwargs); PyObject* pysqlite_cursor_fetchall(pysqlite_Cursor* self, PyObject* args); PyObject* pysqlite_noop(pysqlite_Connection* self, PyObject* args); PyObject* pysqlite_cursor_close(pysqlite_Cursor* self, PyObject* args); Modified: python/trunk/Modules/_sqlite/microprotocols.h ============================================================================== --- python/trunk/Modules/_sqlite/microprotocols.h (original) +++ python/trunk/Modules/_sqlite/microprotocols.h Fri Feb 29 23:08:41 2008 @@ -28,10 +28,6 @@ #include -#ifdef __cplusplus -extern "C" { -#endif - /** adapters registry **/ extern PyObject *psyco_adapters; Modified: python/trunk/Modules/_sqlite/module.c ============================================================================== --- python/trunk/Modules/_sqlite/module.c (original) +++ python/trunk/Modules/_sqlite/module.c Fri Feb 29 23:08:41 2008 @@ -1,25 +1,25 @@ - /* module.c - the module itself - * - * Copyright (C) 2004-2006 Gerhard H?ring - * - * This file is part of pysqlite. - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ +/* module.c - the module itself + * + * Copyright (C) 2004-2007 Gerhard H?ring + * + * This file is part of pysqlite. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ #include "connection.h" #include "statement.h" @@ -41,6 +41,7 @@ PyObject* converters; int _enable_callback_tracebacks; +int pysqlite_BaseTypeAdapted; static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* kwargs) @@ -50,7 +51,7 @@ * connection.c and must always be copied from there ... */ static char *kwlist[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", NULL, NULL}; - char* database; + PyObject* database; int detect_types = 0; PyObject* isolation_level; PyObject* factory = NULL; @@ -60,7 +61,7 @@ PyObject* result; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|diOiOi", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOi", kwlist, &database, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements)) { return NULL; @@ -133,6 +134,13 @@ return NULL; } + /* a basic type is adapted; there's a performance optimization if that's not the case + * (99 % of all usages) */ + if (type == &PyInt_Type || type == &PyLong_Type || type == &PyFloat_Type + || type == &PyString_Type || type == &PyUnicode_Type || type == &PyBuffer_Type) { + pysqlite_BaseTypeAdapted = 1; + } + microprotocols_add(type, (PyObject*)&pysqlite_PrepareProtocolType, caster); Py_INCREF(Py_None); @@ -379,6 +387,8 @@ _enable_callback_tracebacks = 0; + pysqlite_BaseTypeAdapted = 0; + /* Original comment form _bsddb.c in the Python core. This is also still * needed nowadays for Python 2.3/2.4. * Modified: python/trunk/Modules/_sqlite/module.h ============================================================================== --- python/trunk/Modules/_sqlite/module.h (original) +++ python/trunk/Modules/_sqlite/module.h Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* module.h - definitions for the module * - * Copyright (C) 2004-2006 Gerhard H?ring + * Copyright (C) 2004-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -25,7 +25,7 @@ #define PYSQLITE_MODULE_H #include "Python.h" -#define PYSQLITE_VERSION "2.3.3" +#define PYSQLITE_VERSION "2.4.1" extern PyObject* pysqlite_Error; extern PyObject* pysqlite_Warning; @@ -51,6 +51,7 @@ extern PyObject* converters; extern int _enable_callback_tracebacks; +extern int pysqlite_BaseTypeAdapted; #define PARSE_DECLTYPES 1 #define PARSE_COLNAMES 2 Modified: python/trunk/Modules/_sqlite/statement.c ============================================================================== --- python/trunk/Modules/_sqlite/statement.c (original) +++ python/trunk/Modules/_sqlite/statement.c Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* statement.c - the statement type * - * Copyright (C) 2005-2006 Gerhard H?ring + * Copyright (C) 2005-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -40,6 +40,16 @@ NORMAL } parse_remaining_sql_state; +typedef enum { + TYPE_INT, + TYPE_LONG, + TYPE_FLOAT, + TYPE_STRING, + TYPE_UNICODE, + TYPE_BUFFER, + TYPE_UNKNOWN +} parameter_type; + int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql) { const char* tail; @@ -97,42 +107,96 @@ char* string; Py_ssize_t buflen; PyObject* stringval; + parameter_type paramtype; if (parameter == Py_None) { rc = sqlite3_bind_null(self->st, pos); + goto final; + } + + if (PyInt_CheckExact(parameter)) { + paramtype = TYPE_INT; + } else if (PyLong_CheckExact(parameter)) { + paramtype = TYPE_LONG; + } else if (PyFloat_CheckExact(parameter)) { + paramtype = TYPE_FLOAT; + } else if (PyString_CheckExact(parameter)) { + paramtype = TYPE_STRING; + } else if (PyUnicode_CheckExact(parameter)) { + paramtype = TYPE_UNICODE; + } else if (PyBuffer_Check(parameter)) { + paramtype = TYPE_BUFFER; } else if (PyInt_Check(parameter)) { - longval = PyInt_AsLong(parameter); - rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longval); -#ifdef HAVE_LONG_LONG + paramtype = TYPE_INT; } else if (PyLong_Check(parameter)) { - longlongval = PyLong_AsLongLong(parameter); - /* in the overflow error case, longlongval is -1, and an exception is set */ - rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longlongval); -#endif + paramtype = TYPE_LONG; } else if (PyFloat_Check(parameter)) { - rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter)); - } else if (PyBuffer_Check(parameter)) { - if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) { - rc = sqlite3_bind_blob(self->st, pos, buffer, buflen, SQLITE_TRANSIENT); - } else { - PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer"); - rc = -1; - } - } else if PyString_Check(parameter) { - string = PyString_AsString(parameter); - rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); - } else if PyUnicode_Check(parameter) { - stringval = PyUnicode_AsUTF8String(parameter); - string = PyString_AsString(stringval); - rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); - Py_DECREF(stringval); + paramtype = TYPE_FLOAT; + } else if (PyString_Check(parameter)) { + paramtype = TYPE_STRING; + } else if (PyUnicode_Check(parameter)) { + paramtype = TYPE_UNICODE; } else { - rc = -1; + paramtype = TYPE_UNKNOWN; } + switch (paramtype) { + case TYPE_INT: + longval = PyInt_AsLong(parameter); + rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longval); + break; +#ifdef HAVE_LONG_LONG + case TYPE_LONG: + longlongval = PyLong_AsLongLong(parameter); + /* in the overflow error case, longlongval is -1, and an exception is set */ + rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longlongval); + break; +#endif + case TYPE_FLOAT: + rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter)); + break; + case TYPE_STRING: + string = PyString_AS_STRING(parameter); + rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); + break; + case TYPE_UNICODE: + stringval = PyUnicode_AsUTF8String(parameter); + string = PyString_AsString(stringval); + rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); + Py_DECREF(stringval); + break; + case TYPE_BUFFER: + if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) { + rc = sqlite3_bind_blob(self->st, pos, buffer, buflen, SQLITE_TRANSIENT); + } else { + PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer"); + rc = -1; + } + break; + case TYPE_UNKNOWN: + rc = -1; + } + +final: return rc; } +/* returns 0 if the object is one of Python's internal ones that don't need to be adapted */ +static int _need_adapt(PyObject* obj) +{ + if (pysqlite_BaseTypeAdapted) { + return 1; + } + + if (PyInt_CheckExact(obj) || PyLong_CheckExact(obj) + || PyFloat_CheckExact(obj) || PyString_CheckExact(obj) + || PyUnicode_CheckExact(obj) || PyBuffer_Check(obj)) { + return 0; + } else { + return 1; + } +} + void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters) { PyObject* current_param; @@ -147,7 +211,55 @@ num_params_needed = sqlite3_bind_parameter_count(self->st); Py_END_ALLOW_THREADS - if (PyDict_Check(parameters)) { + if (PyTuple_CheckExact(parameters) || PyList_CheckExact(parameters) || (!PyDict_Check(parameters) && PySequence_Check(parameters))) { + /* parameters passed as sequence */ + if (PyTuple_CheckExact(parameters)) { + num_params = PyTuple_GET_SIZE(parameters); + } else if (PyList_CheckExact(parameters)) { + num_params = PyList_GET_SIZE(parameters); + } else { + num_params = PySequence_Size(parameters); + } + if (num_params != num_params_needed) { + PyErr_Format(pysqlite_ProgrammingError, "Incorrect number of bindings supplied. The current statement uses %d, and there are %d supplied.", + num_params_needed, num_params); + return; + } + for (i = 0; i < num_params; i++) { + if (PyTuple_CheckExact(parameters)) { + current_param = PyTuple_GET_ITEM(parameters, i); + Py_XINCREF(current_param); + } else if (PyList_CheckExact(parameters)) { + current_param = PyList_GET_ITEM(parameters, i); + Py_XINCREF(current_param); + } else { + current_param = PySequence_GetItem(parameters, i); + } + if (!current_param) { + return; + } + + if (!_need_adapt(current_param)) { + adapted = current_param; + } else { + adapted = microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL); + if (adapted) { + Py_DECREF(current_param); + } else { + PyErr_Clear(); + adapted = current_param; + } + } + + rc = pysqlite_statement_bind_parameter(self, i + 1, adapted); + Py_DECREF(adapted); + + if (rc != SQLITE_OK) { + PyErr_Format(pysqlite_InterfaceError, "Error binding parameter %d - probably unsupported type.", i); + return; + } + } + } else if (PyDict_Check(parameters)) { /* parameters passed as dictionary */ for (i = 1; i <= num_params_needed; i++) { Py_BEGIN_ALLOW_THREADS @@ -159,19 +271,27 @@ } binding_name++; /* skip first char (the colon) */ - current_param = PyDict_GetItemString(parameters, binding_name); + if (PyDict_CheckExact(parameters)) { + current_param = PyDict_GetItemString(parameters, binding_name); + Py_XINCREF(current_param); + } else { + current_param = PyMapping_GetItemString(parameters, (char*)binding_name); + } if (!current_param) { PyErr_Format(pysqlite_ProgrammingError, "You did not supply a value for binding %d.", i); return; } - Py_INCREF(current_param); - adapted = microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL); - if (adapted) { - Py_DECREF(current_param); - } else { - PyErr_Clear(); + if (!_need_adapt(current_param)) { adapted = current_param; + } else { + adapted = microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL); + if (adapted) { + Py_DECREF(current_param); + } else { + PyErr_Clear(); + adapted = current_param; + } } rc = pysqlite_statement_bind_parameter(self, i, adapted); @@ -183,35 +303,7 @@ } } } else { - /* parameters passed as sequence */ - num_params = PySequence_Length(parameters); - if (num_params != num_params_needed) { - PyErr_Format(pysqlite_ProgrammingError, "Incorrect number of bindings supplied. The current statement uses %d, and there are %d supplied.", - num_params_needed, num_params); - return; - } - for (i = 0; i < num_params; i++) { - current_param = PySequence_GetItem(parameters, i); - if (!current_param) { - return; - } - adapted = microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL); - - if (adapted) { - Py_DECREF(current_param); - } else { - PyErr_Clear(); - adapted = current_param; - } - - rc = pysqlite_statement_bind_parameter(self, i + 1, adapted); - Py_DECREF(adapted); - - if (rc != SQLITE_OK) { - PyErr_Format(pysqlite_InterfaceError, "Error binding parameter %d - probably unsupported type.", i); - return; - } - } + PyErr_SetString(PyExc_ValueError, "parameters are of unsupported type"); } } Modified: python/trunk/Modules/_sqlite/util.c ============================================================================== --- python/trunk/Modules/_sqlite/util.c (original) +++ python/trunk/Modules/_sqlite/util.c Fri Feb 29 23:08:41 2008 @@ -1,6 +1,6 @@ /* util.c - various utility functions * - * Copyright (C) 2005-2006 Gerhard H?ring + * Copyright (C) 2005-2007 Gerhard H?ring * * This file is part of pysqlite. * @@ -45,10 +45,15 @@ * Checks the SQLite error code and sets the appropriate DB-API exception. * Returns the error code (0 means no error occurred). */ -int _pysqlite_seterror(sqlite3* db) +int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st) { int errorcode; + /* SQLite often doesn't report anything useful, unless you reset the statement first */ + if (st != NULL) { + (void)sqlite3_reset(st); + } + errorcode = sqlite3_errcode(db); switch (errorcode) Modified: python/trunk/Modules/_sqlite/util.h ============================================================================== --- python/trunk/Modules/_sqlite/util.h (original) +++ python/trunk/Modules/_sqlite/util.h Fri Feb 29 23:08:41 2008 @@ -34,5 +34,5 @@ * Checks the SQLite error code and sets the appropriate DB-API exception. * Returns the error code (0 means no error occurred). */ -int _pysqlite_seterror(sqlite3* db); +int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st); #endif From buildbot at python.org Fri Feb 29 23:58:53 2008 From: buildbot at python.org (buildbot at python.org) Date: Fri, 29 Feb 2008 22:58:53 +0000 Subject: [Python-checkins] buildbot failure in x86 XP-3 trunk Message-ID: <20080229225853.E7F651E4009@bag.python.org> The Buildbot has detected a new failure of x86 XP-3 trunk. Full details are available at: http://www.python.org/dev/buildbot/all/x86%20XP-3%20trunk/builds/978 Buildbot URL: http://www.python.org/dev/buildbot/all/ Buildslave for this Build: heller-windows Build Reason: Build Source Stamp: [branch trunk] HEAD Blamelist: martin.v.loewis BUILD FAILED: failed test Excerpt from the test logfile: sincerely, -The Buildbot